2015-11-06 145 views
2

我已经使用平面几何对象完成了一个地形。我设置了一个顶点的y坐标来打乱我的地形。然后我给我的场景添加了一个方向灯,并且看到没有“山丘”的阴影等。Three.js地形阴影

我还添加了一个球体,并注意到在这个地形上也没有阴影。

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)); 

Spotlight with terrain

所以问题是:

  • 我该怎么做,看起来像阳光这样的地形将不平面色彩,但取决于光的光? (将来它将成为真实城市的一部分)
  • 我应该怎么做才能看到地形上的物体阴影? (从小提琴例如:球体的影子)

感谢

回答

4

您正在修改你地形的顶点。当你这样做时,你还必须修改顶点法线。一种方法是这样的:

geometry.computeFaceNormals(); 
geometry.computeVertexNormals(); 

要创建阴影,您必须启用它们。

renderer.shadowMap.enabled = true; 

更新小提琴:http://jsfiddle.net/a7brv8b9/3/

three.js所r.73

+0

我爱你:))谢谢你这么多 –