更改 Three.js 中的对象父级?

mco*_*ode 6 three.js

是否可以更改任何对象的父对象?

例如:

scene.add(Object);
Object.Add(OtherObject);
OtherObject.parent = scene; // <-- Something like this
Run Code Online (Sandbox Code Playgroud)

我只知道我可以删除该对象并在新的父对象中再次创建它,但我希望还有另一种方法。我有一些在飞机上的物体,如果我点击它们,我想将它们固定到相机上,这样我就可以一直看到相机前面的东西。如果我再次单击它们,我想再次将父级设置为飞机。

为什么这不起作用?

var obj = clicked.clone();
camera.add(obj);
obj.position.set(0,0,-20);
Run Code Online (Sandbox Code Playgroud)

小智 5

最简单的方法是使用 THREE.SceneUtils 对象的分离和附加功能:

THREE.SceneUtils.detach( child, parent, scene );
THREE.SceneUtils.attach( child, scene, parent );
Run Code Online (Sandbox Code Playgroud)

  • 在旧版本中,它被移动到 /examples/js/utils/SceneUtils.js ,在新版本中,它已被替换为 scene.attach( child ) 和parent.attach( child )。请参阅https://github.com/mrdoob/ Three.js/blob/dev/examples/js/utils/SceneUtils.js (2认同)