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

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.

Unduh file mask

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.

Sebelum crop

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.

Setelah crop

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

Tetapkan material oklusi pada setiap model. 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