Javascript 将相机向其所在方向移动';正对着,三个J

Javascript 将相机向其所在方向移动';正对着,三个J,javascript,vector,three.js,Javascript,Vector,Three.js,假设我在以下位置放置了一个摄像头: { x: 10, y: 30, z: 20 } 它的旋转是: { x: 0.1, y: 0.2, z: 0.3 } 我想将相机1单元从其当前位置朝其所面对的方向移动 如何计算摄像机的新位置 我使用的是ThreeJS。THREE.Camera类扩展了THREE.Object3D类。 您可以通过以下方式获取相机方向: 它返回一个矢量,表示摄影机在世界空间中的观察方向 当您有此方向矢量时,您可以使用它在所需方向上移动相机: var dir

假设我在以下位置放置了一个摄像头:

{
  x: 10,
  y: 30,
  z: 20
}
它的旋转是:

{
  x: 0.1,
  y: 0.2,
  z: 0.3
}
我想将相机1单元从其当前位置朝其所面对的方向移动

如何计算摄像机的新位置


我使用的是ThreeJS。

THREE.Camera类扩展了
THREE.Object3D
类。 您可以通过以下方式获取相机方向:

它返回一个矢量,表示摄影机在世界空间中的观察方向

当您有此
方向
矢量时,您可以使用它在所需方向上移动相机:

var direction = new THREE.Vector3();
camera.getWorldDirection( direction );
要仅向该方向移动1,只需执行以下操作:

camera.position.add( direction );
例如,如果您想移动更多,可以使用并乘以所需距离

distance = 10;
camera.position.add( direction.multiplyScalar(distance) );

相机向下看其局部负z轴。因此,要沿摄影机所面对的方向移动摄影机,请使用以下方法:

camera.translateZ( - distance );
这是最有效的方法


three.js r.78

three现在抱怨“.getWorldDirection()目标现在是必需的”,因此您可以向其传递一个矢量3,然后`direction=camera.getWorldDirection(vector);”将结果返回到“方向”,并将其放入新向量中。WestLangely撰写了这一变化的原因,他在下面给出了有效的答案:@kellycode感谢您的评论。我更新了答案,因此它可以使用最新的three.js版本。我还更新了断开的链接。