2016-06-21 5 views
0

Zum Beispiel: Ich habe das Kindrechteck (2,3) zum Hauptrechteck (1) hinzugefügt.Kinddrehung speichern Three.js

Sieht aus wie 3 Rechtecke nacheinander.

parent.add(obj); 

Aber wenn ich Eltern Rechteck Drehung (1) ändern, um dies führt dazu, dass Childs Position und Rotation ändern (!) Mit dem Vorfahren.

img.example

Wie Position ändern und Rotation sparen?

+0

Ändern Sie die Achsenposition jeder Ebene an den Anfang des Netzes, dann, um zu erreichen, was Sie wollen, müssen Sie Ebene 2 drehen. Ebene 1 dreht alles, was es Kinder ist. – Erevald

+0

@Vlad Siehe http://stackoverflow.com/questions/29586422/three-js-ignore-parents-rotation. Siehe auch http://stackoverflow.com/questions/15734049/invert-rotation-of-parent-in-the-child-so-the-child-appear-unrotated-in-the-wo/15735090#15735090. – WestLangley

Antwort

0

Wenn Sie ein Objekt zum übergeordneten Element hinzufügen und die Rotation oder Position des übergeordneten Elements ändern, wirkt sich dies nur auf das übergeordnete Element aus.

Untergeordnete Elemente haben Werte unverändert, aber Position und Drehung werden nach Parent berechnet. Beziehungen zwischen Kind und Eltern des Elternteils werden niemals irgendwo gespeichert. Das ist ein Grund, warum Sie Kinderrotation nicht in Richtung Eltern des Elternteils speichern können. Es existiert einfach nicht.

Wenn Sie nur mit Elternelement verschieben möchten, können Sie Kinderposition oder Rotation in Richtung Eltern-Elternteil berechnen und irgendwo speichern. In jedem Animationsrahmen müssen Sie diese Position und Drehung für jeden untergeordneten Bereich festlegen. Dies wird nicht praktikabel sein.

Um Kind Position in Richtung Mutter Szene sehen how to: get the global/world position of a child object

aber viel besserer Ansatz

ist zu platzieren andere Elemente in die Szene separat, nicht als Kind od Objekt zu berechnen. Wenn Sie einige Operationen mit einer Objektgruppe durchführen müssen, speichern Sie die Objektbezeichner im Außenbereich und rufen Sie Objekt für Bezeichner als Referenz ab.