gpt4 book ai didi

javascript - ThreeJS 中阴影的奇怪行为

转载 作者:行者123 更新时间:2023-12-03 07:56:24 31 4
gpt4 key购买 nike

所以我有一个 ThreeJS 场景,并且添加了一些球体(多 Material )。我还添加了定向光:

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;

因此,当用户添加或删除球体时,执行“重组”阴影相机平截头体的函数如下所示: enter image description here

    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();

上述代码的可能结果是这样的:

上述具体情况的另一个方面: enter image description here

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

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

我使用三.js r72,谢谢!

最佳答案

根据您的评论,您看到的是自阴影伪影。

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

改变阴影偏差会导致“peter-panning”(过多的正偏差)和自阴影伪像(过多的负偏差)之间的权衡。

三.js r.73

关于javascript - ThreeJS 中阴影的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34778864/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com