Kamera unity dalam adegan AR
Efek AR dalam Unity tidak dapat dipisahkan dari kamera. Melalui konten berikut, Anda akan memahami peran kamera dalam adegan AR, serta bagaimana sesi mengontrol properti kamera untuk memastikan pengalaman AR yang benar.
Sebelum memulai
- Pahami konsep dasar, komponen, dan alur kerja sesi melalui Pengantar ARSession.
Peran kamera dalam adegan AR
Kamera di Unity digunakan untuk menampilkan dunia game kepada pemain, dan dalam adegan AR, peran kamera menjadi lebih penting. Ini tidak hanya bertanggung jawab untuk merender konten virtual, tetapi juga perlu disejajarkan dengan dunia nyata untuk memastikan objek virtual ditumpangkan dengan benar pada adegan nyata.
Video ini menunjukkan adegan AR sederhana. Sisi kiri adalah tampilan
Scene, sisi kanan adalah tampilanGame. Video direkam menggunakan data simulasi dalam modePlayeditor Unity. KontenGameview sama dengan yang dilihat pengguna di ponsel di dunia nyata.Dapat dilihat bahwa dalam video ini, kamera yang mewakili pengguna (ikon kamera) akan bergerak sesuai pergerakan pengguna di dunia nyata. Kerucut putih menangkap lintasan posisi dan orientasi kamera selama periode waktu sebelumnya. Dalam tampilan
Game, kamera tidak hanya menampilkan konten virtual dari tampilanScene, tetapi juga menumpangkan gambar dunia nyata di bawah konten virtual, yang merupakan cara kerja khas kamera dalam adegan AR.
Untuk memastikan objek virtual ditumpangkan dengan benar pada adegan nyata, beberapa properti kamera perlu disesuaikan berdasarkan status operasi AR. Properti ini termasuk:
- Transform kamera (posisi dan orientasi)
- Bidang pandang kamera (FOV), rasio aspek (aspect ratio), dan matriks proyeksi
- Pengaturan culling kamera (GL.invertCulling)
Peringatan
Saat mengembangkan aplikasi, mengubah properti kamera sesi ini tidak didukung karena dapat menyebabkan konten virtual tidak sejajar dengan dunia nyata, sehingga memengaruhi pengalaman pengguna. Bahkan jika properti ini diubah melalui cara tertentu, sistem AR akan menimpa perubahan ini selama operasi, atau menyebabkan perilaku tak terduga karena ketidakkonsistenan data rendering dan perhitungan.
Berdasarkan objek yang mengontrol properti ini, kamera yang digunakan sesi dapat dibagi menjadi dua kategori: kamera yang dikendalikan sesi dan kamera yang tidak dikendalikan sesi.
Kamera yang dikendalikan oleh sesi
Jika kamera sesi tidak termasuk dalam sistem eksternal apa pun, seperti headset atau AR Foundation, maka sesi akan secara otomatis mengontrol properti kamera di atas untuk memastikan kamera sejajar dengan benar dengan dunia nyata.
Transform
Transform kamera (posisi dan orientasi) disesuaikan oleh sesi berdasarkan status operasi fungsi AR. Secara umum, sesi akan memperbarui posisi dan orientasi kamera berdasarkan data pelacakan gerakan dan/atau data pelacakan target, sehingga memastikan konten yang dilihat pengguna konsisten dengan konten dunia nyata.
Di Unity, titik referensi pusat untuk semua pelacakan AR disebut sebagai pusat sesi, dan aturan yang menentukan pusat ini selama operasi sesi disebut mode pusat. Dalam mode pusat yang berbeda, perilaku transform kamera berbeda:
Dalam mode pusat Camera, kamera dapat bergerak bebas.
Umumnya mode Camera jarang digunakan oleh aplikasi.
Dalam mode pusat lain (seperti FirstTarget), kamera tidak dapat bergerak bebas.
FirstTarget adalah mode yang digunakan sebagian besar aplikasi AR.
Peringatan
Nilai skala transform kamera harus selalu dipertahankan sebagai (1, 1, 1). Mengubah skala kamera dapat menyebabkan perilaku tak terduga.
Matriks proyeksi
Matriks proyeksi kamera akan diperbarui setiap frame oleh sesi berdasarkan parameter internal kamera fisik, untuk memastikan konten virtual ditumpangkan dengan benar pada adegan nyata.
Pengaturan culling
Pengaturan culling kamera (GL.invertCulling) akan disesuaikan berdasarkan pengaturan cermin sesi, untuk memastikan konten virtual dirender dengan benar pada adegan nyata.
Saat pengaturan kamera saat ini di HorizontalFlip sesuai dengan World, GL.invertCulling akan disetel ke true. Ini adalah konfigurasi default untuk kamera depan.
Aliran video latar belakang AR
Dalam adegan AR, kamera biasanya merender aliran video dari kamera fisik sebagai latar belakang untuk meningkatkan imersi pengguna. Sesi secara otomatis menangani pengambilan dan rendering aliran video, serta memastikan aliran video sejajar dengan benar dengan konten virtual.
Kamera yang tidak dikendalikan oleh sesi
Saat menggunakan headset dan AR Foundation, serta saat menerapkan IsCameraUnderControl sebagai false di FrameSource, sesi tidak akan mengontrol properti kamera di atas, melainkan sistem eksternal yang bertanggung jawab.
Peringatan
Meskipun dalam kasus ini sesi tidak mengontrol properti kamera, properti tersebut akan dikendalikan oleh sistem pihak ketiga (seperti SDK headset atau AR Foundation), dan mengubah properti ini selama pengembangan aplikasi masih tidak didukung.
Pertimbangan saat menyalin kamera
Terkadang mungkin perlu menyalin parameter kamera sesi ke kamera lain, dalam hal ini perhatikan dua poin tambahan:
- Waktu pengambilan properti: Saat menggunakan kamera terkontrol, perlu merujuk ke Mendapatkan hasil operasi sesi untuk mendapatkan parameter ini pada waktu yang tepat; saat menggunakan kamera yang tidak dikendalikan oleh sesi, perlu merujuk ke dokumentasi sistem pihak ketiga untuk mendapatkan pada waktu yang tepat.
- Bidang pandang kamera (FOV), rasio aspek (aspect ratio), dan matriks proyeksi: Perlu menggunakan Camera.projectionMatrix untuk mendapatkan matriks proyeksi kamera, dan menyalinnya ke kamera lain. Camera.fieldOfView dan Camera.aspect secara matematis adalah bagian dari matriks proyeksi, menggunakan Camera.fieldOfView dan Camera.aspect tidak memadai.
Langkah selanjutnya
- Baca Konfigurasi kamera untuk mempelajari cara mengonfigurasi kamera untuk pengalaman AR terbaik