我使用了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) );
Directional light with sphere above the terrain
但是当我用聚光灯取代定向光时,我看到了我想要拥有的地形上的阴影。
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));
所以问题是:
由于
答案 0 :(得分:5)
您正在修改地形的顶点。执行此操作时,还必须修改顶点法线。一种方法是这样:
geometry.computeVertexNormals();
要创建阴影,您必须启用它们。
renderer.shadowMap.enabled = true;
更新了小提琴:http://jsfiddle.net/a7brv8b9/3/
three.js r.92