Three.js如何找到对象的局部向上向量的世界方向向量?

时间:2016-02-26 01:41:32

标签: vector three.js rotation

我的object3D有一个向上矢量(0,1,0)。 object3D围绕偏航,俯仰和滚动移动其原点。

我的问题: 如何在世界坐标中找到显示object3D向上矢量方向的向量?

编码上下文的示例: -

var v1 = new THREE.Vector3();

v1.add( givenObject3D.up ); // now v1 = (0,1,0)

givenObject3D.updateMatrixWorld();

FunctionXXX (v1, givenObject3D.matrixWorld  ); 

//... now v1 is a vector in world coordinates 
//... v1 points in the same direction as the givenObject3D's up vector.

v1.normalize();

1 个答案:

答案 0 :(得分:4)

您想要获取对象的up向量的世界方向。为此,请将相同的旋转应用于应用于对象的up向量。

如果对象是场景的孩子,那么你可以这样做:

var v1 = new THREE.Vector3(); // create once and reuse it
...
v1.copy( object.up ).applyQuaternion( object.quaternion );

如果对象具有旋转的父对象,则需要使用此模式:

var v1 = new THREE.Vector3(); // create once and reuse it
var worldQuaternion = new THREE.Quaternion(); // create once and reuse it
...
object.getWorldQuaternion( worldQuaternion );
v1.copy( object.up ).applyQuaternion( worldQuaternion );

three.js r.74