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.

Di jendela dialog, pilih presisi standar atau rendah sesuai kebutuhan, lalu klik tombol Unduh untuk mengunduh arsip berkas mask (zip). Ekstrak arsip untuk memperoleh berkas model.

Catatan
Arsip dapat berisi satu atau beberapa berkas model glb. Beberapa model dapat diimpor ke Unity secara terpisah atau digabungkan terlebih dahulu dalam perangkat lunak seperti Blender.
[Opsional] Crop model
Model yang diunduh bersama-sama mencakup seluruh Block. Untuk menyembunyikan seluruh Block, lewati langkah ini dan langsung impor ke Unity. Untuk sebagian area saja, pangkas model dengan langkah berikut.
Impor berkas model hasil ekstraksi ke perangkat lunak pembuatan konten digital seperti Blender.

Pangkas model, sisakan bagian yang diperlukan untuk oklusi, lalu ekspor sebagai glb. Jika ada beberapa model, gabungkan bila perlu sebelum mengekspor. Pertahankan posisi, orientasi, dan ukuran model dalam sistem koordinat Block agar tetap sejajar setelah diimpor ke Unity.

Mengimpor model ke Unity
Impor model ke Unity sebagai anak dari node Block yang sesuai dalam adegan. Jika ada beberapa model, impor masing-masing dan pasang semuanya pada node Block yang sama.
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 setiap model oklusi untuk mengatur posisi, rotasi, dan skala 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
Tetapkan material oklusi pada setiap model. 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.


