Saat menggunakan model 3D, Jetpack XR SDK mendukung standar terbuka glTF
2.0. Saat Android XR merender aplikasi yang dibuat dengan
Jetpack XR SDK, model 3D akan dirender dengan teknik rendering
berbasis fisik(PBR)yang ditentukan dalam standar glTF 2.0
(bersama dengan ekstensiyang didukung). Sebagian besar alat pembuatan konten digital (dcc)
, seperti Autodesk Maya, Maxon ZBrush,
Blender, dan Spline dapat mengekspor model 3D ke dalam
format glTF (.gltf atau .glb file).
Jika skybox SpatialEnvironment telah ditentukan oleh pengguna atau oleh aplikasi
Anda, model 3D akan diterangi dengan informasi pencahayaan yang disediakan oleh skybox
lingkungan. Material reflektif dan sorotan spekular juga akan memantulkan skybox lingkungan. Jika passthrough telah diaktifkan, pencahayaan, pantulan, dan sorotan spekular akan didasarkan pada ruangan terang dengan satu cahaya terarah.
Untuk ringkasan singkat tentang materi yang didukung, lihat Properti PBR glTF di situs Khronos. Untuk mempelajari cara menyesuaikan model 3D dengan properti ini dan lainnya, lihat Menyesuaikan model 3D di aplikasi Anda
Menambahkan file glTF ke folder aset
Setelah memiliki file glTF, langkah berikutnya adalah menambahkannya ke direktori aset di Android Studio. Sebaiknya buat direktori models untuk mengatur jenis aset Anda dengan lebih baik.

Menambahkan objek 3D menggunakan SpatialGltfModel
Android XR mendukung format glTF untuk model 3D, yang biasanya disimpan sebagai
.glb file. Untuk menambahkan objek ini ke tata letak, gunakan composable
SpatialGltfModel. API ini menyederhanakan proses pemuatan aset dan pengelolaan statusnya.
Untuk menampilkan model, tentukan terlebih dahulu sumber dan statusnya menggunakan
rememberSpatialGltfModelState. Anda dapat memuat
model dari folder assets aplikasi, URI, atau
raw data.
val modelState = rememberSpatialGltfModelState( source = SpatialGltfModelSource.fromPath( Paths.get("models/model_name.glb") ) )
Setelah status ditentukan, gunakan composable SpatialGltfModel untuk merendernya dalam subruang.
SpatialGltfModel(state = modelState, modifier = SubspaceModifier)
Menempatkan model 3D menggunakan Compose SceneCoreEntity
Untuk menempatkan model 3D menggunakan SceneCoreEntity, Anda harus memuat
glTF ke dalam memori terlebih dahulu menggunakan GltfModel.create(). Kemudian, Anda dapat menempatkan model 3D
ke dalam SceneCoreEntity untuk menghubungkan komponen SceneCore dengan
Compose untuk tata letak XR. Lihat
Menggunakan SceneCoreEntity untuk menempatkan objek 3D di tata letak.
Menempatkan model 3D menggunakan Jetpack Scenecore
Untuk memuat model glTF, panggil GltfModel.create().
val gltfModel = GltfModel.create(session, Paths.get("models", "saturn_rings.glb"))
Pada tahap ini, model dimuat ke dalam memori, tetapi belum dirender. Jika Anda memiliki banyak model 3D yang akan dimuat atau model Anda berukuran besar, sebaiknya muat model tersebut secara asinkron terlebih dahulu. Dengan begitu, pengguna tidak perlu menunggu model Anda dimuat ke dalam memori.
Tambahkan glTF ke ActivitySpace. Panggil
GltfModelEntity.create untuk membuat entity dan menempatkannya ke dalam
ActivitySpace. Sebagai praktik terbaik, Anda harus memeriksa apakah aplikasi berada dalam status
yang memungkinkan kemampuan spasial.
if (session.scene.spatialCapabilities.contains(SpatialCapability.SPATIAL_3D_CONTENT)) { val gltfEntity = GltfModelEntity.create(session, gltfModel) }
Anda akan melihat model 3D yang dimuat saat menjalankan aplikasi.

Memuat model 3D menggunakan Scene Viewer
Jika Anda mencari cara termudah untuk memuat model 3D dengan kemampuan interaksi dasar, Anda dapat memilih untuk menggunakan Scene Viewer seperti yang Anda lakukan di perangkat seluler. Perbedaan utama antara Scene Viewer di Android XR dan di perangkat seluler adalah Scene Viewer hanya mendukung parameter URI file yang mengarah ke file glTF dan semua parameter lainnya diabaikan.
Scene Viewer adalah aplikasi terpisah yang dipanggil menggunakan intent dan berjalan dalam Mode Ruang Penuh. Akibatnya, saat Anda memanggilnya, aplikasi Anda tidak akan lagi terlihat dan Scene Viewer akan memiliki fokus. Setiap lingkungan yang mungkin telah Anda ubah akan direset ke preferensi sistem pengguna.
Berikut adalah contoh penggunaan Intent untuk melihat file glTF di Scene Viewer
di Android XR:
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. }
Untuk mengetahui informasi selengkapnya tentang opsi interaktivitas untuk Scene Viewer, lihat dokumentasi desain model 3D kami.
Ekstensi glTF
Jetpack XR SDK mendukung beberapa ekstensi gfTF yang memperluas kemampuan model 3D. Kemampuan ini tersedia melalui
GltfModelEntity dan Scene Viewer.
KHR_animation_pointerKHR_draco_mesh_compressionKHR_lights_punctualKHR_materials_clearcoatKHR_materials_sheenKHR_materials_unlitKHR_materials_variantsKHR_mesh_quantizationKHR_texture_basisuKHR_texture_transformEXT_texture_webp