Javascript 平面几何体网格在threeJS r86中未接收阴影
我目前正在学习WebGL和ThreeJS(r86),在Javascript 平面几何体网格在threeJS r86中未接收阴影,javascript,three.js,Javascript,Three.js,我目前正在学习WebGL和ThreeJS(r86),在THREE.PlaneGeometrymesh对象上投射阴影时遇到困难。下面是与我的场景中的照明相关的代码片段 var light = new THREE.DirectionalLight(0xffffff); light.position.set(0,5,5); light.target.position.set(0,0,0); light.shadow.camera.near = 0.1;
THREE.PlaneGeometry
mesh对象上投射阴影时遇到困难。下面是与我的场景中的照明相关的代码片段
var light = new THREE.DirectionalLight(0xffffff);
light.position.set(0,5,5);
light.target.position.set(0,0,0);
light.shadow.camera.near = 0.1;
light.shadow.camera.far = 1000;
light.shadow.camera.left = -500;
light.shadow.camera.bottom = -500;
light.shadow.camera.right = 500;
light.shadow.camera.top = 500;
light.castShadow = true;
scene.add(light);
这里有一个例子来说明我的问题。我确保对场景中的所有对象都将
obj3D.receiveShadow
和obj3D.castShadow
设置为true,但THREE.PlaneGeometry
网格不会渲染任何阴影效果。非常感谢您的帮助。首先,您需要在渲染器上添加启用阴影贴图。在您的示例中,将阴影贴图属性指定为“true”,这是错误的
renderer.shadowMap.enabled = true;
用作地板的平面向后旋转,并且是双面材质。这不是很推荐,因为着色器将删除它,但计算可能会丢失或出现错误
替换这个
floor.rotation.x += Math.PI/2;
使用此选项可以在真实曲面上投影阴影
floor.rotation.x -= Math.PI/2;
用户阴影贴图大小为2的数字幂
light.shadow.mapSize.width = 2048;
light.shadow.mapSize.height = 2048;
阴影贴图的摄影机边界非常大。用小一点的
非常感谢。它正按照我的预期工作。我没有意识到飞机的后部与着色器有关。