Three.js aggiunge un object ad un gruppo ma mantiene la posizione / rotazione / scala globale come era

Voglio spostare un object da un gruppo (o mondo / scena) a un altro gruppo, ma mantenere intatta la sua trasformazione globale. Fondamentalmente, non voglio vedere il cambiamento dell’object.

fondamentalmente, qualcosa del genere:

//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 ); 

Tuttavia, questo non sembra funzionare. Immagino perché la matrice del mondo è sempre aggiornata al fotogramma successivo, in base alle proprietà di posizione / rotazione / scala locali. Ho provato a utilizzare questo con matrixAutoUpdate = false, ma non sembra funzionare.

Il risultato che sto cercando di ottenere sembra qualcosa che dovrebbe essere semplice da fare, quindi spero di perdere qualcosa di ovvio. Qualcuno può darmi un indizio su come si fa?

Grazie!

Come ho detto nel mio commento, i metodi che devi utilizzare sono:

 // 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 ); 

Studia il codice sorgente di attach() e detach() modo da capire cosa stanno facendo.

three.js r.74