在我的三个场景中,我有一个旋转的物体。子对象位于旋转对象内的(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();
答案 0 :(得分:0)
首先,您通常不需要致电
ObjectParent.updateMatrixWorld();
scene.updateMatrixWorld();
在渲染循环中。渲染器会为您做到这一点。
要查找child
对象的世界位置,您可以使用此模式:
var vector = new THREE.Vector3();
...
vector.setFromMatrixPosition( child.matrixWorld );
渲染器应该先为您更新场景矩阵。如果您自上次渲染后更改了父级的位置,则必须先调用
parent.updateMatrixWorld();
更新相关矩阵。
最好查看three.js源代码,以便了解这些函数的作用。
three.js r.67