[LayaAirIDE 2.0]laya阴影问题

设置阴影的问题,新建两个Box,一张作为底板接收阴影的对象A,厚度为0.0001,一张作为产生阴影的对象B,厚度为0.05。
第一种情况:B完全显示在A的上方一定距离,此时底板上的阴影正常。
第二种情况:B有一部分在A的下方未显示,只显示底板上方的一部分,此时A产生的阴影会有问题,A在底板下方不可见的部分产生的阴影也显示在了底板上,具体显示如图片。
代码如下:
var light = this.MainScene3D.getChildByName("DirectionalLight") as Laya.DirectionLight;
light.color = new Laya.Vector3(1, 1, 1);
light.shadow = true;
light.shadowDistance = 1;
light.shadowPCFType = 3;
light.shadowResolution = 1024;
light.shadowPSSMCount = 1;
for (let index = 0; index < 2; index++) {
var a = 0.05;
var b = 0.2;
var c = 0.03;
var pos = new Laya.Vector3(0,0.08,0.05);// new Laya.Vector3(0,0,0.05);
if(index == 0){
a = 0.0001;
b = 0.4
c = 0.2;
pos = new Laya.Vector3(0,0,0);
}
// 创建Box对象
var cardOne = new Laya.MeshSprite3D(Laya.PrimitiveMesh.createBox(b, a, c));
var boxCollider: Laya.PhysicsCollider = cardOne.getComponent(Laya.PhysicsCollider);
if(!boxCollider){
boxCollider = cardOne.addComponent(Laya.PhysicsCollider) as Laya.PhysicsCollider;
boxCollider.colliderShape = new Laya.BoxColliderShape(b, 0, c);
}
this.MainScene3D.addChild(cardOne);
cardOne.transform.position = pos;
cardOne.transform.rotate(new Laya.Vector3(0,0,0), false, false);
if(index == 0){
cardOne.meshRenderer.receiveShadow = true;
}else{
var unlitMat = new Laya.PBRStandardMaterial();
var texture: Laya.Texture2D = Laya.loader.getRes("Reference/cardtest.png");
unlitMat.albedoTexture = texture;
cardOne.meshRenderer.material = unlitMat;
cardOne.meshRenderer.castShadow = true;
}
}真心求教大佬,怎么才能让在底板下面的部分产生的阴影不显示在底板上。
附件为新建空白3D工程
1577101766(1).jpg 1577101858(1).jpg
已邀请:

龙某人

赞同来自:

我有新建了一个空白的3D场景,同样的操作必定会出现相同的阴影情况,此时产生阴影的对象已经完全在接收阴影的对象的下方不可见了

Aar0n

赞同来自:

https://ask.layabox.com/question/44570  参照这个,不要弄这种穿模的阴影

qzzz

赞同来自:

你能解决这个阴影锯齿的问题吗,如果是这种程度的锯齿还不如不用阴影

要回复问题请先

商务合作
商务合作