Questa guida fornisce una panoramica dello sviluppo con Unity per Android XR. Android XR funziona con gli strumenti e le funzionalità 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:
- Supporto di Unity per Android XR
- Nozioni di base di Unity XR
- Sviluppare e pubblicare 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 nelle ultime versioni di Unity 6. Sono inclusi 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 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, che sono supportate solo con Vulkan. Per ulteriori informazioni su come configurare queste impostazioni, consulta la guida alla configurazione del progetto.
Nozioni di base di Unity XR
Se non hai familiarità con Unity o lo sviluppo XR, puoi consultare il manuale XR di Unity per comprendere i concetti e i flussi di lavoro 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 XR di Unity e i sottosistemi XR
- Configurazione del progetto XR
- Creazione ed esecuzione di app XR
- Indicazioni sulla grafica XR, tra cui Universal Render Pipeline, rendering stereo, rendering foveato, regioni di rendering multiview e tempistica dei frame VR
- Indicazioni sull'audio XR, incluso il supporto per gli spazializzatori audio
Sviluppare e pubblicare app per Android
Unity fornisce documentazione approfondita per lo sviluppo, la creazione e la pubblicazione per Android, che tratta argomenti come le autorizzazioni Android in Unity, le impostazioni di build di Android, la creazione dell'app per Android e la pubblicazione su Google Play.
Pacchetti Unity per Android XR
Esistono due pacchetti che forniscono supporto per la creazione di app Unity per Android XR. Entrambi i pacchetti sono plug-in del provider XR, che possono essere abilitati tramite il pacchetto di gestione dei plug-in XR di Unity package. 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 di build per i plug-in XR. Per consentire all'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 abilitare 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 abilita il supporto dei dispositivi Android XR per i progetti AR Foundation. AR Foundation è progettato per gli sviluppatori che vogliono creare esperienze di AR o 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 guida rapida per importare le 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 Estensioni Android XR per Unity e può essere utilizzata per determinare quale pacchetto contiene le funzionalità di cui hai bisogno e le considerazioni sulla compatibilità.
Funzionalità |
Stringa di funzionalità Unity OpenXR: Android XR |
Stringa di funzionalità Estensioni Android XR per Unity |
Casi d'uso e comportamento previsto |
|---|---|---|---|
Android XR: sessione AR
|
Android XR (estensioni): gestione delle sessioni
|
Per utilizzare le funzionalità di uno dei due pacchetti, devi abilitare la funzionalità Sessione AR per quel pacchetto. Puoi abilitare 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 di origine XR gestisce automaticamente il monitoraggio del dispositivo e la trasformazione degli elementi monitorabili nel sistema di coordinate di Unity utilizzando il componente XROrigin e la gerarchia GameObject con una fotocamera e un TrackedPoseDriver. |
|
Android XR: fotocamera AR |
N/D |
Questa funzionalità fornisce supporto per la stima della luce e il passthrough a schermo intero. |
|
Android XR: piano AR |
Android XR (estensioni): piano |
Queste due funzionalità sono identiche; utilizzane una o l'altra. Android XR (estensioni): piano è incluso in modo che gli sviluppatori possano utilizzare le funzionalità di monitoraggio degli oggetti e ancoraggi persistenti di Android XR (estensioni) senza dover avere una dipendenza dal pacchetto Unity OpenXR Android XR. In futuro, Android XR (estensioni): piano verrà rimosso a favore di Android XR: ancoraggio AR. |
|
N/D |
Android XR (estensioni): monitoraggio degli oggetti |
Questa funzionalità fornisce supporto per il rilevamento e il monitoraggio degli oggetti nell'ambiente fisico, utilizzato in combinazione con una libreria di oggetti di riferimento. |
|
Android XR: volto AR
|
Android XR: monitoraggio dei volti
|
Il supporto per gli occhi dell'avatar è fornito tramite la funzionalità Android XR: volto AR. Accedi alle espressioni facciali di un utente tramite la funzionalità Android XR: monitoraggio dei volti. Queste due funzionalità possono essere utilizzate insieme. |
|
Android XR: raycast AR
|
N/D |
Questa funzionalità ti consente di eseguire un raycast e calcolare l'intersezione tra il raycast e gli elementi monitorabili del piano o gli elementi monitorabili di profondità rilevati nell'ambiente fisico. |
|
Android XR: ancoraggio AR |
Android XR (estensioni): ancoraggio
|
Entrambe le funzionalità includono il supporto per gli ancoraggi spaziali e gli ancoraggi del piano; utilizza una funzionalità o l'altra. Per gli ancoraggi persistenti, utilizza Android XR (estensioni): ancoraggio. In futuro, Android XR (estensioni): ancoraggio verrà rimosso e tutte le funzionalità di ancoraggio saranno in Android XR: ancoraggio AR. |
|
Android XR: occlusione AR
|
N/D |
L'occlusione consente di visualizzare i contenuti di realtà mista nell'app nascosti o parzialmente oscurati dietro gli oggetti nell'ambiente fisico. |
|
Metriche delle prestazioni |
Metriche delle prestazioni di Android XR |
N/D |
Utilizza questa funzionalità per accedere alle metriche delle prestazioni per i dispositivi Android XR. |
Supporto per i livelli di composizione (sono necessari il plug-in OpenXR e il livello di composizione XR) |
Android XR: livello di composizione passthrough
|
Utilizza il supporto per i 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 una mesh personalizzata, leggendo da GameObject di Unity. |
|
Rendering foveato (è necessario il plug-in OpenXR)
|
Foveazione (legacy) |
Il rendering foveato consente di velocizzare il rendering riducendo la risoluzione delle aree nella visione periferica dell'utente. La funzionalità di rendering foveato di Unity è supportata solo per le app che utilizzano URP e Vulkan. La funzionalità 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 rendering foveato di Unity, se possibile, e tieni presente che sia URP sia Vulkan sono consigliati quando crei per Android XR. |
|
N/D |
Android XR: spazio di riferimento illimitato |
Questa funzionalità imposta la modalità di origine del monitoraggio XRInputSubsystem su Illimitato. Illimitato indica che XRInputSubsystem monitora tutti gli InputDevice in relazione a un ancoraggio del mondo, che può cambiare. |
|
N/D |
Modalità di fusione dell'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 del mondo reale quando il passthrough è abilitato. |
Input e interazione
Android XR supporta l'input naturale multimodale.
Oltre al monitoraggio delle mani e all'eye tracking, sono supportate anche le periferiche come i controller 6DoF, il mouse e la 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 varie piattaforme e dispositivi XR. Questi profili stabiliscono gli input e gli output previsti per diverse configurazioni hardware, promuovendo la compatibilità e la funzionalità coerente su una serie di piattaforme. Abilitando i profili di interazione, puoi contribuire a garantire che l'applicazione XR funzioni correttamente con dispositivi diversi, mantenga una mappatura di 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 Gestione plug-in XR per espandere la sezione dei plug-in (se necessario).
- Seleziona OpenXR nell'elenco dei plug-in XR.
- Nella sezione Profili di interazione, 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 da
il plug-in OpenXR e puoi esporre il layout del dispositivo <HandInteraction>
nel sistema di input di Unity abilitando il profilo di interazione con le mani. Utilizza questo profilo di interazione per l'input della mano supportato dalle quattro pose di azione definite da OpenXR: "pinch", "poke", "aim" e "grip". Se hai bisogno di funzionalità aggiuntive di interazione con le mani o di tracciamento delle mani, consulta la sezione Mani XR 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 della posa degli occhi (posizione e rotazione) restituiti dall'estensione. Scopri di più sull'
interazione con lo sguardo nella guida all'input di OpenXR.
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
<AndroidXRMouse> layout del dispositivo 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 posa 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; può invece essere utilizzata per posizionare contenuti visivi specifici dell'app, come le immagini degli avatar. La posa del palmo è costituita sia dalla posizione sia dall'orientamento del palmo.
Mani XR
Il pacchetto Mani XR 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 giunture delle mani dal tracciamento delle mani alle pose di input. Per utilizzare le funzionalità fornite dal pacchetto Mani XR, abilita le funzionalità Sottosistema di monitoraggio delle mani e Meta Hand Tracking Aim OpenXR.
Il pacchetto Mani XR
può essere utile se hai bisogno di dati più granulari sulla posa delle mani o sulle giunture delle mani o
quando devi lavorare con gesti personalizzati.
Per ulteriori dettagli, consulta la documentazione di Unity per la configurazione di Mani XR nel tuo progetto
Regioni di confidenza del monitoraggio dei volti
L'estensione XR_ANDROID_face_tracking fornisce valori di confidenza per tre regioni facciali: 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 confidenza per disattivare progressivamente le forme di fusione o applicare filtri visivi (come la sfocatura) alla regione del volto corrispondente. Per una disattivazione di base delle forme di fusione nella regione del volto corrispondente.
L'area "parte inferiore del volto" rappresenta tutto ciò che si trova sotto gli occhi, inclusi bocca, mento, guancia e naso. Le due regioni superiori includono gli occhi e l'area delle sopracciglia sui lati sinistro e destro del volto.
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 ulteriori informazioni, consulta la documentazione delle estensioni Android XR per Unity.
Scegliere 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 di prefab.
Mesh della mano
Il pacchetto Android XR Unity contiene una funzionalità Mesh della mano che fornisce
l'accesso a XR_ANDROID_hand_mesh extension. La funzionalità Mesh della mano 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à è pensata per fornire una mesh personalizzata che rappresenta la geometria reale delle mani dell'utente per la visualizzazione.
Prefab Mani XR
Il pacchetto Mani XR contiene un esempio chiamato Visualizzatore mani, che contiene mani sinistra e destra completamente attrezzate per il rendering di una rappresentazione appropriata per il contesto delle mani dell'utente.
Gesti di sistema
Android XR include un gesto di sistema per aprire un menu in cui gli utenti possono tornare indietro, aprire il launcher o visualizzare una panoramica delle app in esecuzione. L'utente può attivare questo menu di sistema utilizzando un pizzico della mano dominante.
Quando l'utente interagisce con il menu di navigazione del sistema, l'applicazione risponderà solo agli eventi di monitoraggio della testa. Il pacchetto Mani XR può rilevare quando un utente esegue azioni specifiche, ad esempio interagire con questo menu di navigazione del sistema. Il controllo di AimFlags, SystemGesture e DominantHand ti consente di sapere quando viene eseguita questa azione di sistema. Per ulteriori informazioni su AimFlags, consulta
la documentazione di Unity per l'enumerazione 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 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, Unione Europea, Giappone e Regno Unito.