Setelah menambahkan model 3D ke aplikasi, Anda dapat meningkatkan pengalaman visual dengan menentukan properti materi kustom dan menerapkan tekstur ke objek. Sistem materi Jetpack XR didasarkan pada spesifikasi glTF™ 2.0, dan model 3D dirender menggunakan physically-based rendering (PBR). Ini adalah standar terbuka yang dikelola oleh Khronos Group.
Atribut materi dapat disesuaikan selama runtime untuk mengubah tampilan objek secara dinamis berdasarkan input pengguna atau status aplikasi saat ini.
Untuk mengetahui detail 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.
Menyesuaikan properti materi model 3D Anda
Material menentukan serangkaian properti visual untuk permukaan objek dan menentukan cara permukaan tersebut berinteraksi dengan cahaya dalam adegan.
Di Jetpack XR, class KhronosPbrMaterial dan KhronosUnlitMaterial
digunakan untuk membuat dan memanipulasi materi ini. Seperti namanya,
KhronosUnlitMaterials tidak diterangi dan tidak terpengaruh oleh pencahayaan
adegan. KhronosPbrMaterial memungkinkan Anda menyesuaikan berbagai properti, seperti warna kilau, seberapa metalik atau kasar suatu objek, dan apakah objek tersebut memancarkan cahaya.

Untuk menyesuaikan properti materi model 3D, pertama-tama Anda akan membuat materi baru menggunakan KhronosPbrMaterial. Anda harus menyetel
AlphaMode yang sesuai untuk tampilan visual yang ingin Anda capai:
val pbrMaterial = KhronosPbrMaterial.create( session = xrSession, alphaMode = AlphaMode.OPAQUE )
Selanjutnya, tentukan properti yang ingin Anda ubah. 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 = 0.0f ) )
Membuat tekstur kustom untuk model 3D Anda
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 Anda 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 pembungkusan (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, Anda harus menyimpan file gambar ke folder /assets/ terlebih dahulu. Sebagai praktik terbaik, Anda sebaiknya membuat subdirektori textures
di folder tersebut juga.
Setelah Anda menyimpan file di direktori yang sesuai, buat tekstur dengan API Texture. Di sini juga Anda akan menerapkan
TextureSampler opsional 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 menyetel kekuatan:
pbrMaterial.setOcclusionTexture( texture = texture, strength = 1.0f )
Menerapkan material dan tekstur ke objek 3D
Untuk menerapkan materi atau tekstur baru, ganti materi yang ada untuk node tertentu pada entitas glTF Anda. Lakukan hal ini dengan memanggil
setMaterialOverride di GltfModelEntity:
gltfModelEntity.setMaterialOverride( material = pbrMaterial, nodeName = "Node Name" )
Untuk menghapus materi yang baru dibuat, panggil clearMaterialOverride di
node yang sebelumnya diganti pada GltfModelEntity Anda. Tindakan ini akan mengembalikan Model 3D Anda ke status defaultnya:
gltfModelEntity.clearMaterialOverride( nodeName = "Node Name" )
glTF dan logo glTF adalah merek dagang dari Khronos Group Inc.