如何在另一个Object3D中获取Object3D的全局位置?
设置:
var parent = new THREE.Object3D();
parent.position.set(100, 100, 100);
var child = new THREE.Object3D();
child.position.set(100, 100, 100);
parent.add(child);
scene.add(parent);
备注:
我认为这是做到这一点的方法:
console.log(child.localToWorld(parent.position));
...但是它给了我(100,100,100),而不是(200,200,200)。
答案 0 :(得分:55)
先致电
scene.updateMatrixWorld();
或在您的示例中,调用
就足够了parent.updateMatrixWorld();
然后提取世界位置
var vector = new THREE.Vector3();
vector.setFromMatrixPosition( child.matrixWorld );
但实际上,渲染器会在每个渲染循环中为您调用updateMatrixWorld()
,因此您不必这样做。
编辑:更新为three.js r.65
答案 1 :(得分:6)
在threejs r89 中,您可以通过Object3D.getWorldPosition
获得世界排名。我不知道它什么时候被添加。