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

ste*_*eOw 4 vector rotation three.js

我的 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();
Run Code Online (Sandbox Code Playgroud)

Wes*_*ley 6

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

如果对象直接是场景的子对象,那么您可以这样做:

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

如果对象有一个旋转的父对象,那么你需要使用这个模式:

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 );
Run Code Online (Sandbox Code Playgroud)

三.js r.74