Mengembangkan dengan Unity untuk Android XR

Panduan ini memberikan ringkasan pengembangan dengan Unity untuk Android XR. Android XR berfungsi dengan alat dan fitur yang sudah dikenal yang Anda harapkan dari Unity, dan karena dukungan Android XR Unity dibuat 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
      • Pertimbangan Fitur dan Kompatibilitas
  • Input dan interaksi

Dukungan Unity untuk Android XR

Saat mem-build aplikasi Unity untuk Android XR, Anda dapat memanfaatkan alat dan kemampuan realitas campuran di Unity 6. Ini mencakup template realitas campuran yang menggunakan XR Interaction Toolkit, AR Foundation, dan OpenXR Plugin, untuk membantu Anda memulai dengan cepat. Saat mem-build 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 yang lebih baru dari Unity, yang hanya didukung dengan Vulkan. Tinjau panduan penyiapan project untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi setelan ini.

Dasar-Dasar Unity XR

Jika Anda baru mengenal pengembangan Unity atau XR, Anda dapat membaca Manual XR Unity untuk memahami konsep dan alur kerja XR dasar. Panduan VR berisi informasi tentang:

Mengembangkan dan memublikasikan aplikasi untuk Android

Unity menyediakan dokumentasi mendalam untuk mengembangkan, mem-build, dan memublikasikan untuk Android, yang mencakup topik-topik seperti Izin Android di Unity, Setelan Build Android, Mem-build aplikasi untuk Android, dan Mengirim ke Google Play.

Paket Unity untuk Android XR

Ada dua paket yang menyediakan dukungan untuk mem-build aplikasi Unity untuk Android XR. Kedua paket ini adalah plugin penyedia XR, yang dapat diaktifkan melalui paket Pengelolaan Plugin XR Unity. Pengelola plugin XR menambahkan Project Settings untuk mengelola dan menawarkan bantuan terkait pemuatan, inisialisasi, setelan, dan dukungan build untuk plugin 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.

Contoh layar pengelolaan plugin unity xr

Unity OpenXR Android XR

Paket Unity OpenXR Android XR adalah Plugin XR untuk menambahkan dukungan Android XR ke Unity. Plugin 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 menerapkan fitur apa pun sendiri. Paket Unity OpenXR Android XR menyediakan implementasi. Untuk memulai paket ini, lihat manual paket, yang berisi panduan Memulai.

Ekstensi Android XR untuk Unity

Ekstensi Android XR untuk Unity melengkapi paket Android XR Unity OpenXR, dan menyertakan fitur tambahan untuk membantu Anda membuat pengalaman imersif. Paket ini dapat digunakan sendiri atau bersama dengan paket Unity OpenXR Android XR.

Untuk memulai paket ini, ikuti panduan penyiapan project atau panduan memulai untuk mengimpor Ekstensi XR Android untuk Unity.

Pertimbangan Fitur dan Kompatibilitas

Tabel berikut menjelaskan fitur yang didukung oleh Unity OpenXR: paket Android XR dan paket Ekstensi Android XR untuk Unity, dan dapat digunakan untuk menentukan paket mana yang berisi fitur yang Anda perlukan dan pertimbangan kompatibilitas apa pun.

Fitur

Unity OpenXR: String fitur Android XR

String fitur Ekstensi Android XR untuk Unity

Kasus penggunaan dan perilaku yang diharapkan

Sesi AR

Android XR: Sesi AR

  • Setelan fitur mencakup Optimize Buffer Discards (Vulkan)

Android XR (Ekstensi): Pengelolaan Sesi

  • Setelan fitur mencakup Subsampling (Vulkan) dan URP SpaceWarp (Vulkan)

Untuk menggunakan fitur dari salah satu paket, Anda harus mengaktifkan fitur Sesi AR untuk paket tersebut. Anda dapat mengaktifkan kedua kumpulan fitur secara bersamaan; setiap fitur akan menangani konflik yang sesuai.

Pelacakan perangkat

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 melalui komponen XROrigin dan hierarki GameObject dengan Kamera dan TrackedPoseDriver.

Kamera

Android XR: Kamera AR

