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é.