Javascript 将聚光灯指向与camera three.js(手电筒)相同的方向

Javascript 将聚光灯指向与camera three.js(手电筒)相同的方向,javascript,camera,three.js,Javascript,Camera,Three.js,我对这东西真的很陌生。我想制作一个简单的3D场景,在那里我可以用PointerLock控件四处飞行,但我也想要一些手电筒。所以聚光灯应该指向和相机相同的方向 我已使聚光灯跟随摄影机,但其目标绑定为0,0,0 实现这一目标的最佳方式是什么 谢谢。聚光灯的目标是一个Object3D,而不是Vector3 spotlight.target = myObject; 在您的情况下,最好的解决方案是使用点光源,并使用以下模式: scene.add( camera ); camera.add( pointL

我对这东西真的很陌生。我想制作一个简单的3D场景,在那里我可以用PointerLock控件四处飞行,但我也想要一些手电筒。所以聚光灯应该指向和相机相同的方向

我已使聚光灯跟随摄影机,但其目标绑定为0,0,0

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


谢谢。

聚光灯的目标是一个
Object3D
,而不是
Vector3

spotlight.target = myObject;
在您的情况下,最好的解决方案是使用
点光源
,并使用以下模式:

scene.add( camera );
camera.add( pointLight );
如果仍要使用聚光灯,请执行以下操作:

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
scene.add(camera);
camera.add(gun);
gun.position.set(-30,-30,0);
gun.add(spotlight);
spotlight.position.set(0,0,30);
gun.add(spotlight.target);
spotlight.target.position.set(0,0,31);
通常不需要将摄影机添加为场景的子对象,但在这种情况下需要这样做,因为灯光是作为摄影机的子对象添加的


three.js r.69

我遇到了同样的问题,我解决了如下问题:

flashlight = new THREE.SpotLight(0xffffff,4,40);
camera.add(flashlight);
flashlight.position.set(0,0,1);
flashlight.target = camera;
由于聚光灯的目标必须是一个物体(而不是一个位置),我发现在头脑中更容易将手电筒直接放在相机后面,然后对准相机。因此,光线穿过相机,照亮了它前面的东西


如果你想要一个手电筒效果,手电筒靠近胸部(身体中央),而不是一侧关闭,这种方法很好。

受上述WestLangley解决方案的启发,我发现spotlight.target和spotlight本身可以作为子对象添加到同一个对象,无论是相机还是其他对象,像一辆汽车或一把枪。然后,它们相对于父对象进行定位,因此无需将位置从一个对象复制到另一个对象

例如,您可以这样做:

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
scene.add(camera);
camera.add(gun);
gun.position.set(-30,-30,0);
gun.add(spotlight);
spotlight.position.set(0,0,30);
gun.add(spotlight.target);
spotlight.target.position.set(0,0,31);
现在,默认情况下,枪将跟随摄影机,聚光灯将沿着枪亮起。如果枪由于某种原因旋转(使子弹偏转或在地上爬行等),聚光灯也会旋转。三是一款不错的软件。:-)


如果将聚光灯附加到相机,并将其指向与相机相同的方向,并且不将其放置在远离中心的位置,则灯光圆锥体将始终呈圆形。对于许多应用程序来说,在投影中动态更改形状看起来更酷、更真实。只需要一个小的偏移量(比如我上面的例子,虽然我还没有测试过它)。

是的,但是点光源不会给我阴影。有没有办法让它们和点光源一起使用?没错,点光源不支持阴影。但是如果灯光位于相机所在的位置,你无论如何也看不到阴影,因为投射阴影的对象挡住了去路。好的,也许是个坏例子-任务:我希望场景中有两个单位,由node.js作为服务器同步,(多人游戏),我希望每个单位都有闪光灯,指向定义的方向。通过套接字发送此类信息的最佳方式是什么?(顺便问一下,接受按钮在哪里?:)你需要写一篇新文章,并包括适当的标签。这对我来说很有用,谢谢!我一直在寻找一些有效的代码。你知道聚光灯是否可以独立于摄像机进行交互吗?我在这里问了一个问题: