在我的项目中,我添加了几个模型和其他几何对象,我可以移动相机在场景中扫描,但当我添加灯光时,如下图所示,模型没有显示出来。我应该如何添加适当的灯光来很好地适应场景中的模型。
var ambientLight = new THREE.AmbientLight(0x222222);
scene.add(ambientLight);
// add directional light source
var directionalLight = new THREE.DirectionalLight(0xffffff,2);
directionalLight.position.set(1, 1, 1).normalize();
scene.add(directionalLight);
var directionalLight1 = new THREE.DirectionalLight(0xffffff);
directionalLight1.position.set(-1, -1, -1).normalize();
scene.add(directionalLight1);发布于 2012-08-06 03:41:53
这将是一些相当暗的环境光。我会推荐一个更高的值,接近0x555555或更大。此外,您将平行光添加到场景中,但将平行光的位置设置得非常接近场景的原点。
您可以看到,directionalLight.position是一个THREE.Vector3对象,您正在调用向量对象的.set()方法,然后简单地标准化结果。你的物体比一个单位大吗?它是在原点吗?如果是这样的话,我打赌你的平行光在你的物体里面。如果只使用环境光,3D模型看起来不会很好。相反,我建议您这样做:
var originVector = new THREE.Vector3(0,0,0);
var ambLight = new THREE.AmbientLight(0x555555);
scene.add(ambLight);
var dirLight = new THREE.DirectionalLight(0xFFFFFF);
dirLight.position.x = -200;
dirLight.position.y = 200;
dirLight.position.z = 150;
dirLight.lookAt(originVector);
scene.add(dirLight);如果你需要阴影,我建议你参考这个问题,我之前已经回答过关于Enabling Shadows in Three.JS的问题。这是我不久前制作的一个演示,它应该会向您显示上述照明代码的结果:Lighting Cube Acceleration Demo。
https://stackoverflow.com/questions/11736121
复制相似问题