Sviluppare con Unity per Android XR

Questa guida fornisce una panoramica dello sviluppo con Unity per Android XR. Android XR funziona con gli strumenti e le funzionalità familiari che ti aspetti da Unity. Poiché il supporto di Android XR di Unity è basato su OpenXR, molte delle funzionalità descritte nella Panoramica di OpenXR sono supportate anche in Unity.

Segui questa guida per scoprire di più su:

  • Supporto di Unity per Android XR
    • Nozioni di base su Unity XR
    • Sviluppo e pubblicazione di app per Android XR
    • Pacchetti Unity per Android XR
      • Unity OpenXR: pacchetto Android XR
      • Estensioni Android XR per Unity
      • Considerazioni sulle funzionalità e sulla compatibilità
  • Input e interazione

Supporto di Unity per Android XR

Quando crei app Unity per Android XR, puoi sfruttare le funzionalità e gli strumenti di realtà virtuale di Unity 6. Sono inclusi i modelli di realtà virtuale mista che utilizzano XR Interaction Toolkit, AR Foundation e il plug-in OpenXR per aiutarti a iniziare rapidamente. Quando crei app con Unity per Android XR, ti consigliamo di utilizzare Universal Render Pipeline (URP) come pipeline di rendering e Vulkan come API grafica. Queste funzionalità ti consentono di sfruttare alcune delle funzionalità grafiche più recenti di Unity, che sono supportate solo con Vulkan. Per ulteriori informazioni su come configurare queste impostazioni, consulta la guida alla configurazione del progetto.

Nozioni di base su Unity XR

Se non hai mai sviluppato con Unity o XR, puoi consultare il Manuale XR di Unity per comprendere i concetti e i flussi di lavoro di XR di base. Il manuale XR contiene informazioni su:

Sviluppo e pubblicazione di app per Android

Unity fornisce documentazione approfondita per lo sviluppo, la compilazione e la pubblicazione per Android, che copre argomenti come le autorizzazioni Android in Unity, le impostazioni di compilazione Android, la compilazione dell'app per Android e il caricamento su Google Play.

Pacchetti Unity per Android XR

Esistono due pacchetti che forniscono il supporto per la creazione di app Unity per Android VR. Entrambi questi pacchetti sono plug-in del provider XR, che possono essere attivati tramite il pacchetto di gestione dei plug-in XR di Unity. Il gestore dei plug-in XR aggiunge le impostazioni del progetto per gestire e offrire assistenza per il caricamento, l'inizializzazione, le impostazioni e il supporto per la compilazione dei plug-in XR. Per consentire all'app di eseguire le funzionalità OpenXR in fase di runtime, queste funzionalità devono essere attivate nel progetto tramite il gestore dei plug-in.

Questa immagine mostra un esempio di dove puoi attivare questi gruppi di funzionalità tramite editor di Unity.

Esempio della schermata di gestione del plug-in Unity XR

Unity OpenXR Android XR

Il pacchetto Unity OpenXR Android XR è un plug-in XR per aggiungere il supporto di Android XR a Unity. Questo plug-in XR fornisce la maggior parte del supporto di Android XR per Unity e abilita il supporto dei dispositivi Android XR per i progetti AR Foundation. AR Foundation è progettato per gli sviluppatori che vogliono creare esperienze AR o di realtà mista. Fornisce l'interfaccia per le funzionalità AR, ma non implementa alcuna funzionalità. L'implementazione è fornita dal pacchetto Unity OpenXR Android XR. Per iniziare a utilizzare questo pacchetto, consulta il manuale del pacchetto, che contiene una guida introduttiva.

Estensioni Android XR per Unity

Le Estensioni Android XR per Unity integrano il pacchetto Android XR di Unity OpenXR e includono funzionalità aggiuntive per aiutarti a creare esperienze immersive. Può essere utilizzato da solo o insieme al pacchetto Unity OpenXR Android XR.

Per iniziare a utilizzare questo pacchetto, consulta la nostra guida alla configurazione del progetto o la guida rapida all'importazione delle Estensioni XR per Android per Unity.

