如何在旋转父对象内查找对象的场景位置

时间:2014-07-13 17:34:29

标签: three.js

在我的三个场景中,我有一个旋转的物体。子对象位于旋转对象内的(92,92,92)处,因此它围绕中心位置(0,0,0)是我的鼠标移动的球形路径。如何在旋转时找到子对象相对于场景的全局位置。我是THREE.js的新手,并且感谢任何支持。

我的代码:

      ObjectParent = new THREE.Object3D();
      scene.add( ObjectParent );

      ObjectChild = new THREE.Object3D();
      ObjectParent.add( ObjectChild );

      ObjectChild.position.set(92,92,92);

渲染:

     ObjectParent.rotation.y -= (target.y + ObjectParent.rotation.y) * 0.08;    
     ObjectParent.rotation.x += (target.x - ObjectParent.rotation.x) * 0.07;

     ObjectParent.updateMatrixWorld();
     scene.updateMatrixWorld();

1 个答案:

答案 0 :(得分:0)

首先,您通常不需要致电

ObjectParent.updateMatrixWorld();
scene.updateMatrixWorld();

在渲染循环中。渲染器会为您做到这一点。

要查找child对象的世界位置,您可以使用此模式:

var vector = new THREE.Vector3();
...
vector.setFromMatrixPosition( child.matrixWorld );

渲染器应该先为您更新场景矩阵。如果您自上次渲染后更改了父级的位置,则必须先调用

parent.updateMatrixWorld();

更新相关矩阵。

最好查看three.js源代码,以便了解这些函数的作用。

three.js r.67