Mit Sceneform können Sie Modelle mit Animation importieren. Mit Sceneform APIs können Sie die Animation abspielen und steuern und Knoten an das Modellgerüst anhängen.
Das Beispiel Animation „Sceneform“ enthält Dateien, mit denen Modelle von Andy das Android und ein Baseballmütz erstellt werden können. Das Andy-Modell enthält Animationsdaten, während das Baseballmütze ein nicht animiertes Modell ist. Wenn du das Beispiel führst, bricht Andy die Arme, während er mit einem Knoten den Kopf aufrechterhält.
Sceneform-Modellanimation und Android-Property-Animation
Es ist wichtig, zwischen Modellanimation in Sceneform und Property-Animation in Android zu unterscheiden.
Modellanimationen werden von Künstlern vorab mithilfe von Modellierungs- und Animationssoftware erstellt. Sie enthalten Skelett-Animationsdaten. Diese Animationen müssen als
*.fbx
-Dateien exportiert und dann in eine*.sfb
-Datei importiert werden, um sie in Sceneform zu verwenden.Property-Animationen sind ein grundlegendes Android-Konzept und nicht spezifisch für Sceneform. Diese Art von Animation kann jeden änderbaren Wert in einem Java-Objekt ändern, das einen Getter und einen Setter hat. Die animierten Werte können dynamisch festgelegt, aber nicht in eine
*.sfb
-Datei gepackt werden.Sowohl Property als auch Modellanimation unterstützen die Animator API von Android. Beide unterstützen Listener, Wiedergabesteuerung (start/stop/end/pause/cancel), Dauer und Startverzögerung.
Die Wiedergabe von Modellen wird nur eingeschränkt für die
TimeInterpolators
-Wiedergabe unterstützt. Die umgekehrte Wiedergabe wird in Modellanimationen nicht unterstützt.Im Beispiel Animation können Sie Sceneform-Animationsmodelle in Aktion sehen.
Im Beispiel Solar System können Sie Property-Animationen mit Sceneform in Aktion sehen.
Konzepte der Modellanimation
Bevor Sie mit der Arbeit mit animierten Modellen beginnen, empfiehlt es sich, bestimmte Konzepte in Bezug auf Skeletal Animation sowie die damit verbundenen Einschränkungen und Funktionen für Sceneform zu verstehen.
Knochen: Ein animiertes Modell enthält Knochen, die miteinander verbunden sind, um hierarchische Beziehungen in einer Hierarchie zu bilden. Die Animation verändert die Position und Ausrichtung von Knochen während der Wiedergabe.
So wie beim Verschieben eines übergeordneten
Node
in Sceneform auch alle untergeordnetenNode
s verschoben werden, werden beim Verschieben eines übergeordneten Knochens in Sceneform die untergeordneten Elemente verschoben. Knochen sind durch Animation beweglich oder können als Knoten über die KlasseSkeletonNode
aufgerufen werden. Beim Zugriff auf Knochen alsNode
werden die neuen Positionen von jedem Frame durch Animation überschrieben, sofern einer abgespielt wird.Skelett. Das Skelett besteht aus allen Knochen und bildet eine Hierarchie von hierarchischen Beziehungen.
Ein Modell eines menschlichen Arms kann z. B. Knochen wie den linken Schulter und den linken Oberarm umfassen. Ab dem linken oberen Rand als übergeordnetem Element dieser Hierarchie wird ihm der obere obere Arm als untergeordnetes Element zugewiesen. Die untergeordneten Elemente des linken Oberarms können der linke Ellbogen und die Unterschenkel sein. Wenn der Schulterknochen gedreht wird, bewegen sich der Oberarm, der Unterarm, der Ellbogen und alle Knochen darunter.
Sceneform verfügt über keine API zum Ändern der hierarchischen Beziehung zwischen Knochen im Skelett. Dies muss im Voraus in einem externen Modellierungs- und Animationspaket erfolgen.
Auch Modelle, die anorganische Objekte darstellen, können mit Skeletten den Realismus unterstützen. Ein Modell eines Sofas könnte zum Beispiel Knochen und ein Skelett haben.
Haut Die Haut ist eine Gewichtung, die auf das gezeichnete Oberflächennetz des Modells angewendet wird. Die Position und Form des Hautgitters wird aus den Knochen in der Nähe berechnet. Diese Knochen-zu-Haut-Verbindung ist der Verformung des Modells zugeordnet, was eine realistischere Bewegung ermöglicht.
Der Skin muss mit einem Modellierungs- und Animationspaket im Voraus vorbereitet werden. Sceneform kann das Material des Mesh-Netzwerks verändern, um das Aussehen eines Modells zu ändern.