2016-02-26 119 views
2

我object3D有一個向上向量(0,1,0)。 object3D圍繞偏航,俯仰和滾動移動其原點。Three.js如何查找對象局部向量矢量的世界方向向量?

我的問題: 如何找到它顯示的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(); 

回答

3

你要得到一個對象的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