Setelah menambahkan model 3D ke aplikasi, Anda dapat meningkatkan pengalaman visual dan interaktif dengan menyesuaikannya. Misalnya, Anda dapat memutar dan mengontrol animasi glTF yang disematkan, menentukan properti materi kustom (seperti warna dasar atau kekasaran metalik), dan menerapkan tekstur kustom ke model 3D. Kemampuan ini memungkinkan Anda mengubah tampilan dan perilaku objek secara dinamis saat runtime.
Menganimasikan model 3D
Sebagai bagian dari spesifikasi glTF, model 3D dapat memiliki animasi yang disematkan.
Animasi kerangka (rigged), kaku, dan target morph (bentuk campuran) didukung di Jetpack XR SDK. Animasi materi yang dibuat dengan ekstensi glTF
KHR_animation_pointer juga didukung.
Untuk memutar animasi, tentukan nama trek tertentu dari daftar
animations. Panggil
GltfAnimation.start() untuk mulai memutar. Anda dapat
secara opsional menentukan kecepatan, waktu pencarian, dan apakah animasi
harus diulang atau tidak menggunakan GltfAnimationStartOptions.
val animation = gltfEntity.animations.find { it.name == "Walk" } animation?.start(GltfAnimationStartOptions(shouldLoop = true))
Anda juga dapat pause(), resume(), dan stop() animasi, serta menggunakan seekTo() untuk melompat ke waktu tertentu dalam trek animasi. Untuk membuat kueri
status animasi saat ini, gunakan
GltfAnimation.AnimationState.
Menyesuaikan properti materi model 3D
Sistem materi Jetpack XR didasarkan pada spesifikasi glTF™ 2.0, dan model 3D dirender menggunakan rendering berbasis fisik (PBR). Anda dapat menyesuaikan atribut materi selama runtime untuk mengubah tampilan objek secara dinamis berdasarkan input pengguna atau status aplikasi saat ini.
Material menentukan kumpulan properti visual untuk permukaan objek dan menentukan cara permukaan tersebut berinteraksi dengan cahaya dalam scene.
Di Jetpack XR, class KhronosPbrMaterial dan KhronosUnlitMaterial
digunakan untuk membuat dan memanipulasi materi ini. Seperti namanya,
KhronosUnlitMaterials tidak diterangi dan tidak terpengaruh oleh pencahayaan scene. KhronosPbrMaterial memungkinkan Anda menyesuaikan berbagai properti, seperti warna kilau, seberapa metalik atau kasar objek, dan apakah objek tersebut memancarkan cahaya.
Untuk mengetahui informasi selengkapnya tentang setiap properti yang didukung dan parameter yang dapat disesuaikan di Android XR, lihat dokumentasi referensi kami. Untuk lebih memahami properti ini, lihat glosarium Khronos.

Untuk menyesuaikan properti materi model 3D, pertama-tama Anda akan membuat
materi baru menggunakan KhronosPbrMaterial. Anda harus menetapkan yang sesuai
AlphaMode untuk tampilan visual yang ingin dicapai:
val pbrMaterial = KhronosPbrMaterial.create( session = xrSession, alphaMode = AlphaMode.OPAQUE )
Selanjutnya, tentukan properti yang ingin diubah. Dalam contoh ini, kita menggunakan
setBaseColorFactor untuk mengubah warna dasar. Metode ini memerlukan Vector4, dengan komponen x, y, z, dan w masing-masing sesuai dengan nilai RGBA (Merah, Hijau, Biru, dan Alfa):
pbrMaterial.setBaseColorFactor( Vector4( x = 0.5f, y = 0.0f, z = 0.5f, w = 1.0f ) )
Membuat tekstur kustom untuk model 3D
A Texture adalah aset gambar yang dapat Anda terapkan ke permukaan model 3D
untuk memberikan warna, detail, atau informasi permukaan lainnya. Jetpack XR Texture API memungkinkan Anda memuat data gambar, seperti file PNG, dari folder /assets/ aplikasi secara asinkron.
Saat memuat tekstur, Anda dapat menentukan TextureSampler, yang mengontrol
cara tekstur dirender. Sampler menentukan properti pemfilteran (saat tekstur tampak lebih kecil atau lebih besar dari ukuran aslinya) dan mode wrapping (untuk menangani koordinat di luar rentang [0, 1] standar).
Objek Texture itu sendiri hanyalah data; objek tersebut harus ditetapkan ke Material agar memiliki efek visual pada model 3D.

Untuk membuat tekstur kustom, pertama-tama Anda harus menyimpan file gambar ke folder /assets/. Sebagai praktik terbaik, Anda mungkin juga ingin membuat subdirektori textures di folder tersebut.
Setelah menyimpan file di direktori yang sesuai, buat tekstur
dengan Texture API. Di sinilah Anda akan menerapkan opsional
TextureSampler jika diperlukan:
val texture = Texture.create( session = xrSession, path = Path("textures/texture_file.png") )
Selanjutnya, tentukan jenis tekstur dan tetapkan parameter yang sesuai. Dalam contoh ini, kita menerapkan tekstur oklusi dan menetapkan kekuatan:
pbrMaterial.setOcclusionTexture( texture = texture, strength = 1.0f )
Menerapkan materi dan tekstur ke objek 3D
Untuk menerapkan materi atau tekstur baru, ganti materi yang ada untuk node tertentu di node glTF. Lakukan hal ini dengan memanggil
setMaterialOverride di GltfModelNode:
gltfModelNode.setMaterialOverride( material = pbrMaterial )
Untuk menghapus materi yang baru dibuat, panggil clearMaterialOverride pada
node yang sebelumnya diganti di GltfModelNode. Tindakan ini akan mengembalikan Model 3D ke status default:
gltfModelNode.clearMaterialOverride()
glTF dan logo glTF adalah merek dagang dari Khronos Group Inc.