Considerazioni sulle funzionalità e sulla compatibilità

La tabella seguente descrive le funzionalità supportate dal pacchetto Unity OpenXR: Android XR e dal pacchetto Android XR Extensions for Unity e può essere utilizzata per determinare quale pacchetto contiene le funzionalità di cui hai bisogno e eventuali considerazioni sulla compatibilità.

Funzionalità

Unity OpenXR: stringa della funzionalità Android XR

Stringa della funzionalità delle Estensioni Android XR per Unity

Casi d'uso e comportamento previsto

Sessione AR

Android XR: sessione AR

  • Le impostazioni delle funzionalità includono Ottimizza eliminazione buffer (Vulkan)

Android XR (Estensioni): gestione delle sessioni

  • Le impostazioni delle funzionalità includono il sottocampionamento (Vulkan) e URP SpaceWarp (Vulkan)

Per utilizzare le funzionalità di uno dei pacchetti, devi attivare la funzionalità Sessione AR per quel pacchetto. Puoi attivare entrambi i set di funzionalità contemporaneamente; le singole funzionalità gestiranno i conflitti di conseguenza.

Monitoraggio dei dispositivi

n/a

n/a

Il monitoraggio del dispositivo viene utilizzato per monitorare la posizione e la rotazione del dispositivo nello spazio fisico. L'GameObject XR Origin gestisce automaticamente il monitoraggio dei dispositivi e la trasformazione dei dispositivi rilevabili nel sistema di coordinate di Unity tramite il componente XROrigin e la gerarchia GameObject con una fotocamera e TrackedPoseDriver.

Fotocamera

Android XR: fotocamera AR

n/a

Questa funzionalità supporta la stima della luce e il passthrough a schermo intero.

Rilevamento aerei

Android XR: piano AR

Android XR (Estensioni): piano

Queste due funzionalità sono identiche; utilizza una o l'altra. Android XR (Estensioni): Piano è incluso in modo che gli sviluppatori possano utilizzare le funzionalità di monitoraggio degli oggetti e degli ancoraggi permanenti di Android XR (Estensioni) senza dover dipendere dal pacchetto Unity OpenXR Android XR. In futuro, Android XR (Estensioni): Piano verrà rimosso a favore di Android XR: ancora AR.

Monitoraggio degli oggetti

n/a

Android XR (estensioni): monitoraggio degli oggetti

Questa funzionalità supporta il rilevamento e il monitoraggio di oggetti nell'ambiente fisico, se utilizzata in combinazione con una raccolta di oggetti di riferimento.

Rilevamento del volto

Android XR: AR Face

  • Solo XR_ANDROID_avatar_eyes
  • Nessun rilevamento dei volti

Android XR: monitoraggio dei volti

  • XR_ANDROID_face_tracking

Il supporto degli occhi degli avatar è fornito tramite la funzionalità Android XR: AR Face. Accedi alle espressioni facciali di un utente tramite la funzionalità Android XR: monitoraggio dei volti. Se vuoi, puoi utilizzare queste due funzionalità insieme.

Ray cast

Android XR: raycasting AR

  • Ancoraggio aereo
  • Ancoraggio in profondità

n/a

Questa funzionalità ti consente di emettere un raggio e calcolare l'intersezione tra il raggio e gli elementi tracciabili in piano o in profondità rilevati nell'ambiente fisico.

Ancoraggi

Android XR: ancora AR

Android XR (Estensioni): Anchor

  • Le impostazioni della funzionalità includono la persistenza.

Entrambe le funzionalità includono il supporto di ancore spaziali e di piano; utilizza una o l'altra funzionalità. Per gli ancoraggi permanenti, utilizza Android XR (Estensioni): Anchor. In futuro, Android XR (estensioni): Anchor verrà rimosso e tutte le funzionalità di Anchor saranno disponibili in Android XR: AR Anchor.

Occlusione

Android XR: occlusione AR

  • Profondità dell'ambiente

n/a

L'occlusione consente ai contenuti di realtà mista nella tua app di apparire nascosti o parzialmente oscurati dietro gli oggetti nell'ambiente fisico.

