将SpotLight指向与摄像头three.js(手电筒)相同的方向

Pav*_*ton 8 javascript camera three.js

我真的很喜欢这个东西.我想制作一个简单的3D场景,我可以用PointerLockControls飞来飞去,但我也想要一些手电筒.因此,聚光灯应指向与相机相同的方向.

我已经成为人们关注相机的焦点,但它的目标必然是0,0,0.

实现这一目标的最佳方法是什么?

谢谢.

Wes*_*ley 12

SpotLight目标是一个Object3D,而不是一个Vector3.

spotlight.target = myObject;
Run Code Online (Sandbox Code Playgroud)

在您的情况下,最好的解决方案是使用PointLight替代,并使用此模式:

scene.add( camera );
camera.add( pointLight );
Run Code Online (Sandbox Code Playgroud)

如果您仍想使用聚光灯,请执行以下操作:

scene.add( camera );
camera.add( spotLight.target );
spotLight.target.position.set( 0, 0, -1 );
spotLight.position.copy( camera.position ); // and reset spotlight position if camera moves
Run Code Online (Sandbox Code Playgroud)

通常不需要将摄像机添加为场景的孩子,但是在这种情况下需要将摄像机作为孩子添加.

three.js r.69


Tim*_*Tim 11

我有同样的问题,我解决如下:

flashlight = new THREE.SpotLight(0xffffff,4,40);
camera.add(flashlight);
flashlight.position.set(0,0,1);
flashlight.target = camera;
Run Code Online (Sandbox Code Playgroud)

由于Spotlight的.TARGET需要有一个对象(而不是位置),我发现它精神更容易简单地直接将手电筒背后的摄像头,然后瞄准它相机.因此,光线照在相机上,照亮前方的东西.

如果您使用手电筒效果,手电筒靠近胸部(身体的中央)而不是一侧关闭,这种方法很好.