Table of Contents

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

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.

Entri unduh file mask

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

Unduh file mask

[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.

Sebelum crop

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.

Setelah crop

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 Position ke (0, 0, 0).
  • Atur Rotation ke (0, 180, 0).
  • Atur Scale ke (1, 1, 1).

Setelah selesai, model occlusion harus menempel pada bagian yang sesuai dari dense model Block.

Impor model occlusion

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.

Ganti material model occlusion

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. Place occlusion geometry

[Optional] Fine-tune posisi geometry berdasarkan panorama

Fine-tune occlusion according to the panorama

Memberikan occlusion material pada geometry

Ubah material geometry menjadi occlusion material. Anda dapat menggunakan bawaan Unity SpatialMappingOcclusion. Fine-tune occlusion according to the panorama

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.

Before cropping

Setelah cropping dan reduction:

After cropping

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

Import occlusion model

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.

Occlusion model fit

Memberikan occlusion material pada model

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

Replace occlusion model material

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.

Topik terkait