12

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

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

4

2 回答 2

43

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

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

三.js r69

于 2012-07-15T21:07:11.393 回答
24

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

object.localToWorld( vector );

类似地,还有一种将世界坐标转换为局部坐标的worldToLocal方法,在数学上稍微复杂一些。要将世界vector转换为对象的局部坐标空间:

object.worldToLocal( vector );
于 2012-12-20T21:45:37.663 回答