如何获得object3D面向的方向的规范化向量?

时间:2014-08-09 23:40:04

标签: rotation three.js quaternions

我的场景中有一个对象,想要获得表示它所面向方向的规范化向量。在Unity中,等价物是transform.forward。我怎样才能在THREE.js中访问它?

1 个答案:

答案 0 :(得分:6)

以下是如何确定物体面向或“观察”的方向向量:

默认情况下,对象被视为正在查找其内部正z轴,因此创建一个指向正z轴方向的向量:

var vector = new THREE.Vector3( 0, 0, 1 );

现在,将相同的旋转应用于应用于对象的矢量:

vector.applyQuaternion( object.quaternion );

只要对象没有转换的父对象,结果向量将指向对象所面向的方向 -

如果对象具有应用了变换的父对象,则需要计算对象的“世界四元数”,而不是使用object.quaternion,而是使用它。你是这样做的:

var position = new THREE.Vector3();
var scale = new THREE.Vector3();
var quaternion = new THREE.Quaternion();
var vector = new THREE.Vector3( 0, 0, 1 );

. . .

object.updateMatrixWorld(); // the renderer does this for you each render loop, so you may not have to

object.matrixWorld.decompose( position, quaternion, scale );

vector.applyQuaternion( quaternion );

如果“对象”是相机,请参阅此答案:three.js set and read camera look vector

three.js r.68