使用ThreeJS将摄像机朝向其朝向的方向移动

arp*_*rpo 1 javascript vector three.js

说我有一个摄像头放在:

{
  x: 10,
  y: 30,
  z: 20
}
Run Code Online (Sandbox Code Playgroud)

它的轮换是:

{
  x: 0.1,
  y: 0.2,
  z: 0.3
}
Run Code Online (Sandbox Code Playgroud)

我想将相机1个单元从它面向的方向移动到当前位置.

如何计算相机的新位置?

我正在使用ThreeJS.

Wil*_*ilt 7

您可以使用类中getWorldDirection方法THREE.Camera获取摄像机方向:

它返回一个向量,表示相机在世界空间中的方向.

当你有这个direction矢量时,你可以用它来向所需的方向移动相机:

var direction = new THREE.Vector3();
camera.getWorldDirection( direction );
Run Code Online (Sandbox Code Playgroud)

要在这个方向上只移动1,你可以简单地做:

camera.position.add( direction );
Run Code Online (Sandbox Code Playgroud)

如果你想移动更多,你可以使用例如类中multiplyScalar方法THREE.Vector3并乘以所需的距离.

distance = 10;
camera.position.add( direction.multiplyScalar(distance) );
Run Code Online (Sandbox Code Playgroud)


Wes*_*ley 5

相机向下看其局部负 z 轴。因此,要将相机朝其面向的方向移动,请使用以下方法:

camera.translateZ( - distance );
Run Code Online (Sandbox Code Playgroud)

这是最有效的方法。

三.js r.78