t/a

Fitur ini memberikan dukungan untuk estimasi cahaya dan passthrough layar penuh.

Deteksi bidang

Android XR: AR Plane

Android XR (Ekstensi): Bidang

Kedua fitur ini identik; gunakan salah satunya. Android XR (Extensions): Plane disertakan agar developer dapat menggunakan fitur Android XR (Extensions): Object Tracking dan anchor persisten tanpa harus memiliki dependensi pada paket Android XR Unity OpenXR. Di masa mendatang, Android XR (Extensions): Plane akan dihapus dan diganti dengan Android XR: AR Anchor.

Pelacakan objek

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.

Pelacakan wajah

Android XR: Wajah AR

  • Khusus XR_ANDROID_avatar_eyes
  • Tidak ada pelacakan wajah

Android XR: Pelacakan Wajah

  • XR_ANDROID_face_tracking

Dukungan mata avatar disediakan melalui fitur Android XR: AR Face. Akses ekspresi wajah pengguna melalui fitur Android XR: Pelacakan Wajah. Kedua fitur ini dapat digunakan bersama, jika diinginkan.

Ray cast

Android XR: AR Raycast

  • Plane Anchor
  • Depth Anchor

t/a

Fitur ini memungkinkan Anda memancarkan sinar dan menghitung persimpangan antara sinar tersebut dan pelacak bidang atau pelacak kedalaman yang terdeteksi di lingkungan fisik.

Anker

Android XR: AR Anchor

Android XR (Ekstensi): Anchor

  • Setelan fitur mencakup persistensi.

Kedua fitur tersebut mencakup dukungan untuk anchor spasial dan anchor bidang; gunakan salah satu fitur. Untuk anchor persisten, gunakan Android XR (Extensions): Anchor. Di masa mendatang, Android XR (Extensions): Anchor akan dihapus dan semua fitur Anchor akan berada di Android XR: AR Anchor.

Oklusi

Android XR: Oklusi AR

  • Kedalaman Lingkungan

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 untuk perangkat Android XR.

Lapisan Komposisi

Dukungan Lapisan Komposisi (Plugin OpenXR dan Lapisan Komposisi XR diperlukan)

Android XR: Lapisan Komposisi Passthrough

  • XR_ANDROID_composition_layer_passthrough_mesh

Gunakan Dukungan Lapisan Komposisi Unity untuk membuat lapisan komposisi dasar (misalnya, quad, silinder, proyeksi). Android XR: Lapisan Komposisi Passthrough dapat digunakan untuk membuat lapisan passthrough dengan mesh kustom, yang membaca dari GameObject Unity.

Rendering Foveated

Rendering Foveated (Plugin OpenXR diperlukan)

  • Mendukung rendering foveated yang dilacak mata: area resolusi yang lebih tinggi dipusatkan di tempat pengguna saat ini melihat sehingga tidak terlalu terlihat oleh pengguna

Foveation (Lama)

Rendering foveated memungkinkan percepatan rendering dengan menurunkan resolusi area di penglihatan periferal pengguna. Fitur rendering foveated Unity hanya didukung untuk aplikasi yang menggunakan URP dan Vulkan. Fitur Foveation (Lama) di Ekstensi Android XR untuk Unity juga mendukung BiRP dan GLES. Sebaiknya gunakan fitur rendering foveated Unity jika memungkinkan, dan perhatikan bahwa URP dan Vulkan direkomendasikan saat mem-build untuk Android XR.

Ruang Referensi Tanpa Batas

t/a

Android XR: Ruang Referensi Tanpa Batas

Fitur ini menetapkan mode asal pelacakan XRInputSubsystem ke Tidak terbatas. Tidak terbatas menunjukkan bahwa XRInputSubsystem melacak semua InputDevices sehubungan dengan anchor dunia, yang dapat berubah.

Mode Gabungan Lingkungan

t/a

Mode Gabungan Lingkungan

