Comment obtenir la position globale / mondiale d’un object enfant?

Comment puis-je obtenir la position globale d’un Object3D dans un autre Object3D?

installer:

var parent = new THREE.Object3D(); parent.position.set(100, 100, 100); var child = new THREE.Object3D(); child.position.set(100, 100, 100); parent.add(child); scene.add(parent); 

Remarques:

Je pensais que ce serait la façon de le faire:

 console.log(child.localToWorld(parent.position)); 

… mais ça me donne (100, 100, 100) , pas (200, 200, 200) .

Premier appel

 scene.updateMasortingxWorld(); 

ou dans votre exemple, il suffit d’appeler

 parent.updateMasortingxWorld(); 

Puis extrayez la position du monde

 var vector = new THREE.Vector3(); vector.setFromMasortingxPosition( child.masortingxWorld ); 

En pratique, cependant, le moteur de rendu appelle updateMasortingxWorld() pour vous dans chaque boucle de rendu, ce qui est inutile.

EDIT: mis à jour à trois.js r.65

Dans Threejs R89, vous pouvez simplement obtenir la position du monde par Object3D.getWorldPosition . Je ne sais pas quand il a été ajouté.