Jak uzyskać globalną pozycję obiektu Object3D wewnątrz innego obiektu Object3D?Jak uzyskać globalną/światową pozycję obiektu podrzędnego?
Setup:
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);
Uwagi:
Myślałem, że będzie to sposób, aby to zrobić:
console.log(child.localToWorld(parent.position));
... ale daje mi (100, 100, 100), a nie (200, 200, 200).
Dziękuję WestLangley po poradę Zrobiłem to: ** console.log (parent.position.getPositionFromMatrix (child.matrixWorld)) ** Ale ponieważ kod na żywo jest actruly wewnątrz pętli, która porusza się wokół rzeczy , w wyniku tego powstały dziwne artefakty, w których prędkość obiektu nadrzędnego zwiększyłaby się dramatycznie (ta jedyna konsola.logująca pozycję dziecka) ! Ponieważ nie rozumiem dokładnie, co się dzieje (przeczytam na ten temat), skończyłem robić: ** console.log (parent.position.clone(). GetPositionFromMatrix (child.matrixWorld)) ** * Jeszcze raz dziękuję. * – TunnelVision
Nie, nie! Utwórz oddzielny wektor poza pętlą renderowania i przypisz mu wartość pozycji wewnątrz pętli renderowania. – WestLangley
ah, teraz dostaję to :) – TunnelVision