Bei der Arbeit mit 3D‑Modellen unterstützt das Jetpack XR SDK den offenen Standard glTF
2.0. Wenn Android XR Apps rendert, die mit dem
Jetpack XR SDK erstellt wurden, werden 3D‑Modelle mit physikalisch basierten
Rendering-Techniken(Physically Based Rendering, PBR) gerendert, die im glTF 2.0-Standard
(zusammen mit unterstützten Erweiterungen) angegeben sind. Die meisten Tools zur Erstellung digitaler Inhalte (Digital Content Creation, DCC)
, z. B. Autodesk Maya, Maxon ZBrush,
Blender und Spline, können 3D‑Modelle in
das glTF-Format exportieren (.gltf oder .glb-Dateien).
Wenn eine SpatialEnvironment-Skybox vom Nutzer oder von Ihrer
App angegeben wurde, werden 3D‑Modelle mit den Beleuchtungsinformationen der Skybox der Umgebung beleuchtet. Reflektierende Materialien und Glanzlichter spiegeln ebenfalls die Skybox der Umgebung wider. Wenn die Passthrough-Funktion aktiviert ist, basieren die Beleuchtung, Reflexionen und Glanzlichter auf einem hellen Raum mit einer einzelnen gerichteten Lichtquelle.
Eine kurze Übersicht über die unterstützten Materialien finden Sie auf der Khronos-Website unter glTF PBR Properties.
Es gibt zwei Hauptmethoden, mit denen Apps, die mit dem Jetpack XR SDK erstellt wurden, 3D‑Modelle laden können.
- Laden Sie das Modell in den
ActivitySpace, wie unter 3D‑Modell in denActivitySpaceeinfügen beschrieben. - Verwenden Sie den integrierten Scene Viewer über eine Intent.
3D‑Modell in den ActivitySpace einfügen
Sobald Sie Ihre glTF-Datei haben, müssen Sie sie dem Anlagenverzeichnis in Android Studio hinzufügen. Wir empfehlen, ein models-Verzeichnis zu erstellen, um Ihre Asset-Typen besser zu organisieren.

Rufen Sie GltfModel.create() auf, um das glTF-Modell zu laden.
val gltfModel = GltfModel.create(session, Paths.get("models", "saturn_rings.glb"))
An diesem Punkt wird das Modell in den Arbeitsspeicher geladen, aber noch nicht gerendert. Wenn Sie viele 3D‑Modelle laden müssen oder Ihr Modell groß ist, empfiehlt es sich, sie asynchron im Voraus zu laden. So müssen Nutzer nicht warten, bis Ihre Modelle in den Arbeitsspeicher geladen wurden.
Wir müssen die glTF-Datei in den ActivitySpace einfügen. Rufen Sie
GltfModelEntity.create auf, um eine Entität zu erstellen und sie in den
ActivitySpace einzufügen. Als Best Practice sollten Sie prüfen, ob sich die App in einem Zustand befindet
der räumliche Funktionen ermöglicht.
if (session.scene.spatialCapabilities.contains(SpatialCapability.SPATIAL_3D_CONTENT)) { val gltfEntity = GltfModelEntity.create(session, gltfModel) }
Wenn Sie Ihre App ausführen, sollte das geladene 3D‑Modell jetzt angezeigt werden.

3D‑Objekt mit SpatialGltfModel hinzufügen
Android XR unterstützt das glTF-Format für 3D‑Modelle, die in der Regel als
.glb-Dateien gespeichert werden. Verwenden Sie die
SpatialGltfModel zusammensetzbare Funktion, um diese Objekte Ihrem Layout hinzuzufügen. Diese API vereinfacht das Laden von Assets und die Verwaltung ihres Status.
Um ein Modell anzuzeigen, definieren Sie zuerst seine Quelle und seinen Status mit
rememberSpatialGltfModelState. Sie können
Modelle aus dem Ordner assets Ihrer App, einer URI oder
raw data laden.
val modelState = rememberSpatialGltfModelState( source = SpatialGltfModelSource.fromPath( Paths.get("models/model_name.glb") ) )
Sobald der Status definiert ist, verwenden Sie die zusammensetzbare Funktion SpatialGltfModel, um das Modell in einem Unterraum zu rendern.
SpatialGltfModel(state = modelState, modifier = SubspaceModifier)
3D‑Modell in eine Compose-SceneCoreEntity einfügen
Wenn Sie ein 3D‑Modell mit SceneCoreEntity einfügen möchten, müssen Sie zuerst
die glTF-Datei mit GltfModel.create() in den Arbeitsspeicher laden. Anschließend können Sie ein 3D
Modell in eine SceneCoreEntity einfügen, um SceneCore-Komponenten mit
Compose for XR-Layouts zu verbinden. Weitere Informationen finden Sie unter
SceneCoreEntity verwenden, um ein 3D‑Objekt in Ihr Layout einzufügen.
3D‑Modell mit Scene Viewer laden
Wenn Sie nach der einfachsten Möglichkeit suchen, ein 3D‑Modell mit grundlegenden Interaktionsfunktionen zu laden, können Sie Scene Viewer wie auf einem Mobilgerät verwenden. Ein wichtiger Unterschied zwischen Scene Viewer unter Android XR und auf Mobilgeräten besteht darin, dass Scene Viewer nur den Parameter für die Datei-URI unterstützt, der auf die glTF-Datei verweist. Alle anderen Parameter werden ignoriert.
Scene Viewer ist eine separate App, die mit einer Intent aufgerufen wird und im Full Space-Modus ausgeführt wird. Wenn Sie sie aufrufen, ist Ihre App nicht mehr sichtbar und Scene Viewer ist im Fokus. Alle Umgebungen, die Sie möglicherweise geändert haben werden auf die Systemeinstellungen des Nutzers zurückgesetzt.
Hier ist ein Beispiel für die Verwendung einer Intent, um eine glTF-Datei in Scene Viewer
unter Android XR anzusehen:
val url = "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/Avocado/glTF/Avocado.gltf" val sceneViewerIntent = Intent(Intent.ACTION_VIEW) val intentUri = Uri.parse("https://arvr.google.com/scene-viewer/1.2") .buildUpon() .appendQueryParameter("file", url) .build() sceneViewerIntent.setData(intentUri) try { startActivity(sceneViewerIntent) } catch (e: ActivityNotFoundException) { // There is no activity that could handle the intent. }
Weitere Informationen zu den Interaktivitätsoptionen für Scene Viewer finden Sie in unserer Dokumentation zum Design von 3D‑Modellen.
glTF-Erweiterungen
Das Jetpack XR SDK unterstützt mehrere glTF-Erweiterungen, die die Funktionen von 3D‑Modellen erweitern. Diese Funktionen sind sowohl über die
GltfModelEntity als auch über Scene Viewer verfügbar.
KHR_animation_pointerKHR_draco_mesh_compressionKHR_lights_punctualKHR_materials_clearcoatKHR_materials_sheenKHR_materials_unlitKHR_materials_variantsKHR_mesh_quantizationKHR_texture_basisuKHR_texture_transformEXT_texture_webp