在Three.js中是否有办法改变子对象的世界位置?
我的最终目标是:
1)将孩子从父母那里分离出来(没有改变他的位置)
2)将父母移动到不同的位置
3)重新连接孩子(没有改变位置)
在我的代码中,'child'实际上是一组对象(我希望将每个对象保持在同一个世界位置)
目前,我已通过以下方式取得1和2:
scene.updateMatrixWorld();
var vector = new THREE.Vector3();
vector.setFromMatrixPosition( child.matrixWorld );
grandParent.remove( parent );
scene.add( parent );
parent.children[0].position = vector;
我试图通过存储matrixWorld并将其更新为存储值来反转上述过程,但是不成功。我知道改变矩阵世界是不明智的,但这是唯一已经证明富有成效的方法。
答案 0 :(得分:2)
是的,您可以将孩子与父母分离,转换父母,然后重新安置孩子。
有一些工具可以帮助您实现这一目标:
// remove child from parent and add it to scene
THREE.SceneUtils.detach( child, parent, scene );
// remove child from scene and add it to parent
THREE.SceneUtils.attach( child, scene, parent );
three.js r.67