Menggunakan EasyAR Mega di Unity untuk menerapkan occlusion
Occlusion adalah teknologi utama untuk meningkatkan immersion integrasi virtual dan real content dalam AR. Artikel ini menjelaskan cara menerapkan efek occlusion di Unity melalui EasyAR Mega.
Sebelum mulai
- Selesaikan Get started quickly with the EasyAR Mega Unity sample.
- Dapat membuat content yang align dengan real world.
Cara implementasi occlusion
Offline modeling: dalam Block coordinate system, buat geometry yang cocok 1:1 untuk entitas dunia nyata seperti wall, column, large equipment; atau dapatkan optimized model dengan cropping dan face reduction pada Block dense model.
Runtime alignment: saat runtime, align Block coordinate system dengan real space melalui cloud localization dan load geometry yang sesuai.
Material replacement: berikan occlusion material khusus pada geometry ini.
Visual effect: saat GPU merender virtual object lain, pixel pada bagian yang ter-occlude otomatis di-cull karena tidak lolos depth test, sehingga virtual object mengikuti occlusion logic dari physical space nyata.
Menggunakan file mask dari hasil mapping
Ikuti langkah berikut untuk mengunduh file mask dari hasil mapping melalui entri Mask file download di cloud localization database, menggunakannya sebagai white model untuk occlusion, lalu mengimpornya ke scene. File mask dapat langsung digunakan atau di-crop sesuai kebutuhan.
Catatan
Cara unduh ini hanya berlaku untuk hasil mapping versi 9.6 atau yang lebih baru.
Mengunduh file mask
Setelah Block ditambahkan ke cloud localization database, klik Mask file download pada kolom Action di baris Block tersebut.

Pada jendela popup, pilih standard precision atau low precision sesuai kebutuhan, lalu klik tombol Download yang sesuai untuk mengunduh file mask berformat glb.

[Opsional] Crop model
File mask mencakup seluruh Block. Jika cakupannya sudah memenuhi kebutuhan occlusion, gunakan langsung dan lewati langkah ini. Jika hanya sebagian area yang diperlukan, crop dengan langkah berikut.
Buka model yang diunduh dalam software pembuatan konten digital, misalnya Blender.

Crop model, sisakan hanya bagian yang diperlukan untuk occlusion, lalu simpan dalam format glb. Pertahankan position, rotation, dan scale model agar tetap sejajar dengan Block setelah diimpor ke Unity.

Mengimpor model ke Unity
Impor model ke Unity dan pasang di bawah node Block yang sesuai sebagai child node.
Catatan
Untuk mengimpor model glb ke Unity, instal paket com.unity.cloud.gltfast versi 6.8 atau lebih baru melalui Package Manager.
Di panel Inspector, ubah Transform model occlusion relatif terhadap node Block:
- Atur
Positionke(0, 0, 0). - Atur
Rotationke(0, 180, 0). - Atur
Scaleke(1, 1, 1).
Setelah selesai, model occlusion harus menempel pada bagian yang sesuai dari dense model Block.

Catatan
File mask yang diunduh dari cloud localization database memakai definisi sistem koordinat yang berbeda dari Unity, sehingga komponen Y pada Rotation perlu diatur ke 180 agar sejajar.
Memberi material occlusion pada model
Ubah material model menjadi material occlusion. Anda dapat menggunakan SpatialMappingOcclusion bawaan Unity.

Simulasikan dengan data EIF atau jalankan di perangkat nyata
Gunakan simulasi data EIF atau perangkat nyata untuk memeriksa apakah objek virtual terhalang oleh area nyata yang sesuai.
Menggunakan geometry sebagai occlusion
Ikuti langkah berikut untuk menambahkan geometry yang digunakan sebagai occlusion dalam scene dan memverifikasi efeknya.
Menempatkan occlusion geometry
Berdasarkan dense model Mega Block, gunakan built-in geometry atau custom geometry sebagai occlusion dan tempatkan pada posisi yang benar dalam Block coordinate system.

[Optional] Fine-tune posisi geometry berdasarkan panorama

Memberikan occlusion material pada geometry
Ubah material geometry menjadi occlusion material. Anda dapat menggunakan bawaan Unity SpatialMappingOcclusion.

Simulate running dengan EIF data atau run pada real device
Fine-tune placement occlusion model berdasarkan running effect.
Menggunakan dense model yang di-crop dan dikurangi face sebagai occlusion
Ikuti langkah berikut untuk crop dan reduce exported Mega Block dense model agar memperoleh white model untuk occlusion, lalu import ke scene sebagai occlusion.
Export di Mega Blocks
Klik tombol Export di kanan Mesh untuk export dense model.

Modifikasi export options
Saat export, perhatikan untuk mengubah export options.
Pada gambar, 1 adalah LOD level. Semakin rendah level, semakin sederhana model dan semakin sedikit face. Jika membutuhkan precision tertinggi, pilih level tertinggi.
Pada gambar, 2 adalah texture export option. Di sini hanya diperlukan white model sebagai occlusion, sehingga texture tidak diperlukan.
Crop dan reduce model
Crop dan reduce exported model dalam digital content creation software, misalnya Blender, lalu simpan sebagai glb.
Kiat
Contoh menggunakan Decimate Modifier dari Blender.

Setelah cropping dan reduction:

Import occlusion model ke Unity dan mount di bawah Block node dalam scene

Modifikasi Transform model
Ubah Transform model agar Position dan Rotation semuanya menjadi 0.
Pada saat ini, white model untuk occlusion harus pas dengan dense model, karena operasi cropping dan reduction dalam digital content creation software tidak mengubah definisi Block coordinate system.

Memberikan occlusion material pada model
Ubah material model menjadi occlusion material. Anda dapat menggunakan bawaan Unity SpatialMappingOcclusion.

Simulate running dengan EIF data atau run pada real device
Gunakan EIF data untuk simulate running atau run pada real device untuk melihat efek.
Ekspektasi efek occlusion
Efek occlusion terutama dipengaruhi oleh beberapa hal berikut:
- Accuracy localization tracking itu sendiri
- Accuracy placement model
- Accuracy model itu sendiri, jika bukan simple geometry
Saat localization drift terjadi, misalignment beberapa centimeter adalah normal.
Occlusion model dengan face terlalu banyak mudah memengaruhi performance. Disarankan hanya digunakan pada area yang diperlukan dan sebisa mungkin menggunakan simple geometry sebagai occlusion.


