我已经使用平面几何对象绘制了地形。我设置顶点的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));


Spotlight with terrain

所以问题是:


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


谢谢

最佳答案

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

geometry.computeVertexNormals();


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

renderer.shadowMap.enabled = true;


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

three.js r.92

关于three.js - Three.js地形阴影,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33566294/

10-13 09:39