在ThreeJS中,如果相机以任何给定的角度旋转,我如何确定该点在相机方向正好1个单位的坐标。
如果您不熟悉ThreeJS相机旋转角度,旋转非常奇怪。
例如,如果我的所有旋转变量都是0,那么该函数将返回(0,0,-1)。
如果旋转x是Pi / 2(90度),那么函数将返回(1,0,0)
我怎样才能创建一个函数来执行此操作?我不需要一切,主要是数学。
答案 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