据我所知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