Sviluppare con Unity per Android XR

Dispositivi XR applicabili
Queste indicazioni ti aiutano a creare esperienze per questi tipi di dispositivi XR.
Visori XR
Occhiali XR con cavo

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 e, 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 di 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
      • Funzionalità e considerazioni sulla compatibilità
  • Input e interazione

Supporto di Unity per Android XR

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

Nozioni di base su Unity XR

Se non hai mai utilizzato Unity o lo sviluppo XR, puoi consultare il manuale XR di Unity per comprendere i concetti e i workflow di base di XR. Il manuale XR contiene informazioni su:

Sviluppa e pubblica app per Android

Unity fornisce una documentazione approfondita per lo sviluppo, la creazione e la pubblicazione per Android, che copre argomenti tra cui Autorizzazioni Android in Unity, Impostazioni di build Android, Creazione dell'app per Android e Pubblicazione su Google Play.

Pacchetti Unity per Android XR

Esistono due pacchetti che forniscono il supporto per la creazione di app Unity per Android XR. Entrambi questi pacchetti sono plug-in del provider XR, che possono essere attivati tramite il pacchetto XR Plug-in Management di Unity. Il gestore dei plug-in XR aggiunge le impostazioni progetto per gestire e offrire assistenza per il caricamento, l'inizializzazione, le impostazioni e il supporto della build per i plug-in XR. Per consentire alla tua app di eseguire le funzionalità OpenXR in fase di runtime, il progetto deve avere queste funzionalità abilitate tramite il gestore dei plug-in.

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

Figura 1. Esempio della schermata Unity XR Plug-in Management.

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 consente 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à. Il pacchetto Unity OpenXR Android XR fornisce l'implementazione. 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 Unity OpenXR Android XR 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, segui la nostra guida alla configurazione del progetto o la guida rapida per l'importazione delle estensioni Android XR per Unity.

Funzionalità e considerazioni sulla compatibilità

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

Funzionalità

Unity OpenXR: stringa della funzionalità Android XR

Stringa della funzionalità Estensioni Android XR per Unity

Casi d'uso e comportamento previsto

Sessione AR

Android XR: sessione AR

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

Android XR (Extensions): Session Management

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

Per utilizzare le funzionalità di uno dei due 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/D

N/D

Il monitoraggio del dispositivo viene utilizzato per monitorare la posizione e la rotazione del dispositivo nello spazio fisico. Il GameObject XR Origin gestisce automaticamente il tracciamento del dispositivo e la trasformazione degli elementi tracciabili nel sistema di coordinate di Unity utilizzando il componente XROrigin e la gerarchia GameObject con una videocamera e TrackedPoseDriver.

Fotocamera

Android XR: fotocamera AR

N/D

Questa funzionalità fornisce supporto per la stima della luce e il passthrough a schermo intero.

Rilevamento di piani

Android XR: AR Plane

N/D

Questa funzionalità fornisce supporto per il rilevamento e il monitoraggio di superfici piane nell'ambiente fisico.

Tracciamento degli oggetti

N/D

Android XR (Extensions): Object Tracking

Questa funzionalità fornisce supporto per il rilevamento e il monitoraggio di oggetti nell'ambiente fisico, utilizzati in combinazione con una libreria di oggetti di riferimento.

Tracciamento facciale

Android XR: AR Face

  • Solo XR_ANDROID_eye_tracking
  • Nessun tracciamento facciale

Android XR: tracciamento facciale

  • XR_ANDROID_face_tracking

Il supporto per gli occhi dell'avatar è fornito tramite la funzionalità Android XR: AR Face. Accedere alle espressioni facciali di un utente tramite la funzionalità Android XR: Tracciamento facciale. Queste due funzionalità possono essere utilizzate insieme.

Ray cast

Android XR: AR Raycast

  • Ancoraggio piano
  • Ancoraggio di profondità

N/D

Questa funzionalità ti consente di proiettare un raggio e calcolare l'intersezione tra questo raggio e gli elementi tracciabili del piano o della profondità rilevati nell'ambiente fisico.

Ancoraggi

Android XR: ancora AR

N/D

AR Anchor supporta ancoraggi spaziali, piani e persistenti tramite AR Foundation.

Occlusione

Android XR: occlusione AR

  • Profondità dell'ambiente

N/D

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

Metriche delle prestazioni

Metriche sul rendimento di Android XR

N/D

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

Livelli di composizione

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

Android XR: Passthrough Composition Layer

  • 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: Passthrough Composition Layer può essere utilizzato per creare un livello passthrough con una mesh personalizzata, leggendo dal GameObject di Unity.

Rendering foveated

Rendering foveated (è richiesto il plug-in OpenXR)

  • Supporta il rendering foveated con tracciamento oculare: l'area con risoluzione più elevata è centrata sul punto in cui l'utente sta guardando, rendendola meno evidente per l'utente

