[]关于平行光渲染投影问题,求解惑

我想通过在俯视视角下打侧面光实现阴影投射效果,就像附件里的效果图那样。但是在我设置好俯视角和光源位置后,测试并没有出现阴影,请问我是哪个地方没搞对?  在测试DEMO里,我创建了一个球体,一个方体,球体坐标在方体正上方,光源为侧面光,方体负责接受球体的投影,但在俯视视角下,方体上并没有出现阴影。DEMO和效果图已上传。
类似效果图.png
已邀请:

Aar0n

赞同来自: a503807636

// 程序入口
class LayaAir3D {
private _quaternion: Laya.Quaternion = new Laya.Quaternion();

constructor() {
//初始化引擎
Laya3D.init(0, 0, true);

//适配模式
Laya.stage.scaleMode = Laya.Stage.SCALE_FULL;
Laya.stage.screenMode = Laya.Stage.SCREEN_NONE;

let ape: Laya.Sprite = new Laya.Sprite();
Laya.stage.addChild(ape);
ape.loadImage("../laya/assets/fish_bg.png");

//开启统计信息
Laya.Stat.show();

//添加3D场景
let scene: Laya.Scene = Laya.stage.addChild(new Laya.Scene()) as Laya.Scene;

//添加照相机
let camera: Laya.Camera = (scene.addChild(new Laya.Camera(0, 0.1, 1000))) as Laya.Camera;
camera.orthographic = true;
camera.transform.translate(new Laya.Vector3(0, 4, 8),false);
camera.transform.lookAt(new Laya.Vector3(0,0,0),new Laya.Vector3(0,1,0));

//创建方向光
var light:Laya.DirectionLight = scene.addChild(new Laya.DirectionLight()) as Laya.DirectionLight;
//移动灯光位置
light.transform.translate(new Laya.Vector3(-5,10,-5));
//设置灯光方向
light.direction = new Laya.Vector3(1, -1, 1);
//添加灯光投影
light.shadow=true;
//产生投影的范围(如过小将不会产生投影)
light.shadowDistance=100;
//生成阴影贴图数量
light.shadowPSSMCount = 1;
//模糊等级,越大越高,效果更好,更耗性能
light.shadowPCFType=10;
//投影质量
light.shadowResolution=2048;

//创建盒子模型
let box:Laya.MeshSprite3D = scene.addChild(new Laya.MeshSprite3D(new Laya.BoxMesh(5,5,1.5))) as Laya.MeshSprite3D;
//接受阴影

box.meshRender.receiveShadow=true;
// 创建球体模型
let sphere:Laya.MeshSprite3D = scene.addChild(new Laya.MeshSprite3D(new Laya.SphereMesh(.5))) as Laya.MeshSprite3D;
//按父空间移动球体
sphere.transform.translate(new Laya.Vector3(0,1.5,0),false);
//产生阴影
sphere.meshRender.castShadow=true;
//创建材质
let material:Laya.StandardMaterial = new Laya.StandardMaterial();
//材质加载漫反射贴图
material.diffuseTexture = Laya.Texture2D.load("res/layabox.png");
//为模型赋材质(单个材质可赋给多个模型)
sphere.meshRender.material = material;
box.meshRender.material = material;


}
}
new LayaAir3D();

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作