更改Three.js中子对象的世界位置

问题描述 投票:0回答:1

Three.js中是否可以更改子对象的世界位置?

我的最终目标是:

1)将孩子与父母分离(位置不变)2)将父母移到其他位置3)重新连接孩子(位置不变)

在我的代码中,“孩子”实际上是一组对象(并且我希望将每个对象保持在相同的世界位置)

目前,我已经通过以下方式获得了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并将其更新为存储的值来逆转上述过程,但未成功。我知道更改matrixWorld是不明智的做法,但这是唯一一种卓有成效的方法。

javascript 3d three.js
1个回答
2
投票

是的,您可以将子代与父代分离,转换父代并重新附加子代。

用于执行此操作的方法是:

parent.attach( object );

[将object添加为parent的子级,同时保持对象的世界变换。

three.js r.113

© www.soinside.com 2019 - 2024. All rights reserved.