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.
您可以使用类中的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)
相机向下看其局部负 z 轴。因此,要将相机朝其面向的方向移动,请使用以下方法:
camera.translateZ( - distance );
Run Code Online (Sandbox Code Playgroud)
这是最有效的方法。
三.js r.78