Metriche sul rendimento

Metriche sul rendimento di Android XR

n/a

Utilizza questa funzionalità per accedere alle metriche sul rendimento per i dispositivi Android XR.

Livelli di composizione

Supporto del livello di composizione (sono necessari il plug-in OpenXR e il livello di composizione XR)

Android XR: livello di composizione passthrough

  • XR_ANDROID_composition_layer_passthrough_mesh

Utilizza il supporto dei livelli di composizione di Unity per creare livelli di composizione di base (ad es. quad, cilindro, proiezione). Android XR: il livello di composizione passthrough può essere utilizzato per creare un livello passthrough con un mesh personalizzato, leggendo da GameObject di Unity.

Rendering foveale

Rendering foveale (è necessario il plug-in OpenXR)

  • Supporta il rendering foveale basato sul monitoraggio degli occhi: l'area a risoluzione più elevata è centrata dove l'utente sta guardando, rendendola meno evidente

Foveazione (legacy)

Il rendering foveale consente di velocizzare il rendering abbassando la risoluzione delle aree nella visione periferica dell'utente. La funzionalità di rendering foveale di Unity è supportata solo per le app che utilizzano URP e Vulkan. La funzionalità Foveazione (legacy) nelle Estensioni Android XR per Unity supporta anche BiRP e GLES. Ti consigliamo di utilizzare la funzionalità di rendering foveale di Unity, se possibile, e tieni presente che sia URP che Vulkan sono consigliati per la compilazione per Android XR.

Spazio di riferimento illimitato

n/a

Android XR: spazio di riferimento illimitato

Questa funzionalità imposta la modalità di origine del rilevamento di XRInputSubsystem su Senza limiti. Il valore Unbounded indica che XRInputSubsystem monitora tutti gli InputDevice in relazione a un ancoraggio al mondo, che può cambiare.

Modalità di sfumatura dell'ambiente

n/a

Modalità di fusione dell'ambiente

Questa funzionalità ti consente di impostare la modalità di sfumatura dell'ambiente XR, che controlla il modo in cui le immagini virtuali si fondono con l'ambiente reale quando il passthrough è attivo.

Input e interazione

Android XR supporta l'input naturale multimodale.

Oltre al monitoraggio delle mani e degli occhi, sono supportate anche periferiche come controller 6DoF, mouse e tastiera fisica. Ciò significa che le app per Android XR dovrebbero supportare l'interazione con le mani e non si può presumere che tutti i dispositivi siano dotati di controller.

Profili di interazione

Unity utilizza il profilo di interazione per gestire il modo in cui la tua applicazione XR comunica con vari dispositivi e piattaforme XR. Questi profili stabiliscono gli input e gli output previsti per diverse configurazioni hardware, garantendo la compatibilità e la funzionalità coerente su una serie di piattaforme. Se attivi i profili di interazione, puoi assicurarti che la tua applicazione XR funzioni correttamente con dispositivi diversi, mantenga una mappatura degli input coerente e abbia accesso a funzionalità XR specifiche. Per impostare un profilo di interazione:

  1. Apri la finestra Impostazioni progetto (menu: Modifica > Impostazioni progetto).
  2. Fai clic su Gestione plug-in XR per espandere la sezione dei plug-in (se necessario).
  3. Seleziona OpenXR nell'elenco dei plug-in XR.
  4. Nella sezione Profili di interazione, seleziona il pulsante + per aggiungere un profilo.
  5. Seleziona il profilo da aggiungere dall'elenco.

Interazione con le mani

L'interazione con le mani (XR_EXT_hand_interaction) è fornita dal plug-in OpenXR e puoi esporre il layout del dispositivo nel sistema di input di Unity attivando il profilo di interazione con le mani. Utilizza questo profilo di interazione per l'input delle mani supportato dalle quattro pose di azione definite da OpenXR: "pinch", "poke", "aim" e "grip". Se hai bisogno di funzionalità aggiuntive di interazione o rilevamento delle mani, consulta XR Hands in questa pagina.

Interazione con lo sguardo

