【发布时间】:2012-07-14 18:09:22
【问题描述】:
据我所知var point = object.geometry.vertices[i]; 将返回对象几何内部点的x、y 和z 的相对位置。
如果对象被移动、旋转或缩放,如何获得绝对位置?
【问题讨论】:
标签: javascript webgl three.js
据我所知var point = object.geometry.vertices[i]; 将返回对象几何内部点的x、y 和z 的相对位置。
如果对象被移动、旋转或缩放,如何获得绝对位置?
【问题讨论】:
标签: javascript webgl three.js
首先确保对象的矩阵已经更新。
object.updateMatrixWorld();
渲染循环通常会为你调用这个。
然后,这样做:
var vector = object.geometry.vertices[i].clone();
vector.applyMatrix4( object.matrixWorld );
矢量现在将包含世界坐标中的位置。
您可能想阅读一些 CG 参考书。
图形和游戏开发的 3D 数学入门 / Fletcher Dunn 和 Ian Parberry 着
游戏和交互式应用程序的基本数学:程序员指南 James M. Van Verth 和 Lars M. Bishop
三个.js r69
【讨论】:
Three.js (v50+) 的最新版本在 the THREE.Object3D class 中提供了此功能。特别是,要获取名为vector 的本地THREE.Vector3 实例的世界坐标,请使用the localToWorld method:
object.localToWorld( vector );
同样,有a worldToLocal method 用于将世界坐标转换为局部坐标,从数学上讲稍微复杂一些。将世界vector 转换为对象局部坐标空间:
object.worldToLocal( vector );
【讨论】: