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

Dan*_*Fox 11 javascript webgl three.js

据我所知,var point = object.geometry.vertices[i];将在相对位置回归x,y以及z物体的几何内点.

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

Wes*_*ley 39

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

object.updateMatrixWorld();
Run Code Online (Sandbox Code Playgroud)

渲染循环通常会为您调用此方法.

然后,这样做:

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

vector.applyMatrix4( object.matrixWorld );
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

three.js r69


Lee*_*ski 23

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

object.localToWorld( vector );
Run Code Online (Sandbox Code Playgroud)

类似地,存在一种用于将世界坐标转换为局部坐标worldToLocal方法,从数学上讲,这稍微复杂一些.要将世界vector转换为对象局部坐标空间:

object.worldToLocal( vector );
Run Code Online (Sandbox Code Playgroud)