Pengambilan realitas campuran untuk pengembang (DirectX)
Catatan
Lihat Render dari kamera PV di bawah ini untuk panduan tentang kemampuan MRC baru untuk HoloLens 2.
Sebelum memulai di sini, kami sarankan Anda melihat artikel gambaran umum pengambilan realitas campuran kami.
Render dari kamera PV (keikutsertaan)
HoloLens 2 menambahkan kemampuan untuk aplikasi imersif untuk dirender dari kamera PV saat pengambilan realitas campuran berjalan. Untuk memastikan aplikasi mendukung render tambahan dengan benar, aplikasi harus ikut serta dalam fungsionalitas ini.
Render dari kamera PV menawarkan peningkatan berikut atas pengalaman MRC default:
- Penyelarasan hologram ke lingkungan fisik dan tangan Anda untuk interaksi dekat harus akurat di semua jarak. Hindari memiliki offset pada jarak selain titik fokus seperti yang mungkin Anda lihat di MRC default.
- Mata kanan dalam headset tidak akan disusupi, karena tidak akan digunakan untuk merender hologram untuk output MRC.
Ada tiga langkah untuk mengaktifkan penyajian dari kamera PV:
- Mengaktifkan PhotoVideoCamera HolographicViewConfiguration
- Menangani render HolographicCamera tambahan
- Verifikasi shader dan kode Anda render dengan benar dari HolographicCamera tambahan ini
Mengaktifkan PhotoVideoCamera HolographicViewConfiguration di DirectX
Untuk ikut serta dalam penyajian dari Kamera PV, aplikasi hanya mengaktifkan HolographicViewConfiguration PhotoVideoCamera:
var display = Windows.Graphics.Holographic.HolographicDisplay.GetDefault();
var view = display.TryGetViewConfiguration(Windows.Graphics.Holographic.HolographicViewConfigurationKind.PhotoVideoCamera);
if (view != null)
{
view.IsEnabled = true;
}
Menangani render HolographicCamera tambahan di DirectX
Ketika aplikasi memiliki keikutsertaan untuk dirender dari kamera PV dan pengambilan realitas campuran dimulai:
- Peristiwa CameraAdded HolographicSpace akan diaktifkan. Kejadian ini dapat ditangguhkan jika aplikasi tidak dapat menangani kamera saat ini.
- Setelah peristiwa selesai tanpa penundaan yang luar biasa, HolographicCamera akan muncul dalam daftar AddedCameras HolographicFrame berikutnya.
Ketika pengambilan realitas campuran berhenti (atau jika aplikasi menonaktifkan konfigurasi tampilan saat pengambilan realitas campuran berjalan): HolographicCamera akan muncul di daftar RemovedCameras HolographicFrame berikutnya dan peristiwa CameraRemoved HolographicSpace akan diaktifkan.
Properti ViewConfiguration telah ditambahkan ke HolographicCamera untuk membantu mengidentifikasi konfigurasi milik kamera.
Memverifikasi shader dan kode mendukung kamera tambahan
Jalankan pengambilan realitas campuran dan periksa perataan yang tidak biasa, konten yang hilang, atau masalah performa. Perbarui shader dan kode yang sesuai.
Jika ada adegan tertentu yang tidak dapat mendukung penyajian ke kamera tambahan, Anda dapat menonaktifkan HolographicViewConfiguration PhotoVideoCamera.
Menonaktifkan MRC di aplikasi Anda
Aplikasi 2D
Aplikasi 2D dapat memilih untuk mengaburkan konten visual mereka saat pengambilan realitas campuran berjalan dengan:
- Sajikan dengan bendera DXGI_PRESENT_RESTRICT_TO_OUTPUT
- Membuat rantai pertukaran aplikasi dengan bendera DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED
- Dengan Pembaruan Windows 10 Mei 2019, atur IsScreenCaptureEnabled ApplicationView
Aplikasi imersif
Aplikasi imersif dapat memilih untuk mengecualikan konten visual mereka dari pengambilan realitas campuran dengan:
- Mengatur IsContentProtectionEnabled dari HolographicCameraRenderingParameter untuk menonaktifkan pengambilan realitas campuran untuk bingkai terkait
- Mengatur IsHardwareContentProtectionEnabled dari HolographicCamera untuk menonaktifkan pengambilan realitas campuran untuk kamera holografik terkait
Keyboard Kata Sandi
Dengan Pembaruan Windows 10 Mei 2019, konten visual secara otomatis dikecualikan dari pengambilan realitas campuran saat kata sandi atau papan ketik pin terlihat.
Mengetahui kapan MRC aktif
Kelas AppCapture dapat digunakan oleh aplikasi untuk mengetahui kapan pengambilan realitas campuran sistem berjalan (untuk audio atau video).
Catatan
GetForCurrentView API AppCapture dapat mengembalikan null jika pengambilan realitas campuran tidak tersedia di perangkat. Penting juga untuk membatalkan pendaftaran peristiwa CapturingChanged saat aplikasi Anda ditangguhkan, jika tidak, MRC dapat masuk ke status diblokir.
Mengintegrasikan fungsionalitas MRC dari dalam aplikasi Anda
Aplikasi realitas campuran Anda dapat memulai pengambilan foto atau video MRC dari dalam aplikasi, dan konten yang diambil tersedia untuk aplikasi Anda tanpa disimpan ke "Rol kamera" perangkat. Anda dapat membuat perekam MRC kustom atau memanfaatkan UI pengambilan kamera bawaan.
MRC dengan UI kamera bawaan
Pengembang dapat menggunakan CAMERA Capture UI API untuk mendapatkan foto atau video realitas campuran yang diambil pengguna hanya dengan beberapa baris kode.
API ini meluncurkan antarmuka pengguna kamera MRC bawaan tempat pengguna dapat mengambil foto atau video dan mengembalikan pengambilan yang dihasilkan ke aplikasi Anda. Anda dapat membuat perekam Mixed Reality Capture kustom jika Anda perlu menambahkan UI kamera Anda sendiri atau akses tingkat bawah untuk mengambil aliran.
MRC dengan tangkapan layar
Dengan pembaruan HoloLens 2 Mei 2021 (Windows Holographic, versi 21H1 build 20346.1002), pengembang dapat menggunakan Screen capture API untuk meminta aliran bingkai video realitas campuran.
Membuat perekam MRC kustom
Meskipun pengguna selalu dapat memicu foto atau video menggunakan layanan pengambilan MRC sistem, aplikasi mungkin ingin membangun aplikasi kamera kustom yang menyertakan hologram dalam aliran kamera seperti MRC. Ini memungkinkan aplikasi untuk memulai pengambilan dari input pengguna, membangun UI rekaman kustom, atau menyesuaikan pengaturan MRC untuk memberi nama beberapa contoh.
HoloStudio menambahkan kamera MRC kustom menggunakan efek MRC
Aplikasi lain dapat melakukan ini dengan menggunakan WINDOWS Media Capture API untuk mengontrol Kamera dan menambahkan efek Video dan Audio MRC untuk menyertakan hologram virtual dan audio aplikasi diam dan video.
Aplikasi memiliki dua opsi untuk menambahkan efek:
- API yang lebih lama: Windows.Media.Capture.MediaCapture.AddEffectAsync()
- API yang direkomendasikan Microsoft baru (mengembalikan objek, memungkinkan untuk memanipulasi properti dinamis): Windows.Media.Capture.MediaCapture.AddVideoEffectAsync() / Windows.Media.Capture.MediaCapture.AddAudioEffectAsync() yang mengharuskan aplikasi membuat implementasi IVideoEffectDefinition dan IAudioEffectDefinition sendiri. Lihat contoh aplikasi MRC.
Catatan
Namespace Windows.Media.MixedRealityCapture tidak akan dikenali oleh Visual Studio, tetapi string masih valid.
Efek Video MRC (Windows.Media.MixedRealityCapture.MixedRealityCaptureVideoEffect)
Nama Properti | Jenis | Nilai Default | Deskripsi |
---|---|---|---|
StreamType | UINT32 (MediaStreamType) | 1 (VideoRecord) | Jelaskan aliran tangkapan mana yang digunakan oleh efek ini. Audio tidak tersedia. |
HologramCompositionEnabled | Boolean | BENAR | Bendera untuk mengaktifkan atau menonaktifkan hologram dalam pengambilan video. |
RecordingIndicatorEnabled | Boolean | BENAR | Bendera untuk mengaktifkan atau menonaktifkan indikator perekaman pada layar selama pengambilan hologram. |
VideoStabilizationEnabled | Boolean | SALAH | Bendera untuk mengaktifkan atau menonaktifkan stabilisasi video yang didukung oleh pelacak HoloLens. |
VideoStabilizationBufferLength | UINT32 | 0 | Atur berapa banyak bingkai historis yang digunakan untuk stabilisasi video. 0 adalah latensi 0 dan hampir "bebas" dari perspektif kekuatan dan performa. 15 direkomendasikan untuk kualitas tertinggi (dengan biaya 15 bingkai latensi dan memori). |
GlobalOpacityCoefficient | float | 0.9 (HoloLens) 1.0 (Headset imersif) | Atur koefisien opasitas global hologram dalam kisaran 0,0 (transparan sepenuhnya) hingga 1,0 (buram sepenuhnya). |
BlankOnProtectedContent | Boolean | SALAH | Bendera untuk mengaktifkan atau menonaktifkan pengembalian bingkai kosong jika ada aplikasi UWP 2d yang menampilkan konten yang dilindungi. Jika bendera ini salah dan aplikasi UWP 2d menampilkan konten yang dilindungi, aplikasi UWP 2d akan digantikan oleh tekstur konten yang dilindungi di headset dan dalam pengambilan realitas campuran. |
TampilkanHiddenMesh | Boolean | SALAH | Bendera untuk mengaktifkan atau menonaktifkan memperlihatkan jala area tersembunyi kamera holografik dan konten tetangga. |
OutputSize | Ukuran | 0, 0 | Atur ukuran output yang diinginkan setelah pemotongan untuk stabilisasi video. Ukuran pemangkasan default dipilih jika 0 atau ukuran output yang tidak valid ditentukan. |
OutputSubtype | String | Nv12 | Atur subjenis output yang diinginkan setelah komposisi hologram dan/atau stabilisasi video. Mendukung Nv12 dan Argb32 MediaEncodingSubtypes. |
PreferredHologramPerspective | UINT32 | Merender dari pengaturan Kamera di Portal Perangkat Windows | Enum digunakan untuk menunjukkan konfigurasi tampilan kamera holografik mana yang harus diambil: 0 (Tampilan) berarti bahwa aplikasi tidak akan diminta untuk merender dari kamera foto/video, 1 (PhotoVideoCamera) akan meminta aplikasi untuk merender dari kamera foto/video (jika aplikasi mendukungnya). Hanya didukung di HoloLens 2 |
Catatan
Anda dapat mengubah nilai default PreferredHologramPerspective di Portal Perangkat Windows dengan masuk ke halaman Mixed Reality Capture dan menghapus centang Render dari Kamera. Pengaturan default ke 1 (PhotoVideoCamera), tetapi dapat tidak dicentang untuk mengaturnya ke 0 (Tampilan).
Nilai default PreferredHologramPerspective adalah 0 (Tampilan) sebelum pembaruan Juni 2020 (Windows Holographic, versi 2004 build 19041.1106 dan Windows Holographic, versi 1903 build 18362.1064).
Dukungan untuk OutputSubtype ditambahkan dengan pembaruan Mei 2021 (Windows Holographic, versi 21H1 build 20346.1002).
Efek Audio MRC (Windows.Media.MixedRealityCapture.MixedRealityCaptureAudioEffect)
Nama Properti | Jenis | Nilai Default | Deskripsi |
---|---|---|---|
MixerMode | UINT32 | 2 (Audio Mikrofon dan Sistem) | Enum digunakan untuk menunjukkan sumber audio mana yang harus digunakan: 0 (Audio mikrofon saja), 1 (Audio sistem saja), 2 (Audio mikrofon dan sistem) |
LoopbackGain | float | Pengaturan Penguatan Audio Aplikasi di Portal Perangkat Windows | Peroleh untuk diterapkan ke volume audio sistem. Berkisar antara 0,0 hingga 5,0. Hanya didukung di HoloLens 2 |
MikrofonGain | float | Pengaturan Penguatan Audio Mikrofon di Portal Perangkat Windows | Peroleh untuk diterapkan ke volume mikrofon. Berkisar antara 0,0 hingga 5,0. Hanya didukung di HoloLens 2 |
Catatan
Anda dapat mengubah nilai default LoopbackGain atau MicrophoneGain di Portal Perangkat Windows dengan masuk ke halaman Mixed Reality Capture dan menyesuaikan penggeser di samping pengaturan masing-masing. Kedua pengaturan default ke 1.0, tetapi dapat diatur ke nilai apa pun antara 0,0 dan 5,0.
Menggunakan Portal Perangkat Windows untuk mengonfigurasi nilai keuntungan default ditambahkan dengan pembaruan Juni 2020 (Windows Holographic, versi 2004 build 19041.1106 dan Windows Holographic, versi 1903 build 18362.1064).
Batasan MRC simultan
Anda perlu mengetahui batasan tertentu saat beberapa aplikasi mengakses MRC secara bersamaan.
Akses kamera foto/video
Di HoloLens 1, MRC akan gagal mengambil foto atau mengambil video saat proses merekam video atau mengambil foto. Sebaliknya juga benar: jika MRC berjalan, aplikasi akan gagal mendapatkan akses ke kamera.
Dengan HoloLens 2, Anda dapat berbagi akses ke kamera. Jika Anda tidak memerlukan kontrol langsung atas resolusi atau kecepatan bingkai, Anda dapat menginisialisasi MediaCapture menggunakan properti SharedMode dengan SharedReadOnly.
Akses foto dan kamera video MRC bawaan
Fungsionalitas MRC yang disertakan dalam Windows 10 (melalui Cortana, Menu Mulai, pintasan perangkat keras, Miracast, Portal Perangkat Windows):
- Akan berjalan dengan ExclusiveControl secara default
Namun, dukungan telah ditambahkan ke subsistem MRC untuk beroperasi dalam mode bersama:
- Jika aplikasi meminta akses ExclusiveControl ke kamera foto/video, MRC bawaan akan secara otomatis berhenti menggunakan kamera foto/video sehingga permintaan aplikasi akan berhasil
- Jika MRC bawaan dimulai saat aplikasi memiliki ExclusiveControl, MRC bawaan akan berjalan dalam mode SharedReadOnly
Fungsionalitas mode bersama ini memiliki batasan tertentu:
- Foto melalui Cortana, pintasan perangkat keras, atau Menu Mulai: Memerlukan Pembaruan Windows 10 April 2018 (atau yang lebih baru)
- Video melalui Cortana, pintasan perangkat keras, atau Menu Mulai: Memerlukan Pembaruan Windows 10 April 2018 (atau yang lebih baru)
- Streaming MRC melalui Miracast: Memerlukan Pembaruan Windows 10 Oktober 2018 (atau yang lebih baru)
- Streaming MRC melalui Portal Perangkat Windows atau melalui aplikasi pendamping HoloLens: Memerlukan HoloLens 2
Catatan
Resolusi dan kecepatan bingkai UI kamera MRC bawaan mungkin dikurangi dari nilai normalnya ketika aplikasi lain menggunakan kamera foto/video.
Akses MRC untuk pengembang
Sebaiknya Anda selalu meminta Kontrol eksklusif untuk kamera saat menggunakan MRC. Ini akan memastikan aplikasi Anda memiliki kontrol penuh atas pengaturan untuk kamera selama Anda mengetahui batasan yang tercantum di atas.
- Membuat objek penangkapan media menggunakan pengaturan inisialisasi
- Atur properti SharingMode ke eksklusif
Perhatian
Pastikan untuk membaca dengan cermat komentar SharingMode sebelum melanjutkan.
- Siapkan kamera sesuai keinginan Anda
- Mulai aplikasi, ambil bingkai video dengan API mulai, lalu aktifkan MRC
Perhatian
Jika Anda memulai MRC sebelum memulai aplikasi, kami tidak dapat menjamin fitur akan berfungsi seperti yang diharapkan.
Anda dapat menemukan sampel lengkap proses di atas dalam sampel pelacakan wajah holografik.
Catatan
Sebelum Pembaruan Windows 10 April 2018, perekam MRC kustom aplikasi saling eksklusif dengan MRC sistem (menangkap foto, menangkap video, atau streaming dari Portal Perangkat Windows).