Foveation (legacy)

Il rendering foveated consente di velocizzare il rendering riducendo la risoluzione delle aree nella visione periferica dell'utente. La funzionalità di rendering foveated di Unity è supportata solo per le app che utilizzano URP e Vulkan. La funzionalità di foveazione (legacy) nelle estensioni Android XR per Unity supporta anche la pipeline di rendering integrata e OpenGL ES. Ti consigliamo di utilizzare la funzionalità di foveated rendering di Unity, se possibile, e tieni presente che sia URP che Vulkan sono consigliati per la creazione di app per Android XR.

Spazio di riferimento non limitato

N/D

Android XR: spazio di riferimento illimitato

Questa funzionalità imposta la modalità di origine del monitoraggio di XRInputSubsystem su Unbounded. Unbounded indica che XRInputSubsystem monitora tutti gli InputDevice in relazione a un'ancora spaziale, che può cambiare.

Modalità di fusione con l'ambiente

N/D

Modalità fusione ambiente

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

Geospatial (VPS)

N/D

Android XR: Geospatial

Consente a XRGeospatialManager di accedere alle funzionalità del Visual Positioning System (VPS), verificare la disponibilità della posizione, calcolare le pose geospaziali e configurare il rilevamento dei piani per le ancora di superficie e geospaziali.

Google Cloud Auth

N/D

Android XR: Google Cloud

Fornisce strategie di configurazione dell'autenticazione della sessione (chiave API, senza chiave e token di autenticazione) per i servizi di supporto cloud.

Multimodal Face

N/D

Android XR (Extensions): Multimodal Face

Estende Unity ARFace con modalità di tracciamento facciale multimodali configurabili (XRFaceTrackerMode).

Display dello stato della batteria

N/D

Display dello stato della batteria

Consente di eseguire query sullo stato della batteria in fase di runtime e sul livello di carica dei controller connessi e dei percorsi di input utilizzando XRBatteryStateDisplayFeature.

Attenuazione passthrough globale

Android XR: fotocamera AR

N/D

Consente di eseguire query e impostare i livelli di oscuramento del passthrough del mondo reale utilizzando ARCameraFeature di Unity.

Enumerazione delle proprietà di sistema

N/D

Android XR: proprietà di sistema

Enumera le proprietà delle estensioni di runtime e le funzionalità del dispositivo utilizzando XR_ANDROID_enumerate_system_extension_properties.

Impostazioni consigliate

N/D

Android XR: impostazioni consigliate

Consente di eseguire query sugli stati di pre-lancio dell'ambiente di runtime (tra cui la modalità di fusione dell'ambiente, l'opacità del passthrough e le modalità di input attive) utilizzando XRRecommendedSettingsFeature.TryGetRecommendedSettings.

Rilevamento dei riquadri di delimitazione

Android XR: riquadro di delimitazione AR

Spatial Entities (Extensions): Bounding Box

Fornisce il supporto per il rilevamento dei riquadri di delimitazione per gli oggetti 3D nell'ambiente fisico utilizzando il framework OpenXR Spatial Entities (SpatialBoundingBoxSubsystem).

Ancoraggi condivisibili

N/D

Spatial Entities (Extensions): Shareable Anchors

Estende le funzionalità di ancoraggio utilizzando ARShareableAnchorManager e XRShareableAnchorSubsystem, incluso il collegamento di ancoraggi geospaziali (TryAttachGeospatialAnchor) e ancoraggi di superficie (TryAttachSurfaceAnchorAsync) se utilizzati con Android XR: Geospatial.

Contenitore spaziale

N/D

Spatial Container

Consente di eseguire il rendering dei contenuti dell'applicazione all'interno di un contenitore volumetrico 3D gestito dal sistema in modalità spazio intero, con API ed eventi di callback su XRSpatialContainerFeature per eseguire query e richiedere lo stato, i limiti e la visibilità del contenitore.

Input e interazione

Android XR supporta l'input naturale multimodale.

Oltre al tracciamento oculare e delle mani, sono supportate anche periferiche come controller 6DoF, mouse e tastiera fisica. Ciò significa che le app per Android XR devono 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 l'applicazione XR comunica con vari dispositivi XR e piattaforme. Questi profili stabiliscono gli input e gli output previsti per le diverse configurazioni hardware, promuovendo la compatibilità e la funzionalità coerente su una gamma di piattaforme. Attivando i profili di interazione, puoi contribuire a garantire che la tua applicazione XR funzioni correttamente con diversi dispositivi, 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 XR Plug-in Management per espandere la sezione dei plug-in (se necessario).
  3. Seleziona OpenXR nell'elenco dei plug-in XR.
  4. Nella sezione Interaction Profiles, 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 <HandInteraction> nel sistema di input di Unity attivando il profilo di interazione con le mani. Utilizza questo profilo di interazione per l'input manuale supportato dalle quattro pose di azione definite da OpenXR: "pizzica", "tocca", "mira" e "afferra". Se hai bisogno di ulteriori funzionalità di interazione o tracciamento 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 lo sguardo nella guida OpenXR Input.

