2015-11-06 209 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

我愛你:))謝謝你這麼多 –