Gambaran umum Penyajian Holografik
Penyajian holografik memungkinkan aplikasi Anda menggambar hologram di lokasi yang tepat di seluruh dunia di seluruh pengguna, baik itu ditempatkan secara tepat di dunia fisik atau dalam dunia virtual yang telah Anda buat. Hologram adalah objek yang terbuat dari suara dan cahaya. Penyajian memungkinkan aplikasi Anda untuk menambahkan cahaya.
Dukungan perangkat
Fitur | HoloLens (generasi pertama) | HoloLens 2 | Headset imersif |
Penyajian | ✔️ | ✔️ | ✔️ |
Penyajian Holografik
Kunci untuk penyajian holografik adalah mengetahui jenis perangkat apa yang digunakan. Perangkat dengan tampilan tembus cahaya, seperti HoloLens, menambahkan cahaya ke dunia. Piksel hitam sepenuhnya transparan, sementara piksel yang lebih cerah semakin buram. Karena cahaya dari layar ditambahkan ke cahaya dari dunia nyata, piksel putih tembus cahaya.
Meskipun penyajian stereoskopis memberikan satu isti kedalaman untuk hologram Anda, menambahkan efek grounding dapat membantu pengguna melihat lebih mudah permukaan hologram apa yang dekat. Salah satu teknik grounding adalah menambahkan cahaya di sekitar hologram di permukaan terdekat, dan kemudian merender bayangan terhadap cahaya ini. Dengan cara ini, bayangan Anda tampaknya mengurangi cahaya dari lingkungan. Suara spasial adalah isyarat kedalaman penting lainnya, memungkinkan pengguna beralasan tentang jarak dan lokasi relatif hologram.
Perangkat dengan layar buram, seperti Windows Mixed Reality headset imersif, memblokir dunia. Piksel hitam berwarna hitam pekat, dan warna lainnya muncul sebagai warna tersebut kepada pengguna. Aplikasi Anda bertanggung jawab untuk merender semua yang dilihat pengguna. Ini membuatnya lebih penting untuk mempertahankan laju refresh yang konstan sehingga pengguna memiliki pengalaman yang nyaman.
Parameter penyajian yang diprediksi
Headset realitas campuran (baik HoloLens maupun headset imersif) terus melacak posisi dan orientasi kepala pengguna relatif terhadap lingkungan mereka. Saat aplikasi Anda mulai menyiapkan bingkai berikutnya, sistem memprediksi di mana kepala pengguna akan berada di masa depan pada saat yang tepat ketika bingkai muncul di layar. Berdasarkan prediksi ini, sistem menghitung tampilan dan transformasi proyeksi yang akan digunakan untuk bingkai tersebut. Aplikasi Anda harus menggunakan transformasi ini untuk menghasilkan hasil yang benar. Jika transformasi yang disediakan sistem tidak digunakan, gambar yang dihasilkan tidak akan selaras dengan dunia nyata, yang menyebabkan ketidaknyamanan pengguna.
Catatan
Untuk memprediksi secara akurat kapan bingkai baru akan mencapai tampilan, sistem terus mengukur latensi end-to-end yang efektif dari alur penyajian aplikasi Anda. Meskipun sistem menyesuaikan dengan panjang alur penyajian Anda, Anda dapat meningkatkan stabilitas hologram dengan menjaga alur tersebut sesingkat mungkin.
Aplikasi yang menggunakan teknik lanjutan untuk menambah prediksi sistem dapat mengambil alih tampilan sistem dan transformasi proyeksi. Aplikasi ini masih harus menggunakan transformasi yang disediakan sistem sebagai dasar untuk transformasi kustom mereka untuk menghasilkan hasil yang bermakna.
Parameter penyajian lainnya
Saat merender bingkai, sistem menentukan viewport back-buffer tempat aplikasi Anda harus menggambar. Viewport ini sering kali lebih kecil dari ukuran penuh buffer bingkai. Apa pun ukuran viewport, setelah bingkai dirender oleh aplikasi, sistem meningkatkan skala gambar untuk mengisi keseluruhan tampilan.
Untuk aplikasi yang menemukan diri mereka tidak dapat merender pada kecepatan refresh yang diperlukan, parameter penyajian sistem dapat dikonfigurasi untuk mengurangi tekanan memori dan biaya penyajian dengan biaya peningkatan alias piksel. Format buffer belakang juga dapat diubah, yang untuk beberapa aplikasi dapat membantu meningkatkan bandwidth memori dan throughput piksel.
Frustum penyajian, resolusi, dan framerate di mana aplikasi Anda diminta untuk merender mungkin juga berubah dari bingkai ke bingkai, dan mungkin berbeda di seluruh mata kiri dan kanan. Misalnya, ketika mixed reality capture (MRC) aktif dan konfigurasi tampilan kamera foto/video tidak dipilih, satu mata mungkin dirender dengan FOV atau resolusi yang lebih besar.
Untuk bingkai tertentu, aplikasi Anda harus dirender menggunakan transformasi tampilan, transformasi proyeksi, dan resolusi viewport yang disediakan oleh sistem. Selain itu, aplikasi Anda tidak boleh berasumsi bahwa parameter penyajian atau tampilan apa pun tetap diperbaiki dari frame-to-frame. Mesin seperti Unity menangani semua transformasi ini untuk Anda di objek kamera mereka sendiri sehingga pergerakan fisik pengguna Anda dan status sistem selalu dihormati. Jika aplikasi Anda memungkinkan pergerakan virtual pengguna melalui dunia (misalnya menggunakan thumbstick pada gamepad), Anda dapat menambahkan objek rig induk di atas kamera yang memindahkannya. Hal ini menyebabkan kamera mencerminkan gerakan virtual dan fisik pengguna. Jika aplikasi Anda memodifikasi transformasi tampilan, transformasi proyeksi, atau dimensi viewport yang disediakan oleh sistem, aplikasi tersebut harus memberi tahu sistem dengan memanggil API penimpaan yang sesuai.
Untuk meningkatkan stabilitas penyajian holografik Anda, aplikasi Anda harus menyediakan untuk Windows setiap bingkai buffer kedalaman yang digunakan untuk penyajian. Jika aplikasi Anda menyediakan buffer kedalaman, aplikasi harus memiliki nilai kedalaman yang koheren, dengan kedalaman yang dinyatakan dalam meter dari kamera. Ini memungkinkan sistem untuk menggunakan data kedalaman per piksel Anda untuk menstabilkan konten dengan lebih baik jika kepala pengguna berakhir sedikit offset dari lokasi yang diprediksi. Jika Anda tidak dapat menyediakan buffer kedalaman, Anda dapat memberikan titik fokus dan normal, menentukan bidang yang memotong sebagian besar konten Anda. Jika buffer kedalaman dan bidang fokus disediakan, sistem mungkin menggunakan keduanya. Secara khusus, sangat membantu untuk menyediakan buffer kedalaman dan titik fokus yang mencakup vektor kecepatan saat aplikasi Anda menampilkan hologram yang bergerak.
Lihat artikel Penyajian di DirectX untuk detail tingkat rendah tentang topik ini.
Kamera Holografik
Windows Mixed Reality memperkenalkan konsep kamera holografik. Kamera Holografik mirip dengan kamera tradisional yang ditemukan dalam teks grafis 3D; mereka mendefinisikan properti ekstrinsik (posisi dan orientasi) dan kamera intrinsik. (Misalnya, bidang pandang digunakan untuk melihat adegan 3D virtual.) Tidak seperti kamera 3D tradisional, aplikasi ini tidak mengontrol posisi, orientasi, dan sifat intrinsik kamera. Sebaliknya, posisi dan orientasi kamera holografik secara implisit dikendalikan oleh pergerakan pengguna. Gerakan pengguna disampaikan ke aplikasi berdasarkan bingkai demi bingkai melalui transformasi tampilan. Demikian juga, properti intrinsik kamera didefinisikan oleh optik yang dikalibrasi perangkat dan bingkai demi bingkai yang disampaikan melalui transformasi proyeksi.
Secara umum, aplikasi Anda akan dirender untuk satu kamera stereo. Perulangan penyajian yang kuat akan mendukung beberapa kamera, dan akan mendukung kamera mono dan stereo. Misalnya, sistem mungkin meminta aplikasi Anda untuk merender dari perspektif alternatif ketika pengguna mengaktifkan fitur seperti mixed reality capture (MRC), tergantung pada bentuk headset. Aplikasi yang dapat mendukung beberapa kamera mendapatkannya dengan memilih untuk memilih jenis kamera yang dapat mereka dukung.
Penyajian volume
Saat merender MRI medis atau volume rekayasa dalam 3D, teknik penyajian volume sering digunakan. Teknik ini dapat menarik dalam realitas campuran, di mana pengguna dapat secara alami melihat volume seperti itu dari sudut kunci, hanya dengan menggerakkan kepala mereka.
Resolusi yang didukung pada HoloLens (generasi pertama)
- Ukuran viewport maks adalah properti dari HolographicDisplay. HoloLens diatur ke ukuran viewport maksimum, yaitu 720p (1268x720), secara default.
- Ukuran viewport dapat diubah dengan mengatur ViewportScaleFactor pada HolographicCamera. Faktor skala ini berada di kisaran 0 hingga 1.
- Ukuran viewport terendah yang didukung pada HoloLens (gen pertama) adalah 50% dari 720p, yaitu 360p (634x360). Ini adalah ViewportScaleFactor 0.5.
- Apa pun yang lebih rendah dari 540p tidak disarankan karena degradasi visual, tetapi dapat digunakan untuk mengidentifikasi hambatan dalam tingkat pengisian piksel.
Resolusi yang didukung pada HoloLens 2
- Ukuran target render yang didukung saat ini dan maksimum adalah properti dari konfigurasi tampilan. HoloLens 2 diatur ke ukuran target render maksimum, yaitu 1440x936, secara default.
- Aplikasi dapat mengubah ukuran buffer target render dengan memanggil metode RequestRenderTargetSize untuk meminta ukuran target render baru. Ukuran target render baru akan dipilih, yang memenuhi atau melebihi ukuran target render yang diminta. API ini mengubah ukuran buffer target render, yang memerlukan realokasi memori pada GPU. Implikasinya meliputi: Ukuran target render dapat diturunkan skalanya untuk mengurangi tekanan memori pada GPU, dan metode ini tidak boleh dipanggil pada frekuensi tinggi.
- Aplikasi masih dapat mengubah ukuran viewport dengan cara yang sama seperti yang mereka lakukan untuk HoloLens 1. Tidak ada realokasi memori tambahan pada GPU, sehingga dapat diubah pada frekuensi tinggi, tetapi tidak dapat digunakan untuk mengurangi tekanan memori pada GPU.
- Ukuran viewport terendah yang didukung pada HoloLens 2 adalah 634x412, ViewportScaleFactor sekitar 0,44 saat ukuran target render default sedang digunakan.
- Jika ukuran target render disediakan yang lebih kecil dari ukuran viewport terendah yang didukung, faktor skala viewport akan diabaikan.
- Apa pun yang lebih rendah dari 540p tidak disarankan karena degradasi visual, tetapi dapat digunakan untuk mengidentifikasi hambatan dalam tingkat pengisian piksel.