Interazione con il controller

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

Interazione con il mouse

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

Interazione con la posa del palmo

Il plug-in OpenXR fornisce il supporto per 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 posizione del palmo non è pensata per essere un'alternativa alle estensioni o ai pacchetti che eseguono il tracciamento delle mani per casi d'uso più complessi, ma può essere utilizzata per posizionare contenuti visivi specifici dell'app, come le immagini degli avatar. La posa del palmo è costituita sia dalla posizione che dall'orientamento del palmo.

XR Hands

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

Esempio che mostra come attivare il tracciamento delle mani Il pacchetto XR Hands può essere utile se hai bisogno di dati più granulari sulla posa o sulle articolazioni delle mani o quando devi lavorare con gesti personalizzati.

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

Regioni di confidenza del tracciamento facciale

L'estensione XR_ANDROID_face_tracking fornisce valori di affidabilità per tre regioni del viso: in alto a sinistra, in alto a destra e in basso. Questi valori, che vanno da 0 (nessuna confidenza) a 1 (confidenza massima), indicano l'accuratezza del tracciamento facciale per ogni regione.

Puoi utilizzare questi valori di affidabilità per disattivare progressivamente le forme di fusione o applicare filtri visivi (come la sfocatura) alla regione del volto corrispondente. Per un'espressione di base, disattiva le forme di fusione nella regione del viso corrispondente.

L'area "parte inferiore del viso" rappresenta tutto ciò che si trova sotto gli occhi, inclusi bocca, mento, guance e naso. Le due regioni superiori includono gli occhi e l'area delle sopracciglia sui lati sinistro e destro del viso.

Il seguente snippet di codice C# mostra come accedere e utilizzare i dati di confidenza in uno script Unity:

using UnityEngine;
using Google.XR.Extensions;

public class FaceTrackingConfidence : MonoBehaviour
{
    void Update()
    {
      if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.HasValue)
      {
        DebugTextTopCenter.text = "XrInstance hasn't been initialized.";
        return;
      }
      else if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.Value)
      {
        DebugTextTopCenter.text = "XR_ANDROID_face_tracking is not enabled.";
        return;
      }

      for (int x = 0; x < _faceManager.Face.ConfidenceRegions.Length; x++)
      {
        switch (x)
        {
          case (int)XRFaceConfidenceRegion.Lower:
            regionText = "Bottom";
            break;
          case (int)XRFaceConfidenceRegion.LeftUpper:
            regionText = DebugTextConfidenceLeft;
            break;
          case (int)XRFaceConfidenceRegion.RightUpper:
            regionText = DebugTextConfidenceRight;
            break;
        }
    }
}

Per saperne di più, consulta la documentazione di Android XR Extensions per Unity.

Scegli un modo per eseguire il rendering delle mani

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

Mesh della mano

Il pacchetto Unity Android XR contiene una funzionalità di mesh della mano che fornisce l'accesso a XR_ANDROID_hand_mesh extension. La funzionalità Hand Mesh fornisce mesh per le mani dell'utente. La mesh della mano contiene i vertici dei triangoli che rappresentano la geometria di una mano. Questa funzionalità è destinata a essere utilizzata per fornire una mesh personalizzata che rappresenta la geometria reale delle mani dell'utente per la visualizzazione.

Prefab XR Hands

Il pacchetto XR Hands contiene un esempio chiamato Hands visualizer, che contiene mani sinistra e destra completamente attrezzate per il rendering di una rappresentazione appropriata al contesto delle mani dell'utente.

Gesti di sistema

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

Quando l'utente interagisce con il menu di navigazione del sistema, l'applicazione risponderà solo agli eventi di tracciamento della testa. Il pacchetto XR Hands può rilevare quando un utente esegue azioni specifiche, come l'interazione con questo menu di navigazione del sistema. Selezionando AimFlags, SystemGesture e DominantHand, puoi sapere quando viene eseguita questa azione di sistema. Per ulteriori informazioni su AimFlags, consulta la documentazione di Unity su Enum MetaAimFlags.

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 con la UI dagli eventi di input di Unity. Supporta attività di interazione, tra cui feedback aptico, feedback visivo e locomozione.


OpenXR™ e il logo OpenXR sono marchi di proprietà di The Khronos Group Inc. e sono registrati come marchi in Cina, nell'Unione Europea, in Giappone e nel Regno Unito.