繁体   English   中英

ThreeJS中阴影的奇怪行为

[英]Strange behaviour of shadowing in ThreeJS

所以我有一个threeJS场景,并添加了一些球体(多材质)。 我还添加了定向灯:

this.light = new THREE.DirectionalLight( 0xFFFFFF, 1 );
this.light.position.set( 2, 10, 2 );  
this.light.castShadow = true;
this.light.shadowMapSoft = true;
this.light.shadowCameraVisible = true;
this.light.shadowCameraNear = 1;
this.light.shadowCameraFar = 10; 
this.light.shadowBias = 0.0009;
this.light.shadowDarkness = 0.3;
this.light.shadowMapWidth = 1024;
this.light.shadowMapHeight = 1024;
this.light.shadowCameraLeft = -8;
this.light.shadowCameraRight = 8;
this.light.shadowCameraTop = 8;
this.light.shadowCameraBottom = -8;

因此,当用户添加或删除球体时,执行“重塑”阴影摄像机视锥的函数如下所示: 在此处输入图片说明

    this.light.position.set( posV.x, posV.y, posV.z); 

    this.light.shadowCamera.far = l2*3;
    this.light.shadowCamera.left = -l2;
    this.light.shadowCamera.right = l2;
    this.light.shadowCamera.bottom = -l2;
    this.light.shadowCamera.top = l2;           
    this.light.shadowCamera.updateProjectionMatrix(); 

以上代码的可能结果是:

上述确切情况的另一方面: 在此处输入图片说明

我已经将相机的视锥浏览器可见性设置为打开,就可以了。 问题是无缘无故地生成阴影(由红色箭头指出)。 那时,场景中没有其他物体,并且球体完全位于相机视锥内部。

在更新球体(添加/删除)后,像这样的阴影问题很常见,有人对此有任何想法吗?

我使用three.js r72 ,谢谢!

根据您的评论,您看到的是自遮盖的工件。

您需要调整shadowBias (现在称为shadow.bias )参数。

改变阴影偏差会导致“ 平移 ”(太多正偏差)和自阴影伪影(太多负偏差)之间的权衡。

three.js r.73

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM