我正试图在这个厨房里照亮房间http://bozoou.com/plocice3D/ 你可以注意到厨房元素上阴影的水平罢工。
我怀疑spotLight位于z轴的x,y和顶部的中间。 如果我沿着y轴移动光源只有1点(房间是500x300),我在整个楼层都有这样的阴影:http://bozoou.com/plocice3D/?moveLight=1 如果我将光线移动1或50,则会出现同样的问题。
所有元素都会投射和接收阴影。
答案 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