Nachdem Sie Ihrer App ein 3D‑Modell hinzugefügt haben, können Sie es anpassen, um das visuelle und interaktive Erlebnis zu verbessern. Sie können beispielsweise eingebettete glTF‑Animationen abspielen und steuern, benutzerdefinierte Materialeigenschaften wie Grundfarben oder metallische Rauheit definieren und benutzerdefinierte Texturen auf Ihre 3D‑Modelle anwenden. Mit diesen Funktionen können Sie das Aussehen und Verhalten eines Objekts zur Laufzeit dynamisch ändern.
3D‑Modelle animieren
Gemäß der glTF‑Spezifikation können 3D‑Modelle eingebettete Animationen enthalten.
Skelett-, starre und Morph-Target-Animationen (Blend Shapes) werden im Jetpack XR SDK unterstützt. Auch Materialanimationen, die mit der
KHR_animation_pointer glTF‑Erweiterung erstellt wurden, werden unterstützt.
Wenn Sie eine Animation abspielen möchten, geben Sie den Namen des entsprechenden Tracks aus der
Liste der animations an. Rufen Sie
GltfAnimation.start() auf, um die Wiedergabe zu starten. Optional können Sie mit GltfAnimationStartOptions die Geschwindigkeit, die Suchzeit und die Wiederholung der Animation angeben.
val animation = gltfEntity.animations.find { it.name == "Walk" } animation?.start(GltfAnimationStartOptions(shouldLoop = true))
Sie können Animationen auch pause(), resume() und stop() sowie seekTo() verwenden, um zu einer bestimmten Zeit im Animationstrack zu springen. Verwenden Sie
GltfAnimation.AnimationState, um den
aktuellen Status der Animation abzufragen.
Materialeigenschaften Ihres 3D‑Modells anpassen
Das Materialsystem von Jetpack XR basiert auf der glTF™ 2.0 Spezifikation und 3D‑Modelle werden mit physikalisch basierter Rendering (Physically Based Rendering, PBR) gerendert. Sie können Materialattribute zur Laufzeit anpassen, um das Aussehen eines Objekts dynamisch basierend auf der Nutzereingabe oder dem aktuellen Status der App zu ändern.
Ein Material definiert eine Reihe visueller Eigenschaften für die Oberfläche eines Objekts und bestimmt, wie diese Oberfläche mit Licht in der Szene interagiert.
In Jetpack XR werden die KhronosPbrMaterial und KhronosUnlitMaterial
Klassen verwendet, um diese Materialien zu erstellen und zu bearbeiten. Wie der Name schon sagt,
KhronosUnlitMaterials sind nicht beleuchtet und werden nicht von der Szenen
beleuchtung beeinflusst. KhronosPbrMaterial ermöglicht Ihnen die Anpassung einer größeren Auswahl an
Eigenschaften, z. B. die Farbe des Glanzes, wie metallisch oder rau ein Objekt ist und ob
es Licht aussendet.
Weitere Informationen zu den einzelnen unterstützten Eigenschaften und den anpassbaren Parametern in Android XR finden Sie in unserer Referenzdokumentation. Ein Glossar mit Erklärungen zu diesen Eigenschaften finden Sie auf der Khronos-Website.

Wenn Sie die Materialeigenschaften Ihres 3D‑Modells anpassen möchten, erstellen Sie zuerst das
neue Material mit KhronosPbrMaterial. Sie müssen den entsprechenden
AlphaMode für das gewünschte visuelle Erscheinungsbild festlegen:
val pbrMaterial = KhronosPbrMaterial.create( session = xrSession, alphaMode = AlphaMode.OPAQUE )
Definieren Sie als Nächstes die Eigenschaften, die Sie ändern möchten. In diesem Beispiel verwenden wir
setBaseColorFactor, um die Grundfarbe zu ändern. Für diese Methode ist ein Vector4 erforderlich, wobei die Komponenten x, y, z und w den RGBA‑Werten (Rot, Grün, Blau und Alpha) entsprechen:
pbrMaterial.setBaseColorFactor( Vector4( x = 0.5f, y = 0.0f, z = 0.5f, w = 1.0f ) )
Benutzerdefinierte Texturen für Ihr 3D‑Modell erstellen
Ein Texture ist ein Bild-Asset, das Sie auf die Oberfläche eines 3D
Modells anwenden können, um Farbe, Details oder andere Oberflächeninformationen bereitzustellen. Mit der Jetpack XR Texture API können Sie Bilddaten wie PNG‑Dateien asynchron aus dem Ordner /assets/ Ihrer App laden.
Beim Laden einer Textur können Sie einen TextureSampler angeben, der bestimmt, wie die Textur gerendert wird. Der Sampler definiert Filterungseigenschaften (für den Fall, dass die Textur kleiner oder größer als die Originalgröße angezeigt wird) und Wrapping-Modi (für die Verarbeitung von Koordinaten außerhalb des Standardbereichs [0, 1] ).
Ein Texture-Objekt ist an sich nur ein Datensatz. Es muss einem Material zugewiesen werden, damit es eine visuelle Wirkung auf ein 3D‑Modell hat.

Wenn Sie eine benutzerdefinierte Textur erstellen möchten, müssen Sie zuerst die Bilddatei im Ordner /assets/ speichern. Als Best Practice empfiehlt es sich, in diesem Ordner auch ein Unterverzeichnis textures zu erstellen.
Nachdem Sie die Datei im entsprechenden Verzeichnis gespeichert haben, erstellen Sie die Textur
mit der Texture API. Hier können Sie bei Bedarf auch einen optionales
TextureSampler anwenden:
val texture = Texture.create( session = xrSession, path = Path("textures/texture_file.png") )
Definieren Sie als Nächstes den Texturtyp und legen Sie die entsprechenden Parameter fest. In diesem Beispiel wenden wir eine Okklusionstextur an und legen die Stärke fest:
pbrMaterial.setOcclusionTexture( texture = texture, strength = 1.0f )
Materialien und Texturen auf 3D‑Objekte anwenden
Wenn Sie das neue Material oder die neue Textur anwenden möchten, überschreiben Sie das vorhandene Material für einen bestimmten Knoten in Ihrem glTF‑Knoten. Rufen Sie dazu
setMaterialOverride für den GltfModelNode auf:
gltfModelNode.setMaterialOverride( material = pbrMaterial )
Wenn Sie die neu erstellten Materialien entfernen möchten, rufen Sie clearMaterialOverride für
den zuvor überschriebenen Knoten im GltfModelNode auf. Dadurch wird Ihr 3D‑Modell auf den Standardzustand zurückgesetzt:
gltfModelNode.clearMaterialOverride()
glTF und das glTF‑Logo sind Marken der Khronos Group Inc.