Three.js将一个对象添加到一个组,但保持全局位置/旋转/缩放

Qbz*_*Qbz 5 javascript 3d matrix three.js

我想将一个对象从一个组(或世界/场景)移动到另一个组,但保持其全局转换不变.基本上,我不希望看到对象发生变化.

基本上,这样的事情:

//store current world transformation
var origWorldMatrix = myObject.matrixWorld.clone();

//move object to a group (that is positioned and rotated arbitrarily)
someGroup.add( myObject );

//restore previous world transformation
myObject.matrixWorld.copy( origWorldMatrix );
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不起作用.我想因为世界矩阵总是根据本地位置/旋转/比例属性更新下一帧.我已经尝试将它与matrixAutoUpdate = false一起使用,但这似乎也不起作用.

我想要完成的结果似乎应该很简单,所以我希望我遗漏了一些明显的东西.任何人都可以告诉我这是怎么做到的?

谢谢!

Wes*_*ley 7

您可以在文件中找到您需要使用的方法Object3D.attach().

// add object as a child of parent, while maintaining the object's world transform

parent.attach( object );
Run Code Online (Sandbox Code Playgroud)

研究源代码Object3D.attach(),并Object3D.attach()让您了解他们在做什么.

three.js r.96