3

我的模型远离原点,我想要一个定向光像阳光一样照射模型。

我为 DirectionalLight 设置了位置和目标:

export const dirLight = getDirectional(); 
function getDirectional()  {
    const dirLight = new DirectionalLight( 0xffffff, 1 );
    dirLight.position.set( 585000 + 10000, 6135000 + 10000, -500 + 5000);

    return dirLight;
};


const helper = new THREE.DirectionalLightHelper( dirLight, 1000 );
let t = new THREE.Object3D();
t.translateX(585000);
t.translateY(6135000);
t.translateZ(1000);
dirLight.target = t;
scene.add(dirLight);
scene.add(dirLight.target);
scene.add(t);
helper.update();
scene.add( helper );

我希望现在的光方向平行于光位置和光目标之间的矢量,但显然光方向仍然朝向场景的原点。我究竟做错了什么 ?

可以在这里看到一个运行示例

4

2 回答 2

0

谢谢马丁我试过了,但不能让它正常工作。最近我再次尝试解决这个问题,现在使用这个解决方案。

于 2020-10-02T09:48:31.410 回答
0

文档指出需要将目标添加到场景中,以便计算世界坐标。但是,这似乎不起作用。

因此,我尝试手动更新世界坐标,这很有效。可能这只适用于静态目标。

在您的情况下,这将添加

dirLight.target.updateMatrixWorld();
于 2020-10-01T08:47:42.020 回答