如何在three.js中获取顶点的绝对位置?

时间:2012-07-15 19:49:51

标签: javascript webgl three.js

据我所知var point = object.geometry.vertices[i];将返回对象几何内部的xyz的相对位置。

如果物体被移动,旋转或缩放,如何获得绝对位置?

2 个答案:

答案 0 :(得分:36)

首先确保对象的矩阵已更新。

object.updateMatrixWorld();

渲染循环通常会为您调用。

然后,执行此操作:

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

vector.applyMatrix4( object.matrixWorld );

矢量现在将包含世界坐标中的位置。

您可能想阅读一些CG参考书。

  1. 图形和游戏开发的3D数学入门/ Fletcher Dunn和Ian Parberry

  2. 游戏和互动应用的基本数学:程序员指南 James M. Van Verth和Lars M. Bishop

  3. three.js r69

答案 1 :(得分:22)

最新版本的Three.js(v50 +)提供了the THREE.Object3D class内置的此功能。特别是,要获取名为THREE.Vector3的本地vector实例的世界坐标,请使用the localToWorld method

object.localToWorld( vector );

类似地,有a worldToLocal method用于将世界坐标转换为局部坐标,从数学上讲,这稍微复杂一些。要将世界vector转换为对象本地坐标空间:

object.worldToLocal( vector );