2014-07-13 83 views
0

在我的三個場景中,我有一個旋轉的對象。子對象位於旋轉對象內的(92,92,92)處,因此它圍繞中心位置(0,0,0)的軌跡是鼠標移動的球形路徑。我如何在旋轉時找到子對象相對於場景的全局位置。我對THREE.js相當陌生,並感謝提前提供任何支持。如何在旋轉的父對象內找到對象的場景位置

我的代碼:

 ObjectParent = new THREE.Object3D(); 
     scene.add(ObjectParent); 

     ObjectChild = new THREE.Object3D(); 
     ObjectParent.add(ObjectChild); 

     ObjectChild.position.set(92,92,92); 

渲染:

所有的
 ObjectParent.rotation.y -= (target.y + ObjectParent.rotation.y) * 0.08;  
    ObjectParent.rotation.x += (target.x - ObjectParent.rotation.x) * 0.07; 

    ObjectParent.updateMatrixWorld(); 
    scene.updateMatrixWorld(); 

回答

0

首先,你通常不需要調用

ObjectParent.updateMatrixWorld(); 
scene.updateMatrixWorld(); 

渲染循環中。渲染器將​​爲您做到這一點。

要找到child對象的世界上的地位,你可以用這個模式:

var vector = new THREE.Vector3(); 
... 
vector.setFromMatrixPosition(child.matrixWorld); 

應將渲染以前更新過的情景矩陣爲您服務。如果您在上次渲染後更改了父母的職位,則必須先致電

parent.updateMatrixWorld(); 

更新相關矩陣。

查看three.js源代碼是一個好主意,這樣你就可以理解這些函數的作用了。

three.js所r.67

+0

我完全理解關係到孩子的世界地位,但不知道的一部分.updateMatrixWorld()和我的部分讀取源...當在年底你寫「 parent.updateMatrixWorld();」與ObjectParent的不同之處在於您的小寫父項不是場景的子項?我想了解更多有關更新矩陣,因爲我問自己是否有任何一種缺失的矩陣更新可以連接到我的問題:http://stackoverflow.com/questions/37970246/problems-in-finding-從球體內部的單位座標......非常感謝! – Antonino

相關問題