ThreeJS相机面向点

时间:2015-07-01 21:45:02

标签: javascript algorithm math rotation three.js

在ThreeJS中,如果相机以任何给定的角度旋转,我如何确定该点在相机方向正好1个单位的坐标。

如果您不熟悉ThreeJS相机旋转角度,旋转非常奇怪。

例如,如果我的所有旋转变量都是0,那么该函数将返回(0,0,-1)。

如果旋转x是Pi / 2(90度),那么函数将返回(1,0,0)

我怎样才能创建一个函数来执行此操作?我不需要一切,主要是数学。

1 个答案:

答案 0 :(得分:2)

您希望获得相机前面一个单位的世界位置。

这样做的一种方法是在相机前面和相机中添加一个对象。然后你只需要查询对象的世界位置。

默认情况下,当相机的旋转为(0,0,0)时,相机会向下看其负z轴。所以这是要遵循的模式:

var object = new THREE.Object3D();
object.position.set( 0, 0, - 1 );

scene.add( camera ); // this is required when the camera has children
camera.add( object );

现在,你可以得到你需要的点:

var worldPos = new THREE.Vector3(); // create once and reuse it

...

camera.updateMatrixWorld(); // this is called in the render loop, so you may not have to call it again. Experiment.

worldPos.setFromMatrixPosition( object.matrixWorld );

three.js r.71