- Sceneform SDK for Android ist als Open-Source-Version und archiviert (github.com/google-ar/sceneform-android-sdk) mit Version 1.16.0 verfügbar.
- Diese Website (developers.google.com/sceneform) dient als Dokumentationsarchiv für die vorherige Version, Sceneform SDK for Android 1.15.0.
- Verwenden Sie keine Version 1.17.0 der Sceneform-Maven-Artefakte.
- Die Artefakte 1.17.1 Maven können verwendet werden. Abgesehen von der Version sind die 1.17.1-Artefakte jedoch mit den 1.15.0-Artefakten identisch.
Szenenanimation
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
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.
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 untergeordneten Node
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 Klasse SkeletonNode
aufgerufen werden. Beim Zugriff auf Knochen als Node
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.
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2022-09-26 (UTC).
[null,null,["Zuletzt aktualisiert: 2022-09-26 (UTC)."],[[["\u003cp\u003eSceneform allows importing and controlling 3D models with pre-made animations, including attaching objects to model skeletons for dynamic interactions.\u003c/p\u003e\n"],["\u003cp\u003eSceneform supports both model animation (baked into the model file) and property animation (dynamically controlled in Android), each with its own features and limitations.\u003c/p\u003e\n"],["\u003cp\u003eModel animation in Sceneform relies on concepts like bones, skeletons, and skinning to define the structure and movement of animated objects.\u003c/p\u003e\n"],["\u003cp\u003eDevelopers can utilize Sceneform APIs to control playback, attach nodes, and interact with animated models within AR experiences.\u003c/p\u003e\n"]]],["Sceneform allows importing and controlling animated models via its APIs, including attaching nodes to a model's skeleton. Model animations, created externally and imported as `*.sfb` files, differ from Android property animations, which modify Java object values dynamically. Sceneform model animations use skeletal animation, where bones, connected in a hierarchical skeleton, drive the movement of the model's skin. Bones can be manipulated via the `SkeletonNode` class. The skin mesh appearance can be customized in sceneform.\n"],null,["# Sceneform animation\n\nSceneform lets you import models with animation. You can use Sceneform APIs to\nplay back and control the animation, and attach nodes to a model's skeleton.\n\nFor instance, the Sceneform [**Animation**](//github.com/google-ar/sceneform-android-sdk/tree/v1.15.0/samples/animation)\nsample includes files used to build models of Andy the android and a baseball\nhat. The Andy model contains animation data, while the baseball hat is a\nnon-animated model. When you run the sample, Andy breakdances and waves his arms\nwhile the hat remains fixed to his head using a node.\n\nSceneform model animation vs Android property animation\n-------------------------------------------------------\n\nIt's important to differentiate between *model animation* in Sceneform versus\n*property animation* in Android.\n\n- Model animations are created ahead of time by artists using modeling and\n animation software. They contain [skeletal animation data](#model-concepts).\n These animations must be exported as\n `*.fbx` files, then imported into a `*.sfb` file to be used in Sceneform.\n\n- [Property animation](//developer.android.com/guide/topics/graphics/prop-animation)\n is a fundamental Android concept and is not specific to Sceneform. This kind\n of animation can change any mutable value on a Java object that has a getter\n and a setter. The animated values can be set dynamically, but cannot be\n packaged into an `*.sfb` file.\n\n Both property and model animation support\n [Android's Animator API](//developer.android.com/reference/android/animation/Animator)\n . They both support\n [listeners](//developer.android.com/guide/topics/graphics/prop-animation#listeners),\n playback control (start/stop/end/pause/cancel), duration, and start delay.\n\n Only limited support for\n [`TimeInterpolators`](//developer.android.com/reference/android/animation/TimeInterpolator)\n playback is provided in the model animations. Reverse playback is not\n supported in model animations.\n- To see Sceneform animation modeling in action, review the\n [**Animation**](//github.com/google-ar/sceneform-android-sdk/tree/v1.15.0/samples/animation)\n sample.\n\n- To see property animation using Sceneform in action, review the\n [**Solar System**](//github.com/google-ar/sceneform-android-sdk/tree/v1.15.0/samples/solarsystem)\n sample.\n\nModel animation concepts\n------------------------\n\nBefore you start working with animated models, it's a good idea to understand specific\nconcepts relating to [*skeletal animation*](//en.wikipedia.org/wiki/Skeletal_animation),\nas well as related restrictions and features that apply to Sceneform.\n\n- **Bones.** An animated model contains *bones* that are connected together,\n forming parent-child relationships in a hierarchy. Animation alters the\n position and orientation of bones during playback.\n\n In the same way that moving a parent `Node` in Sceneform causes all child\n `Node`s to also move, moving a parent bone in Sceneform moves the children.\n Bones are movable by animation or accessed as a node via the [`SkeletonNode`](/sceneform/reference/com/google/ar/sceneform/SkeletonNode)\n class. When bones are accessed as a `Node`, the new positions are\n overwritten every frame by animation if one is playing.\n- **Skeleton.** The *skeleton* comprises all of the bones together, forming a\n hierarchy of parent-child relationships.\n\n For example, a model of a human arm might contain bones such as\n \"left shoulder\", \"left upper arm\", \"left elbow\", and \"left forearm\" and so\n on. Starting from the \"left shoulder\" as the parent of this hierarchy,\n \"left upper arm\" would be assigned as a child. The children of \"left upper\n arm\" might be the \"left elbow\" and lower bones. When the shoulder bone is\n rotated, the upper arm, forearm, elbow and any bones below would move in\n tandem.\n\n Sceneform doesn't have an API for changing the parent-child relationships\n between bones in the skeleton. This must be done ahead of time in an\n external modeling and animation package.\n\n Even models depicting inorganic objects can utilize skeletons to facilitate\n realism. For example, a model of a couch could have bones and a skeleton.\n- **Skin.** The *skin* is a weight applied to the drawn surface mesh of the\n model. The position and shape of the skin mesh is calculated from the nearby\n bones. This bone to skin connection maps to how the model deforms, providing\n for more realistic movement.\n\n The skin must be prepared ahead of time using a modeling and animation\n package. Sceneform can alter the material of the skin mesh to change a\n model's appearance."]]