據我所知var point = object.geometry.vertices[i];
將返回對象幾何體內部點的x
,y
和z
的相對位置。如何在three.js中獲取頂點的絕對位置?
如何獲得絕對位置,如果對象被移動,旋轉或縮放?
據我所知var point = object.geometry.vertices[i];
將返回對象幾何體內部點的x
,y
和z
的相對位置。如何在three.js中獲取頂點的絕對位置?
如何獲得絕對位置,如果對象被移動,旋轉或縮放?
首先確保對象的矩陣已更新。
object.updateMatrixWorld();
渲染循環通常會爲您調用此函數。
然後,這樣做:
var vector = object.geometry.vertices[i].clone();
vector.applyMatrix4(object.matrixWorld);
矢量現在將包含位置世界座標。
您可能想閱讀一些CG參考書。
3D數學底漆圖形和遊戲開發/弗萊徹Dunn和伊恩·帕伯裏
基本數學遊戲和交互式應用程序:一個程序員指南 詹姆斯·M·範·Verth和Lars M.主教
three.js所R69
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);
...不要忘了運行object.updateMatrixWorld();在我嘗試之前,我一直在撓頭。 – arpo 2017-04-22 14:11:45
試過這樣做...仍然得到0,0,0 :( – 2017-05-03 18:32:03