L'interazione con lo sguardo (XR_EXT_eye_gaze_interaction) è fornita dal plug-in OpenXR e puoi utilizzare questo layout per recuperare i dati sulla posizione degli occhi (posizione e rotazione) restituiti dall'estensione. Scopri di più sull'interazione con il movimento oculare nella guida all'input OpenXR.

Interazione con il controller

Android XR supporta il profilo del controller Oculus Touch per i controller 6DoF. Entrambi questi profili sono forniti dal plug-in OpenXR.

Interazione con il mouse

Il profilo di interazione con il mouse Android XR (XR_ANDROID_mouse_interaction) è fornito dalle estensioni Android XR per Unity. Espone un layout del dispositivo <AndroidXRMouse> nel Unity Input System.

Interazione con la posizione della mano

Il plug-in OpenXR supporta l'interazione con la posa del palmo (XR_EXT_palm_pose), che espone il layout <PalmPose> all'interno del sistema di input di Unity. La posa del palmo non è pensata come alternativa a estensioni o pacchetti che eseguono il rilevamento delle mani per casi d'uso più complessi, ma può essere utilizzata per posizionare contenuti visivi specifici dell'app, come le visualizzazioni degli avatar. La posizione della mano è costituita dalla posizione e dall'orientamento del palmo.

Mani XR

Il pacchetto XR Hands ti consente di accedere ai dati del monitoraggio delle mani (XR_EXT_hand_tracking e XR_FB_hand_tracking_aim) e fornisce un wrapper per convertire i dati delle articolazioni delle mani dal monitoraggio delle mani alle pose di input. Per utilizzare le funzionalità fornite dal pacchetto XR Hands, attiva le funzionalità Hand Tracking Subsystem e Meta Hand Tracking Aim OpenXR.

Esempio che mostra come attivare il rilevamento delle mani

Il pacchetto XR hands può essere utile se hai bisogno di dati più granulari sulle pose o sulle articolazioni delle mani o se devi lavorare con gesti personalizzati.

Per ulteriori dettagli, consulta la documentazione di Unity per la configurazione di XR Hands nel tuo progetto

Scegli un modo per visualizzare le mani

Android XR supporta due modi per eseguire il rendering delle mani: un mesh della mano e un visualizzatore prefab.

Maglia a mano

Il pacchetto Unity per Android XR contiene una funzionalità di mesh della mano che consente di accedere a XR_ANDROID_hand_mesh extension. La funzionalità Maschera delle mani fornisce mesh per le mani dell'utente. La mesh della mano contiene vertici di triangoli che rappresentano la geometria di una mano. Questa funzionalità è prevista per essere utilizzata per fornire un mesh personalizzato che rappresenti la geometria reale delle mani dell'utente per la visualizzazione.

Prefab Mani XR

Il pacchetto XR Hands contiene un Sample chiamato Hands Visualizer, che contiene mani sinistra e destra completamente riggate per il rendering della rappresentazione delle mani dell'utente in base al contesto.

Gesti di sistema

Android XR include un gesto di sistema per aprire un menu che consente agli utenti di tornare indietro, aprire il programma di avvio o visualizzare una panoramica delle applicazioni in esecuzione. L'utente può attivare questo menu di sistema utilizzando un pizzico con la mano dominante.

Quando l'utente interagisce con il menu di navigazione del sistema, l'applicazione risponde solo agli eventi di monitoraggio della testa. Il pacchetto XR Hands può rilevare quando un utente esegue azioni specifiche, ad esempio interagisce con questo menu di navigazione di sistema. Controllando AimFlags SystemGesture e DominantHand, puoi sapere quando viene eseguita questa azione di sistema. Per saperne di più su AimFlags, consulta la documentazione di Enum MetaAimFlags di Unity.

XR Interaction Toolkit

Il pacchetto XR Interaction Toolkit è un sistema di interazione di alto livello basato su componenti per la creazione di esperienze VR e AR. Fornisce un framework che rende disponibili le interazioni 3D e UI dagli eventi di input di Unity. Supporta attività di interazione, tra cui feedback aptico, feedback visivo e locomozione.