Fitur ini memungkinkan Anda menetapkan XR Environment Blend Mode, yang mengontrol cara gambar virtual menyatu 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 VR Anda berkomunikasi dengan berbagai perangkat dan platform VR. Profil ini menetapkan input dan output yang diharapkan untuk berbagai konfigurasi hardware, sehingga memastikan kompatibilitas dan fungsi yang konsisten di berbagai platform. Dengan mengaktifkan profil interaksi, Anda dapat memastikan bahwa aplikasi XR berfungsi dengan benar dengan berbagai perangkat, mempertahankan pemetaan input yang konsisten, dan memiliki akses ke fitur XR tertentu. Untuk menetapkan profil interaksi:

  1. Buka jendela Project Settings (menu: Edit > Project Settings).
  2. Klik XR Plug-in Management untuk meluaskan bagian plugin (jika diperlukan).
  3. Pilih OpenXR dalam daftar plugin XR.
  4. Di bagian Profil Interaksi, pilih tombol + untuk menambahkan profil.
  5. 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 di Unity Input System dengan mengaktifkan Profil Interaksi Tangan. Gunakan profil interaksi ini untuk input tangan yang didukung oleh empat pose tindakan yang ditentukan oleh OpenXR: "cubit", "cubit", "arahkan", dan "genggam". 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 ekstensi. Baca selengkapnya tentang interaksi pandangan 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. Fungsi ini mengekspos tata letak perangkat <AndroidXRMouse> di Unity Input System.

Interaksi Pose Telapak Tangan

Plugin OpenXR memberikan dukungan untuk Interaksi Posisi Telapak Tangan (XR_EXT_palm_pose), yang mengekspos tata letak <PalmPose> dalam Sistem Input Unity. Pose telapak tangan tidak dimaksudkan sebagai alternatif untuk ekstensi atau paket yang melakukan pelacakan tangan untuk kasus penggunaan yang lebih kompleks; sebagai gantinya, pose telapak tangan dapat digunakan untuk menempatkan konten visual khusus aplikasi seperti visual avatar. Pose telapak tangan terdiri dari posisi dan orientasi telapak tangan.

XR Hands

Paket XR Hands memungkinkan Anda mengakses data pelacakan tangan (XR_EXT_hand_tracking dan XR_FB_hand_tracking_aim) dan menyediakan wrapper untuk mengonversi data sendi tangan dari pelacakan tangan ke pose input. Untuk menggunakan fitur yang disediakan oleh paket XR Hands, aktifkan fitur Subsistem Pelacakan Tangan dan Meta Hand Tracking Aim OpenXR.

Contoh yang menunjukkan cara mengaktifkan pelacakan tangan

Paket tangan XR dapat berguna jika Anda memerlukan data pose tangan atau sendi tangan yang lebih terperinci atau saat Anda perlu menggunakan gestur kustom.

Untuk mengetahui detail selengkapnya, lihat dokumentasi Unity untuk menyiapkan XR Hands dalam project Anda

Memilih cara merender tangan

Android XR mendukung dua cara untuk merender tangan: mesh tangan dan visualiser pra-fabrikasi.

Mesh tangan

Paket Android XR Unity berisi fitur Hand Mesh yang memberikan akses ke XR_ANDROID_hand_mesh extension. Fitur Hand Mesh menyediakan mesh untuk tangan pengguna. Mesh tangan berisi vertikal segitiga yang mewakili geometri tangan. Fitur ini dimaksudkan untuk digunakan guna memberikan mesh yang dipersonalisasi yang mewakili geometri tangan pengguna yang sebenarnya untuk visualisasi.

Prefab Tangan XR

Paket XR Hands berisi contoh yang disebut Visualizer tangan, 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 bagi pengguna untuk kembali, membuka peluncur, atau mendapatkan ringkasan aplikasi yang sedang berjalan. Pengguna dapat mengaktifkan menu sistem ini dengan menggunakan cubit 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 akan memberi tahu Anda saat tindakan sistem ini dilakukan. Untuk informasi selengkapnya tentang AimFlags, lihat dokumentasi Enum MetaAimFlags Unity.

Toolkit Interaksi XR

Paket XR Interaction Toolkit adalah sistem interaksi tingkat tinggi berbasis komponen untuk membuat pengalaman VR dan AR. Library 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 gerakan.