ThreeJS奇怪的条纹阴影

时间:2015-03-25 10:45:12

标签: javascript three.js shadow

我正试图在这个厨房里照亮房间http://bozoou.com/plocice3D/ 你可以注意到厨房元素上阴影的水平罢工。

我怀疑spotLight位于z轴的x,y和顶部的中间。 如果我沿着y轴移动光源只有1点(房间是500x300),我在整个楼层都有这样的阴影:http://bozoou.com/plocice3D/?moveLight=1 如果我将光线移动1或50,则会出现同样的问题。

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

2 个答案:

答案 0 :(得分:1)

这个问题通常是由于近点的阴影太靠近你的对象造成的。 为了更好地理解,请尝试执行以下操作: 在您创建灯光后,您可以添加一个相机助手来向您显示灯光的结构。

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越多,阴影就越模糊和眩晕。

您可以随时查看此示例中的threejs threejs example

答案 1 :(得分:0)

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

shadow.bias = 0.0001