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:
- Plug-in del provider XR, tra cui Unity OpenXR: Android XR e le estensioni Android XR per Unity
- Pacchetti di supporto XR per aggiungere funzionalità aggiuntive a livello di applicazione
- Una guida all'architettura XR che descrive lo stack tecnologico Unity XR e i sottosistemi XR
- Configurazione del progetto XR
- Creazione ed esecuzione di app XR
- Indicazioni per la grafica XR, tra cui Universal Render Pipeline, rendering stereo, rendering foveated, regioni di rendering multiview e durata frame VR
- Indicazioni audio XR, incluso il supporto per gli audio spatializer
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.
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 |
|---|---|---|---|
Android XR: sessione AR
|
Android XR (Extensions): Session Management
|
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. |
|
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. |
|
Android XR: fotocamera AR |
N/D |
Questa funzionalità fornisce supporto per la stima della luce e il passthrough a schermo intero. |
|
Android XR: AR Plane |
N/D |
Questa funzionalità fornisce supporto per il rilevamento e il monitoraggio di superfici piane nell'ambiente fisico. |
|
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. |
|
Android XR: AR Face
|
Android XR: tracciamento facciale
|
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. |
|
Android XR: AR Raycast
|
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. |
|
Android XR: ancora AR |
N/D |
AR Anchor supporta ancoraggi spaziali, piani e persistenti tramite AR Foundation. |
|
Android XR: occlusione AR
|
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. |
Supporto dei livelli di composizione (sono necessari il plug-in OpenXR e il livello di composizione XR) |
Android XR: Passthrough Composition Layer
|
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 (è richiesto il plug-in OpenXR)
|
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. |
|
N/D |
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. |
||
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. |
|
N/D |
Consente a |
||
N/D |
Fornisce strategie di configurazione dell'autenticazione della sessione (chiave API, senza chiave e token di autenticazione) per i servizi di supporto cloud. |
||
N/D |
Estende Unity ARFace con modalità di tracciamento facciale multimodali configurabili ( |
||
N/D |
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 |
||
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. |
|
N/D |
Enumera le proprietà delle estensioni di runtime e le funzionalità del dispositivo utilizzando |
||
N/D |
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 |
||
Android XR: riquadro di delimitazione AR |
Fornisce il supporto per il rilevamento dei riquadri di delimitazione per gli oggetti 3D nell'ambiente fisico utilizzando il framework OpenXR Spatial Entities ( |
||
N/D |
Estende le funzionalità di ancoraggio utilizzando |
||
N/D |
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 |
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:
- Apri la finestra Impostazioni progetto (menu: Modifica > Impostazioni progetto).
- Fai clic su XR Plug-in Management per espandere la sezione dei plug-in (se necessario).
- Seleziona OpenXR nell'elenco dei plug-in XR.
- Nella sezione Interaction Profiles, seleziona il pulsante + per aggiungere un profilo.
- 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.
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.