Adaptasi proyek MR untuk HoloLens

Jadi seri artikel kami tentang Windows Mixed Reality hampir berakhir. Di dalamnya, kami mengembangkan dari awal aplikasi dengan realitas campuran pada Unity dalam format praktikum (pekerjaan laboratorium). Hari ini adalah akord terakhir di mana kita akan berbicara tentang topik yang sangat menarik - Hololens dan adaptasi proyek ke perangkat ini. Bergabunglah sekarang!



Seluruh panduan akan terdiri dari 5 bagian. Itu akan diisi ulang setiap minggu. Di bawah ini Anda dapat pergi ke bagian yang Anda butuhkan.

Bagian 1: Ekspor aplikasi UWP untuk Windows Mixed Reality from Unity ;
Bagian 2: Mengatur lingkungan (VR) ;
Bagian 3: Pengendali ;
Bagian 4: Suara Spasial ;
Bagian 5: HoloLens dan Grafik .

Hololen


Sejauh ini, aplikasi kami hanya berfungsi dengan headset imersif. Namun, dengan hanya membuat beberapa perubahan pada aplikasi, kami dapat mengimplementasikan dukungan untuk seluruh spektrum perangkat Mixed Reality (termasuk HoloLens) di dalamnya.

Karena kami menggunakan Mixed Reality Toolkit untuk mengontrol kamera, mengimplementasikan interaksi dan menambahkan tombol, kami hanya perlu membuat beberapa perubahan pada proyek.

Menyembunyikan ruang virtual


Kita perlu menulis skrip yang akan menentukan pada perangkat mana aplikasi kita berjalan - pada headset imersif atau pada perangkat HoloLens. Jika aplikasi ini berjalan pada perangkat HoloLens, kita harus menyembunyikan ruang virtual sehingga pengguna dapat berinteraksi dengan lingkungan nyata. Untuk melakukan ini, pertama-tama kita tambahkan elemen Tag ke prefab RoomPrefab, dan kemudian kita akan mengakses tag ini dalam skrip kita.

1. Pilih prefab RoomPrefab di panel Hierarchy.

2. Dalam daftar tarik Tag di panel Inspektur, pilih Tambah Tag ....



3. Klik tanda + untuk membuat tag baru, dan beri tag ini nama HMDUOnly.



4. Sekarang klik lagi prefab RoomPrefab di panel Hierarchy dan pilih tag HMDUOnly dari menu drop-down Tag di panel Inspektur.

Anda dapat memilih objek game dalam skrip dengan berbagai cara . Kita dapat menambahkan tag ke objek apa pun yang perlu kita sembunyikan (jika kita memiliki beberapa objek), lalu sembunyikan masing-masing secara berurutan. Memanggil metode FindGameObjectsWithTag bukan cara yang paling optimal, tetapi cukup cocok untuk kita.

5. Dari menu Unity atas, pilih GameObject -> Create Empty.

6. Pada panel Hierarchy, ubah nama GameObject kosong yang ditambahkan ke GameManager.

7. Pada panel Inspektur, klik Add Component -> New Script dan beri skrip ini nama GameManager, pilih C tajam sebagai bahasa pemrograman. Klik Buat dan Tambah untuk membuat skrip.

8. Untuk membuka skrip GameManager, klik dua kali pada panel Inspektur atau panel Aset.

9. Ganti kode skrip GameManager dengan kode di bawah ini. Tes ini perlu dilakukan hanya sekali, pada saat peluncuran aplikasi. Kami akan menjalankannya di dalam fungsi Mulai (), dan menghapus fungsi Pembaruan ().

using System.Collections; using System.Collections.Generic; using UnityEngine; // We need the UnityEngine.XR.WSA namespace to access Holographic Settings which contain // functions which effect the performance and presentation of Holograms on Windows // Holographic platforms. using UnityEngine.XR.WSA; public class GameManager : MonoBehaviour { void Start () { // Check if the MR headset display is transparent (not opaque). if(!HolographicSettings.IsDisplayOpaque){ // If that is the case, then we need to hide the virtual living room GameObject[] HMDUOnlyObjects = GameObject.FindGameObjectsWithTag("HMDUOnly"); for (int i = 0; i < HMDUOnlyObjects.Length; i++){ // Set active to false disables the object. HMDUOnlyObjects[i].SetActive(false); } } } } 

Akhirnya, untuk memastikan bahwa aplikasi bekerja dengan benar pada perangkat HoloLens, kita perlu membuat latar belakang kamera menjadi hitam.

10. Pada panel Hierarchy, pilih objek MixedRealityCameraParent-> MixedRealityCamera. Gulir ke bawah panel Inspektur dan pilih hitam sebagai nilai untuk Manajer Kamera Realitas Campuran -> Pengaturan Tampilan Transparan -> Parameter Warna Latar Belakang (Manajer Kamera Realitas Campuran -> Pengaturan Tampilan Transparan -> Warna Latar Belakang).



Menambahkan pemetaan spasial


Hampir semuanya siap! Sekarang kita perlu mengaktifkan pemetaan spasial . Teknologi pencitraan ruang memberikan tampilan detail dari permukaan fisik di lingkungan HoloLens, yang memungkinkan pengembang untuk membuat aplikasi realitas campuran yang mengesankan dengan kemungkinannya. Dalam kasus kami, pemetaan spasial akan memungkinkan pengguna untuk menempatkan speaker dengan cara alami, sehingga tidak dikaburkan oleh permukaan fisik.

Pertama, mari pastikan bahwa kontrol dari objek Bounding Box (bounding box) yang bertanggung jawab untuk bergerak dan berputar tidak disembunyikan.

1. Temukan prefab AppBarCustom di folder Asset -> Prefabs di panel Project.

2. Tetapkan nilai 0 untuk properti Hover Offset Y Scale (Hover Offset Scale).



Sekarang mari kita tambahkan komponen pemetaan spasial ke TKP.

3. Temukan prefab Pemetaan Spasial di folder Aset -> HoloTookit -> Pemetaan Spasial -> Prefab (Sumber Daya -> HoloTookit -> Pemetaan Spasial -> Rak Pabrikan).

4. Seret ke panel Hierarchy dari adegan kami.



Gerakan HoloLens


Sampai sekarang, semua jenis interaksi dalam aplikasi kami dilakukan menggunakan pengontrol gerak. Jika aplikasi akan berjalan pada perangkat HoloLens (atau emulatornya), kita perlu menggunakan cara lain untuk memindahkan speaker dan beralih ke sana dalam kode program. Metode BoundingBox juga dapat digunakan kembali untuk HoloLens, tetapi kami ingin mengoptimalkan interaksi dengan membuat beberapa perubahan.

1. Pilih cetakan Speaker di panel Proyek.

2. Klik Tambah Komponen -> Ketuk Ke Tempat. Ini adalah skrip untuk HoloLens dari MR Toolkit yang memungkinkan pengguna menyentuh objek atau hologram dan dengan mudah memindahkannya di luar angkasa.

3. Nonaktifkan sehingga tidak memulai secara default. Untuk menonaktifkan skrip, cukup hapus centang pada kotak di sebelah namanya di panel Inspektur. Komponen ini juga akan menambahkan skrip Interpolator ke prefab Speaker.



4. Tambahkan skrip ke prefab Pembicara dengan memilih Add Component -> New Script, dan beri nama skrip ini SpeakerMovement.

5. Edit skrip - klik dua kali dan ganti kode skrip dengan kode di bawah ini.

 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.XR.WSA; // namespace for the TwoHandManipulatable script using HoloToolkit.Unity.InputModule.Utilities.Interactions; // namespace for the TapToPlace script using HoloToolkit.Unity.SpatialMapping; public class SpeakerMovement : MonoBehaviour { void Start () { if(!HolographicSettings.IsDisplayOpaque){ GetComponent<TwoHandManipulatable>().enabled = false; GetComponent<TapToPlace>().enabled = true; } } } 

Dengan menentukan namespace untuk skenario yang digunakan, kami akan menggunakan tes yang sama yang digunakan dalam skrip GameManager untuk menyembunyikan ruangan. Kali ini, ketika perangkat HoloLens terdeteksi, tes akan mematikan satu skrip dan menghidupkan yang lain. Karena kami mengubah cetakan Speaker, perubahan ini akan memengaruhi semua speaker di layar. Jika Anda mengubah salah satu contoh cetakan Speaker, klik Terapkan di sudut kanan atas panel Inspektur untuk memperbarui cetakan ini.

Selesai! Sekarang Anda dapat membangun aplikasi dan menjalankannya di headset imersif atau perangkat Hololens, dan kemudian menempatkan speaker di mana saja di ruangan, putar dan kontrol.

Grafik (opsional)


Mari kita lihat bagaimana kita dapat meningkatkan aspek visual dari aplikasi kita, karena bahkan perbaikan kecil dapat secara signifikan mengubah persepsinya. Jika Anda ingin mempelajari cara membuat aplikasi lebih menarik tanpa banyak kesulitan, Anda dapat menggunakan instruksi di bawah ini.

Menambahkan skybox khusus


1. Di menu atas, pilih Window -> Lighting -> Settings (Window -> Lighting -> Settings).

2. Tarik Skyymorning.mat skybox dari folder Aset -> Tekstur ke properti Skybox Material.

Pemrosesan pos


Catatan Tindakan berikut dapat dilakukan untuk kamera apa pun di tempat kejadian, tetapi tidak dapat dilihat di editor.

1. Pilih elemen MixedRealityCameraParent -> MixedRealityCamera di panel Hierarchy of the scene.

2. Klik Tambah Komponen -> Perilaku Pemrosesan Pasca.

3. Temukan elemen CustomProfile.asset di folder Aset -> PostProcessing dan seret ke properti Profil dari skrip Perilaku Pemrosesan Post.

Bereksperimenlah dengan profil postprocessing sebanyak yang Anda butuhkan, tetapi ingat bahwa postprocessing menghabiskan sumber daya .

Selamat! Anda menyelesaikan latihan ini.

Asli
Penulis: Eric Ahlstrom, cbarkerms, Madison Hight

Source: https://habr.com/ru/post/id418665/


All Articles