【发布时间】:2016-10-29 09:19:35
【问题描述】:
假设我有一个摄像头放置在:
{
x: 10,
y: 30,
z: 20
}
它的旋转是:
{
x: 0.1,
y: 0.2,
z: 0.3
}
我想将相机从当前位置朝它所面对的方向移动 1 个单位。
如何计算相机的新位置?
我正在使用 ThreeJS。
【问题讨论】:
标签: javascript vector three.js
假设我有一个摄像头放置在:
{
x: 10,
y: 30,
z: 20
}
它的旋转是:
{
x: 0.1,
y: 0.2,
z: 0.3
}
我想将相机从当前位置朝它所面对的方向移动 1 个单位。
如何计算相机的新位置?
我正在使用 ThreeJS。
【问题讨论】:
标签: javascript vector three.js
THREE.Camera 类扩展了 THREE.Object3D 类。
可以通过the getWorldDirection method from the base class获取相机方向:
它返回一个向量,表示相机在世界空间中的观察方向。
当你有这个direction 向量时,你可以使用它来将相机移动到所需的方向:
var direction = new THREE.Vector3();
camera.getWorldDirection( direction );
要在那个方向上只移动 1,你可以简单地做:
camera.position.add( direction );
如果您想移动更多,例如可以使用 the multiplyScalar method from the THREE.Vector3 class 并乘以所需的距离。
distance = 10;
camera.position.add( direction.multiplyScalar(distance) );
【讨论】:
相机向下看它的局部负 z 轴。因此,要将相机朝它所面对的方向移动,请使用以下方法:
camera.translateZ( - distance );
这是最有效的方法。
three.js r.78
【讨论】: