Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Tutorial Mixed Reality Academy dirancang dengan ingat HoloLens (generasi ke-1), Unity 2017, dan Mixed Reality Immersive Headsets. Dengan demikian, kami merasa penting untuk meninggalkan tutorial ini di tempat bagi pengembang yang masih mencari panduan dalam mengembangkan untuk perangkat tersebut. Tutorial ini tidak akan diperbarui dengan toolset atau interaksi terbaru yang digunakan untuk HoloLens 2 dan mungkin tidak kompatibel dengan versi Unity yang lebih baru. Mereka akan dipertahankan untuk terus bekerja pada perangkat yang didukung. Serangkaian tutorial baru telah diposting untuk HoloLens 2.
Gerakan mengubah niat pengguna menjadi tindakan. Dengan gerakan, pengguna dapat berinteraksi dengan hologram. Dalam kursus ini, kita akan mempelajari cara melacak tangan pengguna, menanggapi input pengguna, dan memberikan umpan balik kepada pengguna berdasarkan status tangan dan lokasi.
Dalam MR Basics 101, kami menggunakan gerakan ketukan udara sederhana untuk berinteraksi dengan hologram kami. Sekarang, kita akan bergerak melampaui gerakan ketukan udara dan mengeksplorasi konsep baru untuk:
- Deteksi kapan tangan pengguna sedang dilacak dan berikan umpan balik kepada pengguna.
- Gunakan gerakan navigasi untuk memutar hologram kita.
- Berikan umpan balik ketika tangan pengguna akan keluar dari tampilan.
- Gunakan peristiwa manipulasi untuk memungkinkan pengguna memindahkan hologram dengan tangan mereka.
Dalam kursus ini, kita akan mengunjungi kembali Proyek Unity Model Explorer, yang kita bangun di MR Input 210. Teman astronaut kami kembali membantu kami dalam eksplorasi konsep gerakan baru ini.
Penting
Video yang disematkan di setiap bab di bawah ini direkam menggunakan versi Unity dan Mixed Reality Toolkit yang lebih lama. Meskipun instruksi langkah demi langkah akurat dan terkini, Anda mungkin melihat skrip dan visual dalam video yang sesuai yang sudah kedaluarsa. Video tetap disertakan untuk posteritas dan karena konsep yang dibahas masih berlaku.
Dukungan perangkat
| Kursus | HoloLens | Headset imersif |
|---|---|---|
| Masukan MR 211: Gerakan | ✔️ | ✔️ |
Sebelum memulai
Prasyarat
- PC Windows 10 dikonfigurasi dengan alat yang benar terinstal.
- Beberapa kemampuan pemrograman C# dasar.
- Anda seharusnya menyelesaikan MR Basics 101.
- Anda seharusnya menyelesaikan MR Input 210.
- Perangkat HoloLens dikonfigurasi untuk pengembangan.
File proyek
- Unduh file yang diperlukan oleh proyek. Memerlukan Unity 2017.2 atau yang lebih baru.
- Batalkan arsip file ke desktop Anda atau lokasi lain yang mudah dijangkau.
Catatan
Jika Anda ingin melihat melalui kode sumber sebelum mengunduh, kode tersebut tersedia di GitHub.
Errata dan Catatan
- "Aktifkan Hanya Kode Saya" perlu dinonaktifkan (tidak dicentang) di Visual Studio di bawah Tools-Options-Debugging>> untuk mencapai titik henti dalam kode Anda.
Bab 0 - Penyiapan Unity
Petunjuk
- Mulai Unity.
- Pilih Buka.
- Navigasikan ke folder Gerakan yang sebelumnya tidak Anda arsipkan.
- Temukan dan pilih folder Memulai/Penjelajah Model .
- Klik tombol Pilih Folder .
- Di panel Proyek , perluas folder Adegan .
- Klik dua kali adegan ModelExplorer untuk memuatnya di Unity.
Gedung
- Di Unity, pilih Pengaturan Build File>.
- Jika Scenes/ModelExplorer tidak tercantum dalam Adegan Dalam Build, klik Tambahkan Adegan Terbuka untuk menambahkan adegan.
- Jika Anda secara khusus mengembangkan untuk HoloLens, atur Perangkat target ke HoloLens. Jika tidak, biarkan di perangkat apa pun.
- Pastikan Jenis Build diatur ke D3D dan SDK diatur ke Terbaru diinstal (yang seharusnya SDK 16299 atau yang lebih baru).
- Klik Bangun.
- Buat Folder Baru bernama "Aplikasi".
- Klik tunggal folder Aplikasi .
- Tekan Pilih Folder dan Unity akan mulai membangun proyek untuk Visual Studio.
Ketika Unity selesai, jendela File Explorer akan muncul.
- Buka folder Aplikasi .
- Buka Solusi Visual Studio ModelExplorer.
Jika menyebarkan ke HoloLens:
- Menggunakan toolbar atas di Visual Studio, ubah target dari Debug ke Rilis dan dari ARM ke x86.
- Klik panah drop-down di samping tombol Komputer Lokal, dan pilih Komputer Jarak Jauh.
- Masukkan alamat IP perangkat HoloLens Anda dan atur Mode Autentikasi ke Universal (Protokol Tidak Terenkripsi). Klik Pilih. Jika Anda tidak mengetahui alamat IP perangkat Anda, lihat di Pengaturan > Jaringan & Opsi Tingkat Lanjut Internet>.
- Di bilah menu atas, klik Debug -> Mulai Tanpa penelusuran kesalahan atau tekan Ctrl + F5. Jika ini pertama kalinya menyebarkan ke perangkat Anda, Anda harus memasangkannya dengan Visual Studio.
- Saat aplikasi telah disebarkan, tutup Fitbox dengan gerakan tertentu.
Jika menyebarkan ke headset imersif:
- Menggunakan toolbar atas di Visual Studio, ubah target dari Debug ke Rilis dan dari ARM ke x64.
- Pastikan target penyebaran diatur ke Komputer Lokal.
- Di bilah menu atas, klik Debug -> Mulai Tanpa penelusuran kesalahan atau tekan Ctrl + F5.
- Saat aplikasi telah disebarkan, tutup Fitbox dengan menarik pemicu pada pengontrol gerakan.
Catatan
Anda mungkin melihat beberapa kesalahan merah di panel Kesalahan Visual Studio. Aman untuk mengabaikan mereka. Beralih ke panel Output untuk melihat kemajuan build aktual. Kesalahan di panel Output akan mengharuskan Anda untuk membuat perbaikan (paling sering disebabkan oleh kesalahan dalam skrip).
Bab 1 - Umpan balik yang terdeteksi tangan
Tujuan
- Berlangganan peristiwa pelacakan tangan.
- Gunakan umpan balik kursor untuk menampilkan pengguna saat tangan sedang dilacak.
Catatan
Pada HoloLens 2 , tangan terdeteksi menembak setiap kali tangan terlihat (bukan hanya ketika jari menunjuk ke atas).
Petunjuk
- Di panel Hierarki , perluas objek InputManager .
- Cari dan pilih objek GesturesInput .
Skrip InteractionInputSource.cs melakukan langkah-langkah berikut:
- Berlangganan peristiwa InteractionSourceDetected dan InteractionSourceLost.
- Mengatur status HandDetected.
- Berhenti berlangganan dari peristiwa InteractionSourceDetected dan InteractionSourceLost.
Selanjutnya, kita akan meningkatkan kursor dari MR Input 210 menjadi salah satu yang menunjukkan umpan balik tergantung pada tindakan pengguna.
- Di panel Hierarki , pilih objek Kursor dan hapus.
- Di panel Proyek , cari CursorWithFeedback dan seret ke panel Hierarki .
- Klik InputManager di panel Hierarki, lalu seret objek CursorWithFeedback dari Hierarki ke bidang KursorSimpleSinglePointerSelector InputManager, di bagian bawah Pemeriksa.
- Klik KursorWithFeedback di Hierarki.
- Di panel Pemeriksa , perluas Data Status Kursor pada skrip Kursor Objek .
Data Status Kursor berfungsi seperti ini:
- Setiap status Observe berarti bahwa tidak ada tangan yang terdeteksi dan pengguna hanya melihat-lihat.
- Status Interaksi apa pun berarti tangan atau pengontrol terdeteksi.
- Setiap status Hover berarti pengguna melihat hologram.
Membangun dan Menyebarkan
- Di Unity, gunakan Pengaturan Build File > untuk membangun kembali aplikasi.
- Buka folder Aplikasi .
- Jika belum terbuka, buka Solusi Visual Studio ModelExplorer.
- (Jika Anda sudah membuat/menyebarkan proyek ini di Visual Studio selama pengaturan, maka Anda dapat membuka instans VS tersebut dan mengklik 'Muat Ulang Semua' saat diminta).
- Di Visual Studio, klik Debug -> Mulai Tanpa penelusuran kesalahan atau tekan Ctrl + F5.
- Setelah aplikasi disebarkan ke HoloLens, tutup fitbox menggunakan gerakan ketukan udara.
- Gerakkan tangan Anda ke tampilan dan arahkan jari telunjuk Anda ke langit untuk memulai pelacakan tangan.
- Gerakkan tangan anda ke kiri, kanan, atas dan bawah.
- Tonton bagaimana kursor berubah saat tangan Anda terdeteksi lalu hilang dari tampilan.
- Jika Anda menggunakan headset imersif, Anda harus menyambungkan dan memutuskan pengontrol. Umpan balik ini menjadi kurang menarik pada perangkat imersif, karena pengontrol yang terhubung akan selalu "tersedia".
Bab 2 - Navigasi
Tujuan
- Gunakan peristiwa gerakan Navigasi untuk memutar astronaut.
Petunjuk
Untuk menggunakan gerakan Navigasi di aplikasi kami, kita akan mengedit GestureAction.cs untuk memutar objek saat gerakan Navigasi terjadi. Selain itu, kami akan menambahkan umpan balik ke kursor untuk ditampilkan saat Navigasi tersedia.
- Di panel Hierarki , perluas CursorWithFeedback.
- Di folder Hologram , temukan aset ScrollFeedback .
- Seret dan letakkan prefab ScrollFeedback ke CursorWithFeedback GameObject di Hierarki.
- Klik KursorWithFeedback.
- Di panel Pemeriksa , klik tombol Tambahkan Komponen .
- Di menu, ketik di kotak pencarian CursorFeedback. Pilih hasil pencarian.
- Seret dan letakkan objek ScrollFeedback dari Hierarki ke properti Gulir Objek Game yang Terdeteksi di komponen Umpan Balik Kursor di Pemeriksa.
- Di panel Hierarki , pilih objek AstroMan .
- Di panel Pemeriksa , klik tombol Tambahkan Komponen .
- Di menu, ketik di kotak pencarian Tindakan Gerakan. Pilih hasil pencarian.
Selanjutnya, buka GestureAction.cs di Visual Studio. Dalam latihan pengkodian 2.c, edit skrip untuk melakukan hal berikut:
- Putar objek AstroMan setiap kali gerakan Navigasi dilakukan.
- Hitung rotationFactor untuk mengontrol jumlah rotasi yang diterapkan ke objek.
- Putar objek di sekitar sumbu y saat pengguna menggerakkan tangan mereka ke kiri atau kanan.
Selesaikan latihan pengodean 2.c dalam skrip, atau ganti kode dengan solusi lengkap di bawah ini:
using HoloToolkit.Unity.InputModule;
using UnityEngine;
/// <summary>
/// GestureAction performs custom actions based on
/// which gesture is being performed.
/// </summary>
public class GestureAction : MonoBehaviour, INavigationHandler, IManipulationHandler, ISpeechHandler
{
[Tooltip("Rotation max speed controls amount of rotation.")]
[SerializeField]
private float RotationSensitivity = 10.0f;
private bool isNavigationEnabled = true;
public bool IsNavigationEnabled
{
get { return isNavigationEnabled; }
set { isNavigationEnabled = value; }
}
private Vector3 manipulationOriginalPosition = Vector3.zero;
void INavigationHandler.OnNavigationStarted(NavigationEventData eventData)
{
InputManager.Instance.PushModalInputHandler(gameObject);
}
void INavigationHandler.OnNavigationUpdated(NavigationEventData eventData)
{
if (isNavigationEnabled)
{
/* TODO: DEVELOPER CODING EXERCISE 2.c */
// 2.c: Calculate a float rotationFactor based on eventData's NormalizedOffset.x multiplied by RotationSensitivity.
// This will help control the amount of rotation.
float rotationFactor = eventData.NormalizedOffset.x * RotationSensitivity;
// 2.c: transform.Rotate around the Y axis using rotationFactor.
transform.Rotate(new Vector3(0, -1 * rotationFactor, 0));
}
}
void INavigationHandler.OnNavigationCompleted(NavigationEventData eventData)
{
InputManager.Instance.PopModalInputHandler();
}
void INavigationHandler.OnNavigationCanceled(NavigationEventData eventData)
{
InputManager.Instance.PopModalInputHandler();
}
void IManipulationHandler.OnManipulationStarted(ManipulationEventData eventData)
{
if (!isNavigationEnabled)
{
InputManager.Instance.PushModalInputHandler(gameObject);
manipulationOriginalPosition = transform.position;
}
}
void IManipulationHandler.OnManipulationUpdated(ManipulationEventData eventData)
{
if (!isNavigationEnabled)
{
/* TODO: DEVELOPER CODING EXERCISE 4.a */
// 4.a: Make this transform's position be the manipulationOriginalPosition + eventData.CumulativeDelta
}
}
void IManipulationHandler.OnManipulationCompleted(ManipulationEventData eventData)
{
InputManager.Instance.PopModalInputHandler();
}
void IManipulationHandler.OnManipulationCanceled(ManipulationEventData eventData)
{
InputManager.Instance.PopModalInputHandler();
}
void ISpeechHandler.OnSpeechKeywordRecognized(SpeechEventData eventData)
{
if (eventData.RecognizedText.Equals("Move Astronaut"))
{
isNavigationEnabled = false;
}
else if (eventData.RecognizedText.Equals("Rotate Astronaut"))
{
isNavigationEnabled = true;
}
else
{
return;
}
eventData.Use();
}
}
Anda akan melihat bahwa peristiwa navigasi lainnya sudah diisi dengan beberapa info. Kami mendorong GameObject ke tumpukan modal InputSystem Toolkit, sehingga pengguna tidak perlu mempertahankan fokus pada Astronot setelah rotasi dimulai. Secara sesuai, kami memunculkan GameObject dari tumpukan setelah gerakan selesai.
Membangun dan Menyebarkan
- Bangun kembali aplikasi di Unity lalu buat dan sebarkan dari Visual Studio untuk menjalankannya di HoloLens.
- Tatap astronot, dua panah akan muncul di kedua sisi kursor. Visual baru ini menunjukkan bahwa astronaut dapat diputar.
- Letakkan tangan Anda di posisi siap (jari telunjuk menunjuk ke langit) sehingga HoloLens akan mulai melacak tangan Anda.
- Untuk memutar astronaut, turunkan jari telunjuk Anda ke posisi mencubit, lalu gerakkan tangan Anda ke kiri atau kanan untuk memicu gerakan NavigationX.
Bab 3 - Panduan Tangan
Tujuan
- Gunakan skor panduan tangan untuk membantu memprediksi kapan pelacakan tangan akan hilang.
- Berikan umpan balik tentang kursor untuk ditampilkan saat tangan pengguna mendekati tepi tampilan kamera.
Petunjuk
- Di panel Hierarki , pilih objek CursorWithFeedback .
- Di panel Pemeriksa , klik tombol Tambahkan Komponen .
- Di menu, ketik di kotak pencarian Panduan Tangan. Pilih hasil pencarian.
- Di folder Hologram panel Proyek, temukan aset HandGuidanceFeedback.
- Seret dan letakkan aset HandGuidanceFeedback ke properti Indikator Panduan Tangan di panel Pemeriksa .
Membangun dan Menyebarkan
- Bangun kembali aplikasi di Unity lalu buat dan sebarkan dari Visual Studio untuk merasakan aplikasi di HoloLens.
- Bawa tangan Anda ke tampilan dan angkat jari telunjuk Anda untuk dilacak.
- Mulai putar astronaut dengan gerakan Navigasi (jepit jari telunjuk dan jempol Anda bersama-sama).
- Gerakkan tangan Anda jauh ke kiri, kanan, atas, dan bawah.
- Saat tangan Anda mendekati tepi bingkai gerakan, panah akan muncul di samping kursor untuk memperingatkan Anda bahwa pelacakan tangan akan hilang. Panah menunjukkan arah mana yang akan menggerakkan tangan Anda untuk mencegah pelacakan hilang.
Bab 4 - Manipulasi
Tujuan
- Gunakan peristiwa Manipulasi untuk memindahkan astronaut dengan tangan Anda.
- Berikan umpan balik tentang kursor untuk memberi tahu pengguna kapan Manipulasi dapat digunakan.
Petunjuk
GestureManager.cs dan AstronautManager.cs akan memungkinkan kita untuk melakukan hal berikut:
- Gunakan kata kunci ucapan "Pindahkan Astronaut" untuk mengaktifkan gerakan Manipulasi dan "Putar Astronaut" untuk menonaktifkannya.
- Beralih untuk menanggapi Manipulasi Gesture Recognizer.
Mari kita mulai.
- Di panel Hierarki , buat GameObject kosong baru. Beri nama "AstronautManager".
- Di panel Pemeriksa , klik tombol Tambahkan Komponen .
- Di menu, ketik di kotak pencarian Manajer Astronaut. Pilih hasil pencarian.
- Di panel Pemeriksa , klik tombol Tambahkan Komponen .
- Di menu, ketik di kotak pencarian Sumber Input Ucapan. Pilih hasil pencarian.
Sekarang kita akan menambahkan perintah ucapan yang diperlukan untuk mengontrol status interaksi astronaut.
- Perluas bagian Kata Kunci di Inspektur.
- Klik di + sisi kanan untuk menambahkan kata kunci baru.
- Ketik Kata Kunci sebagai Pindahkan Astronaut. Jangan ragu untuk menambahkan Pintasan Kunci jika diinginkan.
- Klik di + sisi kanan untuk menambahkan kata kunci baru.
- Ketik Kata Kunci sebagai Putar Astronaut. Jangan ragu untuk menambahkan Pintasan Kunci jika diinginkan.
- Kode handler yang sesuai dapat ditemukan di GestureAction.cs, di handler ISpeechHandler.OnSpeechKeywordRecognized .
Selanjutnya, kita akan menyiapkan umpan balik manipulasi pada kursor.
- Di folder Hologram panel Proyek, temukan aset PathingFeedback.
- Seret dan letakkan prefab PathingFeedback ke objek CursorWithFeedback dalam Hierarki.
- Di panel Hierarki , klik CursorWithFeedback.
- Seret dan letakkan objek PathingFeedback dari Hierarki ke properti Pathing Detected Game Object di komponen Umpan Balik Kursor di Inspektur.
Sekarang kita perlu menambahkan kode ke GestureAction.cs untuk mengaktifkan hal berikut:
- Tambahkan kode ke fungsi IManipulationHandler.OnManipulationUpdated , yang akan memindahkan astronaut saat gerakan Manipulasi terdeteksi.
- Hitung vektor gerakan untuk menentukan di mana astronaut harus dipindahkan berdasarkan posisi tangan.
- Pindahkan astronaut ke posisi baru.
Latihan pengkodian lengkap 4.a di GestureAction.cs, atau gunakan solusi lengkap kami di bawah ini:
using HoloToolkit.Unity.InputModule;
using UnityEngine;
/// <summary>
/// GestureAction performs custom actions based on
/// which gesture is being performed.
/// </summary>
public class GestureAction : MonoBehaviour, INavigationHandler, IManipulationHandler, ISpeechHandler
{
[Tooltip("Rotation max speed controls amount of rotation.")]
[SerializeField]
private float RotationSensitivity = 10.0f;
private bool isNavigationEnabled = true;
public bool IsNavigationEnabled
{
get { return isNavigationEnabled; }
set { isNavigationEnabled = value; }
}
private Vector3 manipulationOriginalPosition = Vector3.zero;
void INavigationHandler.OnNavigationStarted(NavigationEventData eventData)
{
InputManager.Instance.PushModalInputHandler(gameObject);
}
void INavigationHandler.OnNavigationUpdated(NavigationEventData eventData)
{
if (isNavigationEnabled)
{
/* TODO: DEVELOPER CODING EXERCISE 2.c */
// 2.c: Calculate a float rotationFactor based on eventData's NormalizedOffset.x multiplied by RotationSensitivity.
// This will help control the amount of rotation.
float rotationFactor = eventData.NormalizedOffset.x * RotationSensitivity;
// 2.c: transform.Rotate around the Y axis using rotationFactor.
transform.Rotate(new Vector3(0, -1 * rotationFactor, 0));
}
}
void INavigationHandler.OnNavigationCompleted(NavigationEventData eventData)
{
InputManager.Instance.PopModalInputHandler();
}
void INavigationHandler.OnNavigationCanceled(NavigationEventData eventData)
{
InputManager.Instance.PopModalInputHandler();
}
void IManipulationHandler.OnManipulationStarted(ManipulationEventData eventData)
{
if (!isNavigationEnabled)
{
InputManager.Instance.PushModalInputHandler(gameObject);
manipulationOriginalPosition = transform.position;
}
}
void IManipulationHandler.OnManipulationUpdated(ManipulationEventData eventData)
{
if (!isNavigationEnabled)
{
/* TODO: DEVELOPER CODING EXERCISE 4.a */
// 4.a: Make this transform's position be the manipulationOriginalPosition + eventData.CumulativeDelta
transform.position = manipulationOriginalPosition + eventData.CumulativeDelta;
}
}
void IManipulationHandler.OnManipulationCompleted(ManipulationEventData eventData)
{
InputManager.Instance.PopModalInputHandler();
}
void IManipulationHandler.OnManipulationCanceled(ManipulationEventData eventData)
{
InputManager.Instance.PopModalInputHandler();
}
void ISpeechHandler.OnSpeechKeywordRecognized(SpeechEventData eventData)
{
if (eventData.RecognizedText.Equals("Move Astronaut"))
{
isNavigationEnabled = false;
}
else if (eventData.RecognizedText.Equals("Rotate Astronaut"))
{
isNavigationEnabled = true;
}
else
{
return;
}
eventData.Use();
}
}
Membangun dan Menyebarkan
- Bangun kembali di Unity lalu buat dan sebarkan dari Visual Studio untuk menjalankan aplikasi di HoloLens.
- Gerakkan tangan Anda di depan HoloLens dan angkat jari telunjuk Anda sehingga dapat dilacak.
- Fokuskan kursor ke astronaut.
- Katakan 'Pindahkan Astronaut' untuk memindahkan astronaut dengan gerakan Manipulasi.
- Empat panah akan muncul di sekitar kursor untuk menunjukkan bahwa program sekarang akan merespons peristiwa Manipulasi.
- Turunkan jari telunjuk Anda ke jempol Anda, dan simpan dicubit bersama-sama.
- Saat Anda menggerakkan tangan Anda, astronaut akan bergerak juga (ini adalah Manipulasi).
- Angkat jari telunjuk Anda untuk berhenti memanipulasi astronaut.
- Catatan: Jika Anda tidak mengatakan 'Pindahkan Astronaut' sebelum menggerakkan tangan Anda, maka gerakan Navigasi akan digunakan sebagai gantinya.
- Katakan 'Putar Astronaut' untuk kembali ke status dapat diputar.
Bab 5 - Ekspansi model
Tujuan
- Perluas model Astronaut menjadi beberapa bagian yang lebih kecil yang dapat berinteraksi dengan pengguna.
- Pindahkan setiap bagian satu per satu menggunakan gerakan Navigasi dan Manipulasi.
Petunjuk
Di bagian ini, kita akan menyelesaikan tugas-tugas berikut:
- Tambahkan kata kunci baru "Perluas Model" untuk memperluas model astronaut.
- Tambahkan Kata Kunci baru "Reset Model" untuk mengembalikan model ke bentuk aslinya.
Kita akan melakukan ini dengan menambahkan dua kata kunci lagi ke Sumber Input Ucapan dari bab sebelumnya. Kami juga akan menunjukkan cara lain untuk menangani peristiwa pengenalan.
- Klik kembali pada AstronautManager di Inspektur dan perluas bagian Kata Kunci di Inspektur.
- Klik di + sisi kanan untuk menambahkan kata kunci baru.
- Ketik Kata Kunci sebagai Perluas Model. Jangan ragu untuk menambahkan Pintasan Kunci jika diinginkan.
- Klik di + sisi kanan untuk menambahkan kata kunci baru.
- Ketik Kata Kunci sebagai Reset Model. Jangan ragu untuk menambahkan Pintasan Kunci jika diinginkan.
- Di panel Pemeriksa , klik tombol Tambahkan Komponen .
- Di menu, ketik di kotak pencarian Penghandel Input Ucapan. Pilih hasil pencarian.
- Centang Apakah Pendengar Global, karena kami ingin perintah ini berfungsi terlepas dari GameObject yang kami fokuskan.
- Klik tombol + dan pilih Perluas Model dari menu dropdown Kata Kunci.
- Klik di + bawah Respons, dan seret AstronautManager dari Hierarki ke bidang Tidak Ada (Objek).
- Sekarang, klik menu dropdown Tanpa Fungsi , pilih AstronautManager, lalu ExpandModelCommand.
- Klik tombol Handler + Input Ucapan dan pilih Reset Model dari menu dropdown Kata Kunci.
- Klik di + bawah Respons, dan seret AstronautManager dari Hierarki ke bidang Tidak Ada (Objek).
- Sekarang, klik menu dropdown Tanpa Fungsi , pilih AstronautManager, lalu ResetModelCommand.
Membangun dan Menyebarkan
- Cobalah! Buat dan sebarkan aplikasi ke HoloLens.
- Ucapkan Perluas Model untuk melihat model astronaut yang diperluas.
- Gunakan Navigasi untuk memutar masing-masing potongan setelan astronaut.
- Katakanlah Pindahkan Astronaut dan kemudian menggunakan Manipulasi untuk memindahkan potongan-potongan individu dari setelan astronaut.
- Katakan Putar Astronaut untuk memutar potongan-potongan lagi.
- Ucapkan Reset Model untuk mengembalikan astronaut ke bentuk aslinya.
Akhir
Selamat! Anda sekarang telah menyelesaikan MR Input 211: Isyarat.
- Anda tahu cara mendeteksi dan menanggapi peristiwa pelacakan tangan, navigasi, dan manipulasi.
- Anda memahami perbedaan antara gerakan Navigasi dan Manipulasi.
- Anda tahu cara mengubah kursor untuk memberikan umpan balik visual ketika tangan terdeteksi, ketika tangan akan hilang, dan ketika objek mendukung interaksi yang berbeda (Navigasi vs Manipulasi).