Ketika Anda mengenakan headset realitas campuran, itu menjadi pusat dunia holografik Anda. Komponen Unity Camera akan secara otomatis menangani penyajian stereoskopis dan mengikuti gerakan dan rotasi kepala Anda. Namun, untuk sepenuhnya mengoptimalkan kualitas visual dan stabilitas hologram, Anda harus mengatur pengaturan kamera yang dijelaskan di bawah ini.
Headset imersif HoloLens vs VR
Pengaturan default pada komponen Unity Camera adalah untuk aplikasi 3D tradisional, yang memerlukan latar belakang seperti skybox karena tidak memiliki dunia nyata.
Saat berjalan pada headset imersif, Anda merender semua yang dilihat pengguna, sehingga Anda mungkin ingin menyimpan skybox.
Namun, ketika berjalan pada headset holografik seperti HoloLens, dunia nyata harus muncul di belakang semua yang dirender kamera. Atur latar belakang kamera menjadi transparan (di HoloLens, render hitam sebagai transparan) alih-alih tekstur Skybox:
Pilih Kamera Utama di panel Hierarki
Di panel Pemeriksa, temukan komponen Kamera dan ubah dropdown Hapus Bendera dari Skybox ke Warna Solid
Pilih pemilih warna Latar Belakang dan ubah nilai RGBA menjadi (0, 0, 0, 0)
Jika mengatur ini dari kode, Anda dapat menggunakan Unity Color.clear
Untuk memeriksa ke buram kamera, sistem MixedRealityCamera memiliki IsOpaque properti .
CoreServices.CameraSystem.IsOpaque;
Namespace:UnityEngine.XR Jenis:XRDisplaySubsystem
Anda dapat menggunakan kode skrip untuk menentukan pada runtime apakah headset imersif atau holografik dengan memeriksa displayOpaque pada XRDisplaySubsystem yang berjalan secara aktif.
Anda dapat menggunakan kode skrip untuk menentukan pada runtime apakah headset imersif atau holografik dengan memeriksa HolographicSettings.IsDisplayOpaque.
Penyiapan kamera
Apa pun pengalaman yang Anda kembangkan, Kamera Utama selalu merupakan komponen penyajian stereo utama yang terpasang pada layar yang dipasang di kepala perangkat Anda. Akan lebih mudah untuk menjabarkan aplikasi Anda jika Anda membayangkan posisi awal pengguna sebagai (X: 0, Y: 0, Z: 0). Karena Kamera Utama melacak pergerakan kepala pengguna, posisi awal pengguna dapat diatur dengan mengatur posisi awal Kamera Utama.
Pilihan utama yang perlu Anda buat adalah apakah Anda mengembangkan untuk Headset imersif HoloLens atau VR. Setelah Anda mendapatkannya, lewati ke bagian penyiapan mana pun yang berlaku.
Penyiapan kamera HoloLens
Untuk aplikasi HoloLens, Anda perlu menggunakan jangkar untuk objek apa pun yang ingin Anda kunci ke lingkungan adegan. Sebaiknya gunakan ruang yang tidak terbatas untuk memaksimalkan stabilitas dan membuat jangkar di beberapa kamar.
Ikuti tutorial langkah demi langkah ini untuk menambahkan dan mengonfigurasi Mixed Reality Toolkit secara otomatis di proyek Unity Anda. Dimungkinkan juga untuk bekerja langsung dengan kelas MixedRealityPlayspace dari MRTK untuk Unity dan mengatur Skala Target ke Dunia:
MRTK harus menangani posisi ruang bermain dan kamera secara otomatis, tetapi ada baiknya untuk memeriksa kembali:
Dari panel Hierarki , perluas MixedRealityPlayspace GameObject dan temukan objek anak Kamera Utama
Di panel Inspektur , temukan komponen Transformasi dan ubah Posisi menjadi (X: 0, Y: 0, Z: 0)
xrInputSubsystem.TrySetTrackingOriginMode(TrackingOriginModeFlags.Device);
xrInputSubsystem.TrySetTrackingOriginMode(TrackingOriginModeFlags.Unbounded); // Recommendation for OpenXR
Anda dapat menggunakan ARSession untuk aplikasi HoloLens, yang berfungsi lebih baik dengan jangkar dan ARKit/ARCore.
Penting
Sesi AR dan fitur terkait memerlukan AR Foundation terinstal.
Anda juga dapat menerapkan perubahan kamera secara manual tanpa menggunakan ARSession:
Pilih Kamera Utama di panel Hierarki
Di panel Inspektur , temukan komponen Transformasi dan ubah Posisi menjadi (X: 0, Y: 0, Z: 0)
Kamera di panel Pemeriksa di Unity
Menambahkan TrackedPoseDriver ke Kamera Utama
Pilih Kamera Utama di panel Hierarki
Di panel Inspektur , temukan komponen Transformasi dan ubah Posisi menjadi (X: 0, Y: 0, Z: 0)
Kamera di panel Pemeriksa di Unity
Masuk ke bagian Pengaturan Lain dari Pengaturan Pemutar Penyimpanan Windows
Pilih Windows Mixed Reality sebagai perangkat, yang mungkin terdaftar sebagai Holografik Windows di versi Unity yang lebih lama
Pilih Realitas Virtual yang Didukung
Karena objek Kamera Utama secara otomatis ditandai sebagai kamera, Unity mendukung semua gerakan dan terjemahan.
Catatan
Pengaturan ini perlu diterapkan ke Kamera di setiap adegan aplikasi Anda.
Secara default, ketika Anda membuat adegan baru di Unity, adegan tersebut akan berisi Main Camera GameObject dalam Hierarki yang mencakup komponen Kamera, tetapi mungkin tidak memiliki pengaturan yang diterapkan dengan benar.
Penyiapan kamera VR
Windows Mixed Reality mendukung aplikasi di berbagai skala pengalaman, dari aplikasi khusus orientasi dan skala duduk melalui aplikasi skala kamar. Di HoloLens, Anda dapat melangkah lebih jauh dan membangun aplikasi skala dunia yang memungkinkan pengguna berjalan melebihi 5 meter, menjelajahi seluruh lantai gedung dan seterusnya.
Langkah pertama Anda dalam membangun pengalaman realitas campuran di Unity adalah menentukan skala pengalaman mana yang akan ditargetkan aplikasi Anda:
Jika Anda membangun untuk HL2, sebaiknya buat pengalaman tingkat mata, atau pertimbangkan untuk menggunakan Scene Understanding untuk alasan tentang lantai adegan Anda.
Masuk ke bagian Pengaturan Lain dari Pengaturan Pemutar Penyimpanan Windows
Pilih Windows Mixed Reality sebagai perangkat, yang mungkin terdaftar sebagai Holografik Windows di versi Unity yang lebih lama
Pilih Realitas Virtual yang Didukung
Karena objek Kamera Utama secara otomatis ditandai sebagai kamera, Unity mendukung semua gerakan dan terjemahan.
Catatan
Pengaturan ini perlu diterapkan ke Kamera di setiap adegan aplikasi Anda.
Secara default, ketika Anda membuat adegan baru di Unity, adegan tersebut akan berisi Main Camera GameObject dalam Hierarki yang mencakup komponen Kamera, tetapi tidak memiliki pengaturan di bawah ini yang diterapkan dengan benar.
Namespace:UnityEngine.XR Jenis:XRDevice
Untuk pengalaman skala berdiri atau skala kamar, Anda harus menempatkan konten relatif terhadap lantai. Alasan Anda tentang lantai pengguna menggunakan tahap spasial, yang mewakili asal tingkat lantai dan batas ruang opsional yang ditentukan pengguna, disiapkan selama eksekusi pertama.
Untuk memastikan bahwa Unity beroperasi dengan sistem koordinat dunianya di tingkat lantai, Anda dapat mengatur dan menguji bahwa Unity menggunakan jenis ruang pelacakan RoomScale:
if (XRDevice.SetTrackingSpaceType(TrackingSpaceType.RoomScale))
{
// RoomScale mode was set successfully. App can now assume that y=0 in Unity world coordinate represents the floor.
}
else
{
// RoomScale mode was not set successfully. App cannot make assumptions about where the floor plane is.
}
Jika SetTrackingSpaceType mengembalikan true, Unity telah berhasil mengalihkan sistem koordinat dunianya untuk melacak bingkai tahap referensi.
Jika SetTrackingSpaceType mengembalikan false, Unity tidak dapat beralih ke bingkai tahap referensi, kemungkinan karena pengguna belum menyiapkan lantai di lingkungan mereka. Meskipun nilai pengembalian palsu tidak umum, itu dapat terjadi jika tahap disiapkan di ruang yang berbeda dan perangkat dipindahkan ke ruang saat ini tanpa pengguna menyiapkan tahap baru.
Setelah aplikasi Anda berhasil mengatur jenis ruang pelacakan RoomScale, konten yang ditempatkan di bidang y=0 akan muncul di lantai. Asal pada 0, 0, 0 akan menjadi tempat khusus di lantai tempat pengguna berdiri selama pengaturan kamar, dengan -Z mewakili arah ke depan yang mereka hadapi selama pengaturan.
Masuk ke bagian Pengaturan Lain dari Pengaturan Pemutar Penyimpanan Windows
Pilih Windows Mixed Reality sebagai perangkat, yang mungkin terdaftar sebagai Holografik Windows di versi Unity yang lebih lama
Pilih Realitas Virtual yang Didukung
Karena objek Kamera Utama secara otomatis ditandai sebagai kamera, Unity mendukung semua gerakan dan terjemahan.
Catatan
Pengaturan ini perlu diterapkan ke Kamera di setiap adegan aplikasi Anda.
Secara default, ketika Anda membuat adegan baru di Unity, adegan tersebut akan berisi Main Camera GameObject dalam Hierarki yang mencakup komponen Kamera, tetapi tidak memiliki pengaturan di bawah ini yang diterapkan dengan benar.
Namespace:UnityEngine.XR Jenis:XRDevice
Untuk membangun pengalaman skala orientasi-saja atau seated, Anda perlu mengatur Unity ke jenis ruang pelacakan stasioner. Ruang pelacakan stasioner mengatur sistem koordinat dunia Unity untuk melacak bingkai referensi stasioner. Dalam mode Pelacakan stasioner, konten yang ditempatkan di editor tepat di depan lokasi default kamera (forward is -Z) akan muncul di depan pengguna saat aplikasi diluncurkan.
Untuk pengalaman orientasi murni saja seperti penampil video 360 derajat (di mana pembaruan kepala posisional akan merusak ilusi), Anda kemudian dapat mengatur XR. InputTracking.disablePositionalTracking ke true:
InputTracking.disablePositionalTracking = true;
Untuk pengalaman skala duduk, untuk membiarkan pengguna kemudian memberi tahu pengguna asal yang duduk, Anda dapat memanggil XR. Metode InputTracking.Recenter:
InputTracking.Recenter();
Jika Anda membangun pengalaman berskala duduk, Anda dapat memposisikan kembali asal dunia Unity di posisi kepala pengguna saat ini dengan memanggil XR. Metode InputTracking.Recenter .
Menyiapkan latar belakang kamera
Jika Anda menggunakan MRTK, latar belakang kamera secara otomatis dikonfigurasi dan dikelola. Untuk proyek XR SDK atau Legacy WSA, sebaiknya atur latar belakang kamera menjadi hitam pekat di HoloLens dan pertahankan skybox untuk VR.
Menggunakan beberapa kamera
Ketika ada beberapa komponen Kamera dalam adegan, Unity tahu kamera mana yang akan digunakan untuk penyajian stereoskopis berdasarkan GameObject mana yang memiliki tag MainCamera. Di XR warisan, ia juga menggunakan tag ini untuk menyinkronkan pelacakan kepala. Di XR SDK, pelacakan kepala didorong oleh skrip TrackedPoseDriver yang terpasang pada kamera.
Berbagi buffer kedalaman
Berbagi buffer kedalaman aplikasi Anda ke Windows setiap bingkai akan memberi aplikasi Anda salah satu dari dua peningkatan dalam stabilitas hologram, berdasarkan jenis headset yang Anda render untuk:
Headset imersif VR dapat mengurus proyeksi ulang posisional ketika buffer kedalaman disediakan, menyesuaikan hologram Anda untuk kesalahan prediksi dalam posisi dan orientasi.
Headset HoloLens memiliki beberapa metode yang berbeda. HoloLens 1 akan secara otomatis memilih titik fokus ketika buffer kedalaman disediakan, mengoptimalkan stabilitas hologram di sepanjang bidang yang paling berpotongan konten. HoloLens 2 akan menstabilkan konten menggunakan Depth LSR (lihat Remarks).
Dialog konfigurasi MRTK akan mencoba mengatur pengaturan buffer kedalaman untuk XR SDK dan WSA warisan, tetapi ada baiknya untuk memeriksa tab tersebut dan memverifikasi pengaturan di Unity.
Untuk mengatur apakah aplikasi Unity Anda akan memberikan buffer kedalaman ke Windows:
Buka Edit>Pengaturan>Proyek XR Plug-in Management dan pastikan item menu diperluas.
Klik item menu yang sesuai dengan runtime XR yang Anda pilih, baik Windows Mixed Reality atau OpenXR. Selain itu, pastikan platform build yang benar dipilih, karena tab untuk Windows Standalone dan Platform Windows Universal tersedia.
Untuk mengaktifkan dan mengonfigurasi:
Untuk OpenXR, pilih format kedalaman atau "Tidak Ada" di menu dropdown Mode Pengiriman Kedalaman.
Untuk Windows Mixed Reality, centang atau hapus centang pada kotak centang Buffer Kedalaman Bersama. Kemudian, pilih format dari menu dropdown Format Buffer Kedalaman.
Catatan
Umumnya disarankan untuk menggunakan buffer kedalaman 16 bit untuk meningkatkan performa. Namun, jika menggunakan format kedalaman 16-bit, buffer stensil memerlukan efek (seperti beberapa panel gulir UI Unity) tidak akan berfungsi karena Unity tidak membuat buffer stensil dalam pengaturan ini. Memilih format kedalaman 24-bit secara sebaliknya akan membuat buffer stensil 8-bit jika berlaku pada platform grafis titik akhir.
Untuk mengatur apakah aplikasi Unity Anda akan memberikan buffer kedalaman ke Windows:
Buka Edit>Pemutar> Pengaturan>Proyek Platform Windows Universal tab>Pengaturan XR.
Perluas item Windows Mixed Reality SDK.
Centang atau hapus centang pada kotak centang Aktifkan Berbagi Buffer Kedalaman. Aktifkan Berbagi Buffer Kedalaman dicentang secara default dalam proyek baru, tetapi mungkin telah tidak dicentang secara default dalam proyek yang lebih lama.
Buffer kedalaman dapat meningkatkan kualitas visual selama Windows dapat secara akurat memetakan nilai kedalaman per piksel yang dinormalisasi di buffer kedalaman Anda kembali ke jarak dalam meter, menggunakan bidang dekat dan jauh yang telah Anda tetapkan di Unity pada kamera utama. Jika render Anda meneruskan nilai kedalaman dengan cara umum, Anda umumnya harus baik-baik saja di sini, meskipun render tembus yang menulis ke buffer kedalaman sambil menunjukkan hingga piksel warna yang ada dapat membingungkan proyeksi ulang. Jika Anda tahu bahwa pass render Anda akan meninggalkan banyak piksel kedalaman akhir Anda dengan nilai kedalaman yang tidak akurat, Anda kemungkinan akan mendapatkan kualitas visual yang lebih baik dengan menghapus centang "Aktifkan Berbagi Buffer Kedalaman".
Catatan
Umumnya disarankan untuk menggunakan buffer kedalaman 16 bit untuk meningkatkan performa. Namun, jika menggunakan format kedalaman 16-bit, buffer stensil memerlukan efek (seperti beberapa panel gulir UI Unity) tidak akan berfungsi karena Unity tidak membuat buffer stensil dalam pengaturan ini. Memilih format kedalaman 24-bit secara sebaliknya akan membuat buffer stensil 8-bit jika berlaku pada platform grafis titik akhir.
Menggunakan bidang kliping
Merender konten yang terlalu dekat dengan pengguna bisa tidak nyaman dalam realitas campuran. Anda dapat menyesuaikan bidang klip dekat dan jauh pada komponen Kamera.
Pilih Kamera Utama di panel Hierarki
Di panel Pemeriksa, temukan Komponen Kamera Mengklip Bidang dan ubah kotak teks Dekat dari 0,3 menjadi 0,85. Konten yang dirender lebih dekat dapat menyebabkan ketidaknyamanan pengguna dan harus dihindari sesuai pedoman jarak render.
MRTK menyediakan sistem teleport dalam kotak yang secara otomatis bekerja di seluruh tangan dan pengontrol artikulasi.
Sebaiknya gunakan implementasi teleportasi MRTK.
Jika Anda memilih untuk tidak menggunakan MRTK, Unity menyediakan implementasi teleportasi di XR Interaction Toolkit.
Jika Anda memilih untuk mengimplementasikan sendiri, ada baiknya untuk diingat bahwa Anda tidak dapat memindahkan kamera secara langsung. Karena kontrol Unity terhadap kamera untuk pelacakan kepala, Anda harus memberi kamera induk dalam hierarki dan memindahkan GameObject tersebut sebagai gantinya. Ini setara dengan Playspace MRTK.
Sebaiknya gunakan implementasi teleportasi MRTK.
Jika Anda memilih untuk mengimplementasikan sendiri, ada baiknya untuk diingat bahwa Anda tidak dapat memindahkan kamera secara langsung. Karena kontrol Unity terhadap kamera untuk pelacakan kepala, Anda harus memberi kamera induk dalam hierarki dan memindahkan GameObject tersebut sebagai gantinya. Ini setara dengan Playspace MRTK.
Mode projeksi ulang
Baik HoloLens maupun headset imersif akan memproyeksikan ulang setiap bingkai yang dirender aplikasi Anda untuk menyesuaikan kesalahan posisi head pengguna yang sebenarnya saat foton dipancarkan.
Secara default:
Headset imersif VR akan mengurus proyeksi ulang posisi jika aplikasi menyediakan buffer kedalaman untuk bingkai tertentu. Headset imersif juga akan menyesuaikan hologram Anda untuk kesalahan prediksi dalam posisi dan orientasi. Jika buffer kedalaman tidak disediakan, sistem hanya akan memperbaiki kesalahan pemahaman dalam orientasi.
Headset Holografik seperti HoloLens 2 akan mengurus proyeksi ulang posisional apakah aplikasi menyediakan buffer kedalamannya atau tidak. Proyeksi ulang posisional dimungkinkan tanpa buffer kedalaman pada HoloLens karena penyajian sering kali jarang dengan latar belakang stabil yang disediakan oleh dunia nyata.
Misalnya, jika Anda membangun pengalaman orientasi-saja dengan konten yang dikunci tubuh yang kaku (misalnya, konten video 360 derajat), Anda dapat secara eksplisit mengatur mode proyeksi ulang ke orientasi hanya dengan mengaturnya ke ReprojectionMode.OrientationOnly.
Misalnya, jika Anda membangun pengalaman orientasi-saja dengan konten yang dikunci tubuh yang kaku (misalnya, konten video 360 derajat), Anda dapat secara eksplisit mengatur mode reprojeksi ke orientasi hanya dengan mengaturnya ke HolographicReprojectionMode.OrientationOnly.
Titik Pemeriksaan Pengembangan Berikutnya
Jika Anda mengikuti perjalanan pengembangan Unity yang telah kami susun, Anda berada di tengah-tengah menjelajahi blok bangunan inti MRTK. Dari sini, Anda dapat melanjutkan ke blok penyusun berikutnya: