Ich verwende derzeit Unity 5.5 zum ersten Mal in einem Projekt und habe einige Probleme mit Transformationen.
Ich habe einen Hintergrund in allgemeineren 3D-Grafiken, was bedeutet, dass ich zum Verwalten von Szenendiagrammen und Matrixtransformationsreihenfolgen verwendet werde.
Mein größtes Problem beim Wechsel zu Unity und bei Verwendung der integrierten Transformationsklasse ist, dass ich keine Informationen zur Transformationsreihenfolge von Rotation, Lokalrotation, Skalierung, Ortsskalierung, Position und Lokalposition finden kann.
Ich kann keine guten Informationen darüber finden und es macht mich ein bisschen verrückt.
TL; DR: Wie ist die Transformationsreihenfolge der Transform-Klasse?
Translation * Rotation * Scale
und mit den lokalen Dingen würde ich raten(LocalTranslation * WorldTranslation) * (LocalRotation * WorldRotation) * (LocalScaling * WorldScaling)
Antworten:
Lokale Skala (
localScale
)Lokale Rotation (
localRotation
)Wenn Sie Euler-Winkel verwenden, werden sie als Rotationen um die Weltachsen in der folgenden Reihenfolge angewendet :
(Oder wenn Sie lieber an Rotationen denken, die um lokale Achsen stattfinden, ist es ...)
Lokale Übersetzung (
localPosition
)Die lokalen Transformationen der Eltern in derselben Reihenfolge wie oben
Wiederholen Sie diesen Vorgang bis zur Wurzel der Transformationshierarchie.
Die nicht-lokale Parameter,
lossyScale
,rotation
,position
, den Nettoeffekt dieser gesamten Transformationskette repräsentieren (lossyScale
eine „verlustbehaftete“ Näherung ist , da, als wir mehrere Skalen und Drehungen kombiniert haben, wird die resultierende Maßstab nicht als Achse justierten garantiert , so dass es möglicherweise nicht mehr gut durch einen Vektor dargestellt wird3)quelle
Schauen Sie sich das Inspector-Tutorial hier an: https://unity3d.com/learn/tutorials/topics/interface-essentials/inspector
und werfen Sie einen Blick hier https://docs.unity3d.com/Manual/UsingTheInspector.html
Sie haben alle visuell benötigten Informationen über:
quelle
Sie können das ausdrucken
localToWorldMatrix
. Wenn die Spalte ganz rechts / 4. enthälttransform.position
, wissen Sie, dass die Übersetzung zuletzt angewendet wurde, d. H.quelle