我使用了planegeometry对象完成了一个地形.我设置了一个顶点的y坐标来碰撞我的地形.然后我在我的场景中添加了一个方向灯,看到没有"山丘"等阴影.
我还添加了一个球体,并注意到这个地形上也没有阴影.
var light = new THREE.DirectionalLight(0xffffff, 1);
light.castShadow = true;
light.shadowCameraVisible = true;
light.position.set(-300, 120, -200); // CHANGED
scene.add(light);
scene.add( new THREE.DirectionalLightHelper(light, 0.2) );
Run Code Online (Sandbox Code Playgroud)
但是当我用聚光灯取代定向光时,我看到了我想要拥有的地形上的阴影.
var slight = new THREE.SpotLight(0xffffff,1);
slight.position.set(-100,60,100);
slight.shadowCameraVisible = true;
scene.add(slight);
scene.add(new THREE.SpotLightHelper(slight, 0.5));
Run Code Online (Sandbox Code Playgroud)
所以问题是:
谢谢
您正在修改地形的顶点.执行此操作时,还必须修改顶点法线.一种方法是这样的:
geometry.computeVertexNormals();
Run Code Online (Sandbox Code Playgroud)
要创建阴影,您必须启用它们.
renderer.shadowMap.enabled = true;
Run Code Online (Sandbox Code Playgroud)
更新小提琴:http://jsfiddle.net/a7brv8b9/3/
three.js r.92