Panduan ini memberikan ringkasan tentang pengembangan dengan Unity untuk Android XR. Android XR berfungsi dengan alat dan fitur yang sudah Anda kenal dari Unity, dan karena dukungan Android XR Unity dibangun di atas OpenXR, banyak fitur yang dijelaskan dalam Ringkasan OpenXR juga didukung di Unity.
Ikuti panduan ini untuk mempelajari:
- Dukungan Unity untuk Android XR
- Dasar-dasar Unity XR
- Mengembangkan dan memublikasikan aplikasi untuk Android XR
- Paket Unity untuk Android XR
- Unity OpenXR: Paket Android XR
- Ekstensi Android XR untuk Unity
- Fitur dan Pertimbangan Kompatibilitas
- Input dan interaksi
Dukungan Unity untuk Android XR
Saat membangun aplikasi Unity untuk Android XR, Anda dapat memanfaatkan alat dan kemampuan mixed reality di Unity 6 versi terbaru. Hal ini mencakup template mixed reality yang menggunakan XR Interaction Toolkit, AR Foundation, dan OpenXR Plugin, untuk membantu Anda memulai dengan cepat. Saat membangun aplikasi dengan Unity untuk Android XR, sebaiknya gunakan Universal Render Pipeline (URP) sebagai pipeline render dan Vulkan sebagai Graphics API. Fitur ini memungkinkan Anda memanfaatkan beberapa fitur grafis Unity, yang hanya didukung dengan Vulkan. Tinjau panduan penyiapan project untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi setelan ini.
Dasar-Dasar XR Unity
Jika Anda baru mengenal Unity atau pengembangan XR, Anda dapat melihat Manual XR Unity untuk memahami konsep dan alur kerja XR dasar. Manual XR berisi informasi tentang:
- Plugin penyedia XR, termasuk Unity OpenXR: Android XR dan Ekstensi Android XR untuk Unity
- Paket dukungan XR untuk menambahkan fitur tingkat aplikasi tambahan
- Panduan arsitektur XR yang menjelaskan stack teknologi Unity XR dan subsistem XR
- Penyiapan project XR
- Membangun dan menjalankan aplikasi XR
- Panduan grafis XR, termasuk Universal Render Pipeline, rendering stereo, rendering foveated, region render multi-tampilan, dan pengaturan waktu frame VR
- Panduan audio XR, termasuk dukungan untuk spatializer audio
Mengembangkan dan memublikasikan aplikasi untuk Android
Unity menyediakan dokumentasi mendalam untuk mengembangkan, membuat build, dan memublikasikan untuk Android, yang mencakup topik termasuk izin Android di Unity, Setelan Build Android, Membangun aplikasi untuk Android, dan Mengirimkan ke Google Play.
Paket Unity untuk Android XR
Ada dua paket yang menyediakan dukungan untuk membangun aplikasi Unity untuk Android XR. Kedua paket ini adalah plugin penyedia XR, yang dapat diaktifkan melalui paket Pengelolaan Plugin XR Unity. Pengelola plug-in XR menambahkan Setelan Project untuk mengelola dan menawarkan bantuan terkait pemuatan, inisialisasi, setelan, dan dukungan build untuk plug-in XR. Agar aplikasi Anda dapat menjalankan fitur OpenXR saat runtime, project harus mengaktifkan fitur ini melalui pengelola plugin.
Gambar ini menunjukkan contoh tempat Anda dapat mengaktifkan grup fitur ini melalui editor Unity.
Unity OpenXR Android XR
Paket Unity OpenXR Android XR adalah Plug-in XR untuk menambahkan dukungan Android XR ke Unity. Plug-in XR ini menyediakan sebagian besar dukungan Android XR untuk Unity, dan memungkinkan dukungan perangkat Android XR untuk project AR Foundation. AR Foundation dirancang untuk developer yang ingin membuat pengalaman AR atau mixed reality. Library ini menyediakan antarmuka untuk fitur AR, tetapi tidak mengimplementasikan fitur apa pun. Paket Unity OpenXR Android XR menyediakan implementasi. Untuk mulai menggunakan paket ini, lihat manual paket, yang berisi panduan Memulai.
Ekstensi Android XR untuk Unity
Ekstensi Android XR untuk Unity melengkapi paket Android XR OpenXR Unity, dan menyertakan fitur tambahan untuk membantu Anda membangun pengalaman imersif. Paket ini dapat digunakan sendiri atau bersama dengan paket Unity OpenXR Android XR.
Untuk mulai menggunakan paket ini, ikuti panduan penyiapan project kami atau mulai cepat untuk mengimpor Android XR Extensions for Unity.
Fitur dan Pertimbangan Kompatibilitas
Tabel berikut menjelaskan fitur yang didukung oleh paket Unity OpenXR: Android XR dan paket Android XR Extensions for Unity, dan dapat digunakan untuk menentukan paket mana yang berisi fitur yang Anda butuhkan dan pertimbangan kompatibilitas.
Fitur |
Unity OpenXR: String fitur Android XR |
String fitur Ekstensi Android XR untuk Unity |
Kasus penggunaan dan perilaku yang diharapkan |
---|---|---|---|
Android XR: Sesi AR
|
Android XR (Ekstensi): Pengelolaan Sesi
|
Untuk menggunakan fitur dari salah satu paket, Anda harus mengaktifkan fitur Sesi AR untuk paket tersebut. Anda dapat mengaktifkan kedua set fitur secara bersamaan; masing-masing fitur akan menangani konflik dengan tepat. |
|
T/A |
T/A |
Pelacakan perangkat digunakan untuk melacak posisi dan rotasi perangkat di ruang fisik. GameObject XR Origin secara otomatis menangani pelacakan perangkat dan mengubah objek yang dapat dilacak menjadi sistem koordinat Unity menggunakan komponen XROrigin dan hierarki GameObject dengan Kamera dan TrackedPoseDriver. |
|
Android XR: Kamera AR |
T/A |
Fitur ini memberikan dukungan untuk estimasi cahaya dan passthrough layar penuh. |
|
Android XR: Bidang AR |
Android XR (Ekstensi): Bidang |
Kedua fitur ini identik; gunakan salah satunya. Android XR (Ekstensi): Plane disertakan sehingga developer dapat menggunakan fitur Android XR (Ekstensi): Object Tracking dan anchor persisten tanpa harus memiliki dependensi pada paket Android XR Unity OpenXR. Pada masa mendatang, Android XR (Ekstensi): Plane akan dihapus dan digantikan dengan Android XR: AR Anchor. |
|
T/A |
Android XR (Ekstensi): Pelacakan Objek |
Fitur ini memberikan dukungan untuk mendeteksi dan melacak objek di lingkungan fisik, yang digunakan bersama dengan library objek referensi. |
|
Android XR: Wajah AR
|
Android XR: Pelacakan Wajah
|
Dukungan mata avatar disediakan melalui fitur Android XR: AR Face. Mengakses ekspresi wajah pengguna melalui fitur Android XR: Face Tracking. Kedua fitur ini dapat digunakan bersama-sama. |
|
Android XR: AR Raycast
|
T/A |
Fitur ini memungkinkan Anda melakukan casting sinar dan menghitung persimpangan antara sinar tersebut dan objek yang dapat dilacak bidang atau objek yang dapat dilacak kedalaman yang terdeteksi di lingkungan fisik. |
|
Android XR: Anchor AR |
Android XR (Ekstensi): Anchor
|
Kedua fitur ini mencakup dukungan untuk anchor spasial dan anchor bidang; gunakan salah satu fitur. Untuk anchor persisten, gunakan Android XR (Ekstensi): Anchor. Pada masa mendatang, Android XR (Ekstensi): Anchor akan dihapus dan semua fitur Anchor akan berada di Android XR: AR Anchor. |
|
Android XR: Penutupan AR
|
T/A |
Oklusi memungkinkan konten mixed reality di aplikasi Anda tampak tersembunyi atau sebagian terhalang di belakang objek di lingkungan fisik. |
|
Metrik Performa |
Metrik Performa Android XR |
T/A |
Gunakan fitur ini untuk mengakses metrik performa perangkat Android XR. |
Dukungan Lapisan Komposisi (Plugin OpenXR dan Lapisan Komposisi XR diperlukan) |
Android XR: Lapisan Komposisi Passthrough
|
Gunakan Dukungan Lapisan Komposisi Unity untuk membuat lapisan komposisi dasar (misalnya, quad, silinder, proyeksi). Android XR: Passthrough Composition Layer dapat digunakan untuk membuat lapisan passthrough dengan mesh kustom, yang dibaca dari GameObject Unity. |
|
Foveated Rendering (Plugin OpenXR diperlukan)
|
Foveation (Lama) |
Foveated rendering memungkinkan percepatan rendering dengan menurunkan resolusi area dalam penglihatan periferal pengguna. Fitur foveated rendering Unity hanya didukung untuk aplikasi yang menggunakan URP dan Vulkan. Fitur Foveation (Legacy) di Android XR Extensions untuk Unity juga mendukung Built-in Render Pipeline dan OpenGL ES. Sebaiknya gunakan fitur foveated rendering Unity jika memungkinkan, dan perhatikan bahwa URP dan Vulkan direkomendasikan saat membangun untuk Android XR. |
|
T/A |
Android XR: Ruang Referensi Tanpa Batas |
Fitur ini menyetel mode asal pelacakan XRInputSubsystem ke Unbounded. Tidak terikat menunjukkan bahwa XRInputSubsystem melacak semua InputDevice dalam kaitannya dengan anchor dunia, yang dapat berubah. |
|
T/A |
Mode Blend Lingkungan |
Fitur ini memungkinkan Anda menyetel Mode Perpaduan Lingkungan XR, yang mengontrol cara gambar virtual berpadu dengan lingkungan dunia nyata saat passthrough diaktifkan. |
Input dan interaksi
Android XR mendukung input alami multi-modal.
Selain pelacakan tangan dan mata, periferal seperti pengontrol 6DoF, mouse, dan keyboard fisik juga didukung. Artinya, aplikasi untuk Android XR diharapkan mendukung interaksi tangan, dan tidak dapat diasumsikan bahwa semua perangkat akan dilengkapi dengan pengontrol.
Profil Interaksi
Unity menggunakan profil interaksi untuk mengelola cara aplikasi XR Anda berkomunikasi dengan berbagai perangkat dan platform XR. Profil ini menetapkan input dan output yang diharapkan untuk berbagai konfigurasi hardware, sehingga meningkatkan kompatibilitas dan fungsi yang konsisten di berbagai platform. Dengan mengaktifkan profil interaksi, Anda dapat membantu memastikan aplikasi XR Anda berfungsi dengan benar di berbagai perangkat, mempertahankan pemetaan input yang konsisten, dan memiliki akses ke fitur XR tertentu. Untuk menyetel profil interaksi:
- Buka jendela Project Settings (menu: Edit > Project Settings).
- Klik XR Plug-in Management untuk meluaskan bagian plug-in (jika perlu).
- Pilih OpenXR dalam daftar plug-in XR.
- Di bagian Profil Interaksi, pilih tombol + untuk menambahkan profil.
- Pilih profil yang akan ditambahkan dari daftar.
Interaksi Tangan
Interaksi tangan (XR_EXT_hand_interaction
) disediakan oleh
Plugin OpenXR, dan Anda dapat mengekspos tata letak perangkat <HandInteraction>
di Unity Input System dengan mengaktifkan Hand
Interaction Profile. Gunakan profil interaksi ini untuk input
tangan yang didukung oleh empat pose tindakan yang ditentukan oleh OpenXR: "pinch", "poke",
"aim", dan "grip". Jika Anda memerlukan fungsi interaksi tangan atau pelacakan tangan tambahan, lihat XR Hands di halaman ini.
Interaksi Tatapan Mata
Interaksi tatapan mata (XR_EXT_eye_gaze_interaction
) disediakan oleh Plugin OpenXR, dan Anda dapat menggunakan tata letak ini untuk mengambil data pose mata (posisi dan rotasi) yang ditampilkan oleh ekstensi. Baca selengkapnya tentang
interaksi tatapan mata dalam panduan Input OpenXR.
Interaksi Pengontrol
Android XR mendukung Profil Pengontrol Oculus Touch untuk pengontrol 6DoF. Kedua profil ini disediakan oleh Plugin OpenXR.
Interaksi Mouse
Profil Interaksi Mouse Android XR (XR_ANDROID_mouse_interaction
)
disediakan oleh Ekstensi Android XR untuk Unity. Plugin ini mengekspos tata letak perangkat
<AndroidXRMouse>
di Unity Input System.
Interaksi Pose Telapak Tangan
Plugin OpenXR menyediakan dukungan untuk Interaksi Pose Telapak Tangan (XR_EXT_palm_pose
), yang
mengekspos tata letak <PalmPose>
dalam Unity Input System.
Pose telapak tangan tidak dimaksudkan sebagai alternatif untuk ekstensi atau paket yang melakukan pelacakan tangan untuk kasus penggunaan yang lebih kompleks; tetapi dapat digunakan untuk menempatkan konten visual khusus aplikasi seperti visual avatar. Pose telapak tangan terdiri
dari posisi dan orientasi telapak tangan.
Tangan XR
Paket XR Hands memungkinkan Anda mengakses data pelacakan tangan—menggunakan
XR_EXT_hand_tracking
dan
XR_FB_hand_tracking_aim
—serta menyediakan wrapper untuk mengonversi
data sambungan tangan dari pelacakan tangan ke pose input. Untuk menggunakan fitur yang disediakan oleh paket XR Hands, aktifkan fitur Hand Tracking Subsystem dan Meta Hand Tracking Aim OpenXR.
Paket tangan XR dapat berguna jika Anda memerlukan data pose tangan atau sendi tangan yang lebih terperinci atau saat Anda perlu bekerja dengan gestur kustom.
Untuk mengetahui detail selengkapnya, lihat dokumentasi Unity tentang cara menyiapkan Tangan XR di project Anda
Memilih cara merender tangan
Android XR mendukung dua cara merender tangan: mesh tangan dan visualizer prefab.
Mesh tangan
Paket Android XR Unity berisi fitur Mesh Tangan yang menyediakan akses ke XR_ANDROID_hand_mesh extension
. Fitur Mesh Tangan menyediakan mesh untuk tangan pengguna. Mesh tangan berisi verteks segitiga yang merepresentasikan geometri tangan. Fitur ini dimaksudkan untuk
digunakan untuk menyediakan mesh yang dipersonalisasi yang merepresentasikan geometri nyata dari
tangan pengguna untuk visualisasi.
Prefab Tangan XR
Paket XR Hands berisi contoh bernama Hands visualizer, yang berisi tangan kiri dan kanan yang sepenuhnya di-rig untuk merender representasi tangan pengguna yang sesuai dengan konteks.
Gestur sistem
Android XR menyertakan gestur sistem untuk membuka menu agar pengguna dapat kembali, membuka peluncur, atau melihat ringkasan aplikasi yang sedang berjalan. Pengguna dapat mengaktifkan menu sistem ini dengan menggunakan gerakan mencubit tangan dominan.
Saat pengguna berinteraksi dengan menu navigasi sistem, aplikasi hanya akan merespons peristiwa pelacakan kepala. Paket XR Hands dapat mendeteksi saat pengguna melakukan tindakan tertentu seperti berinteraksi dengan menu navigasi sistem ini. Memeriksa AimFlags
, SystemGesture
, dan DominantHand
memungkinkan Anda mengetahui kapan tindakan sistem ini dilakukan. Untuk mengetahui informasi selengkapnya tentang AimFlags
, lihat
dokumentasi Enum MetaAimFlags Unity.
XR Interaction Toolkit
Paket XR Interaction Toolkit adalah sistem interaksi tingkat tinggi berbasis komponen untuk membuat pengalaman VR dan AR. Framework ini menyediakan framework yang membuat interaksi 3D dan UI tersedia dari peristiwa input Unity. Fitur ini mendukung tugas interaksi termasuk respons haptik, respons visual, dan gerak.
OpenXR™ dan logo OpenXR adalah merek dagang yang dimiliki oleh The Khronos Group Inc. dan terdaftar sebagai merek dagang di China, Uni Eropa, Jepang, dan Inggris Raya.