2012-07-15 105 views

回答

33

首先確保對象的矩陣已更新。

object.updateMatrixWorld(); 

渲染循環通常會爲您調用此函數。

然後,這樣做:

var vector = object.geometry.vertices[i].clone(); 

vector.applyMatrix4(object.matrixWorld); 

矢量現在將包含位置世界座標。

您可能想閱讀一些CG參考書。

  1. 3D數學底漆圖形和遊戲開發/弗萊徹Dunn和伊恩·帕伯裏

  2. 基本數學遊戲和交互式應用程序:一個程序員指南 詹姆斯·M·範·Verth和Lars M.主教

three.js所R69

21

three.js所(V50 +)的最近版本提供此功能BUI lt到the THREE.Object3D class。特別是,要獲得名爲vector本地THREE.Vector3實例的世界座標,使用the localToWorld method

object.localToWorld(vector); 

同樣,也a worldToLocal method轉換世界座標爲局部座標,這是稍微複雜一些,從數學上講。要翻譯世界vector到物體局部座標空間:

object.worldToLocal(vector); 
+0

...不要忘了運行object.updateMatrixWorld();在我嘗試之前,我一直在撓頭。 – arpo 2017-04-22 14:11:45

+0

試過這樣做...仍然得到0,0,0 :( – 2017-05-03 18:32:03