Menyesuaikan model 3D di aplikasi Anda

Perangkat XR yang kompatibel
Panduan ini membantu Anda membangun pengalaman untuk jenis perangkat XR ini.
Headset XR
Kacamata XR Berkabel

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.

Contoh mengubah warna dasar pada model 3D

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.

Contoh mengubah tekstur 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.