如何在场景中添加适当的光线?

时间:2012-07-31 08:34:03

标签: model three.js light collada

在我的项目中,我添加了几个模型和其他几何对象,我可以移动相机在场景中进行扫描,但是当我添加如下所示的灯光时,模型没有显示原样。我应该如何添加适当的灯光以适应场景中的模型。

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

1 个答案:

答案 0 :(得分:1)

这将是一些非常黑暗的环境光。我会推荐一个更高的值,更接近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