在THREE.js中设置平行光的目标

在THREE.js中设置平行光的目标,three.js,directional-light,Three.js,Directional Light,我有一个远离原点的模型,我想要一个平行光照到模型上,就像阳光照到模型上一样 我为方向光设置了位置和目标: export const dirLight = getDirectional(); function getDirectional() { const dirLight = new DirectionalLight( 0xffffff, 1 ); dirLight.position.set( 585000 + 10000, 6135000 + 10000, -500 +

我有一个远离原点的模型,我想要一个平行光照到模型上,就像阳光照到模型上一样

我为方向光设置了位置和目标:

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 );
我希望现在的灯光方向与灯光位置和灯光目标之间的矢量平行,但显然灯光方向仍然朝向场景的原点。我做错了什么


可以看到一个正在运行的示例,文档说明需要将目标添加到场景中,以便计算世界坐标。然而,这似乎不起作用

因此,我尝试手动更新世界坐标,结果成功了。这可能只适用于静态目标

在你的情况下,这会增加

dirLight.target.updateMatrixWorld();
谢谢你,马丁 我试过了,但没能使它正常工作。 最近我再次尝试解决这个问题,现在使用解决方案