我的场景中有一个对象,想要获得表示它面向的方向的归一化向量。在 Unity 中,等价物是 transform.forward。如何在 THREE.js 中访问它?

最佳答案

以下是如何确定对象面向或“看”的方向向量:

默认情况下,对象被认为是在查找其内部正 z 轴,因此创建一个指向正 z 轴方向的向量:

var vector = new THREE.Vector3( 0, 0, 1 );

现在,对应用于对象的向量应用相同的旋转:
vector.applyQuaternion( object.quaternion );

生成的向量将指向对象面向的方向——只要对象没有变换的父对象。

如果对象有一个应用了变换的父对象,那么您需要计算对象的“世界四元数”,而不是使用 object.quaternion ,然后使用它。你这样做:
var position = new THREE.Vector3();
var scale = new THREE.Vector3();
var quaternion = new THREE.Quaternion();
var vector = new THREE.Vector3( 0, 0, 1 );

. . .

object.updateMatrixWorld(); // the renderer does this for you each render loop, so you may not have to

object.matrixWorld.decompose( position, quaternion, scale );

vector.applyQuaternion( quaternion );

如果“对象”是相机,请参阅此答案: three.js set and read camera look vector

三.js r.68

关于rotation - 如何获得 object3D 面向的方向的归一化向量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25224153/

10-12 05:07