ThreeJS怪异条纹阴影

ThreeJS weird stripes shadow

本文关键字:阴影 ThreeJS      更新时间:2023-09-26

我正在努力让厨房里的房间明亮起来http://bozoou.com/plocice3D/你可以注意到厨房元素上阴影的水平方向。

我怀疑spotLight在x、y和z轴的中间。如果我沿着y轴只移动光源一点(房间是500x300),我会在整个地板上看到这样的阴影:http://bozoou.com/plocice3D/?moveLight=1如果我移动灯光1或50,也会出现同样的问题。

所有元素投射和接收阴影。

这个问题通常是由阴影近点离对象太近引起的。为了更好地理解,请尝试执行以下操作:创建灯光后,可以添加摄影机辅助对象来显示灯光的边界。

var spotLight = new THREE.SpotLight(0xffffff, 0.3, 0, Math.PI / 2);
spotLight.position.set(0, 100, 0);
sunLight.castShadow = true;
var shadowCameraHelper = new THREE.CameraHelper(spotLight.shadow.camera);
shadowCameraHelper.visible = true;

不断改变这两个价值观,直到达到目标。

spotLight.shadow.camera.near = 50;
spotLight.shadow.camera.far = 150;

请记住,您设置的spotLight.shadow.camera.far越多,阴影就越模糊。

你可以在这个例子中查看threejsthreejs示例

您可以将阴影偏移调整为较小的值,有时会缓解这些问题。

shadow.bias = 0.0001