Convertire le app VR in Windows Mixed Reality

Windows 10 include il supporto per visori olografici e immersivi. Altri dispositivi come Oculus Rift o HTC Vive hanno dipendenze dalle librerie esistenti sopra l'API della piattaforma del sistema operativo. Per portare le app VR win32 Unity esistenti in Windows Mixed Reality, è necessario ritargetare l'utilizzo di VR SDK specifico del fornitore per unity per le API VR e i plug-in cross-vendor di Unity.

La conversione di app VR in Windows Mixed Reality richiede i processi di alto livello seguenti:

  1. Assicurarsi che il PC sia in esecuzione Windows 10, versione 1709 (aggiornamento di Fall Creator) o versione successiva o Windows 11.
  2. Eseguire l'aggiornamento alla versione più recente del motore grafico o del gioco. I motori di gioco devono supportare l'SDK Windows 10 versione 10.0.15063.0 o successiva.
  3. Aggiornare il middleware, i plug-in e i componenti. Se l'app contiene componenti, eseguire l'aggiornamento alle versioni più recenti.
  4. Destinazione della versione più recente di Unity e del plug-in OpenXR. Rimuovere le dipendenze dagli SDK duplicati. A seconda del dispositivo di destinazione, rimuovere o compilare in modo condizionale tale SDK.
  5. Usare i problemi di compilazione specifici dell'app, del motore e delle dipendenze del componente.

Passaggi comuni di conversione

Iniziare con i passaggi comuni di conversione seguenti:

  1. Assicurarsi di avere l'hardware di sviluppo corretto. La guida per gli appassionati vr elenca l'hardware di sviluppo consigliato.

  2. Eseguire l'aggiornamento alla versione più recente del Windows 10.

    1. Installare il Windows 10 Creators Update
    2. Partecipare al programma Windows Insider.
    3. Abilitare la modalità sviluppatore
    4. Passare a Windows Insider Fast flights through Settings Update & Security section ( Aggiornamento delle impostazioni > & sicurezza).

    Nota

    La piattaforma Windows Mixed Reality è ancora in fase di sviluppo attivo. Partecipare al programma Windows Insider per accedere al volo Windows Insider Fast. Non ottenere le build di anteprima dall'anello Insider Skip Ahead, perché queste build non sono le più stabili per lo sviluppo di realtà mista.

  3. Se si usa Visual Studio, eseguire l'aggiornamento alla build più recente. Vedere Installare gli strumenti in Visual Studio 2022. Assicurarsi di installare il carico di lavoro Sviluppo di giochi con Unity .

Passaggi di conversione di Unity

Esaminare i passaggi comuni per assicurarsi che l'ambiente di sviluppo sia configurato correttamente. Per convertire il contenuto di Unity esistente, seguire questa procedura:

1. Eseguire l'aggiornamento alla build pubblica più recente di Unity con il supporto di Mr Windows

  1. Salvare una copia del progetto prima di iniziare.
  2. Scaricare la build pubblica consigliata più recente di Unity con Windows Mixed Reality supporto.
  3. Se il progetto è stato basato su una versione precedente di Unity, esaminare le guide per l'aggiornamento di Unity.
  4. Seguire le istruzioni per l'uso dell'aggiornamento automatico dell'API di Unity.
  5. Vedere se è necessario apportare altre modifiche per ottenere l'esecuzione del progetto e usare eventuali errori e avvisi.

2. Aggiornare il middleware alle versioni più recenti

Con qualsiasi aggiornamento di Unity, potrebbe essere necessario aggiornare uno o più pacchetti middleware a seconda del gioco o dell'applicazione. L'aggiornamento al middleware più recente aumenta la probabilità di successo durante il resto del processo di conversione.

3. Destinazione dell'applicazione da eseguire in Win32

Dall'interno dell'applicazione Unity:

  1. Passare aImpostazioni di compilazionefile>.
  2. Selezionare PC, Mac, Linux Standalone.
  3. Impostare la piattaforma di destinazione su Windows.
  4. Impostare l'architettura su x86.
  5. Selezionare Cambia piattaforma.

Nota

Se l'applicazione ha dipendenze da servizi specifici del dispositivo, ad esempio l'esecuzione di corrispondenze da Steam, disabilitarle ora. È possibile collegare i servizi equivalenti di Windows in un secondo momento.

4. Aggiungere il supporto per il plug-in OpenXR Realtà mista

  1. Scegliere e installare una versione di Unity e un plug-in XR. Anche se unity 2020.3 LTS con il plug-in OpenXR Realtà mista è ideale per lo sviluppo di Realtà mista, è anche possibile creare app con altre configurazioni di Unity.

  2. Rimuovere o compilare in modo condizionale qualsiasi supporto di libreria specifico per un altro SDK VR. Tali asset possono modificare le impostazioni e le proprietà nel progetto in modi incompatibili con Windows Mixed Reality.

    Ad esempio, se il progetto fa riferimento a SteamVR SDK, aggiornare il progetto in modo da usare le API VR comuni di Unity, che supportano sia Windows Mixed Reality che SteamVR.

  3. Nel progetto Unity usare l'SDK di Windows 10.

  4. Per ogni scena, configurare la fotocamera.

5. Configurare l'hardware di Windows Mixed Reality

  1. Esaminare i passaggi in Configurazione visore immersivo.
  2. Informazioni su come usare il simulatore di Windows Mixed Reality e spostarsi nella home Windows Mixed Reality.

6. Usare la fase per posizionare il contenuto sul pavimento

È possibile creare esperienze Realtà mista in un'ampia gamma di scalabilità di esperienze. Se si esegue la conversione di un'esperienza su scala seduta, assicurarsi che Unity sia impostato sul tipo di spazio di rilevamento stazioni :

XRDevice.SetTrackingSpaceType(TrackingSpaceType.Stationary);

Questo codice imposta il sistema di coordinate del mondo di Unity per tenere traccia del fotogramma stazioni di riferimento. Nella modalità di rilevamento stazioni, il contenuto che si posiziona nell'editor appena davanti alla posizione predefinita della fotocamera (forward è -Z) viene visualizzato davanti all'utente quando l'app viene avviata. Per aggiornare l'origine sede dell'utente, è possibile chiamare XR di Unity. Metodo InputTracking.Recenter .

Se si sta eseguendo la conversione di un'esperienza di scalabilità orizzontale o di un'esperienza su scala locale, si sta posizionando il contenuto rispetto al piano. Si tratta del piano dell'utente usando la fase spaziale, che rappresenta l'origine a livello di piano definita dall'utente. La fase spaziale può includere un limite di stanza facoltativo configurato durante la prima esecuzione.

Per queste esperienze, assicurarsi che Unity sia impostato sul tipo di spazio di rilevamento RoomScale . RoomScale è il valore predefinito, ma impostarlo in modo esplicito e assicurarsi di tornare true. Questa pratica rileva le situazioni in cui l'utente ha spostato il computer lontano dalla stanza che hanno calibrato.

if (XRDevice.SetTrackingSpaceType(TrackingSpaceType.RoomScale))
{
    // RoomScale mode was set successfully.  App can now assume that y=0 in Unity world coordinate represents the floor.
}
else
{
    // RoomScale mode was not set successfully.  App can't make assumptions about where the floor plane is.
}

Dopo che l'app imposta correttamente il tipo di spazio di rilevamento RoomScale, il contenuto posizionato sul piano y=0 viene visualizzato sul pavimento. L'origine a (0, 0, 0, 0) è il luogo specifico sul pavimento in cui l'utente si trovava durante la configurazione della stanza, con -Z che rappresenta la direzione in avanti che hanno affrontato durante l'installazione.

Nel codice script è quindi possibile chiamare il TryGetGeometry metodo sul UnityEngine.Experimental.XR.Boundary tipo per ottenere un poligono limite, specificando un tipo di limite di TrackedArea. Se l'utente ha definito un limite, viene restituito un elenco di vertici. È quindi possibile offrire un'esperienza su larga scala all'utente, dove possono camminare intorno alla scena creata.

Il sistema esegue automaticamente il rendering del limite quando l'utente lo avvicina. L'app non deve usare questo poligono per eseguire il rendering del limite stesso.

Esempio di risultati:

Esempio di risultati

Per altre informazioni, vedere Sistemi di coordinate in Unity.

7. Usare il modello di input

Ogni gioco o applicazione destinata a un display montato sulla testa esistente (HMD) include un set di input gestiti, tipi di input necessari per l'esperienza e API specifiche che chiama per ottenere tali input. È semplice e semplice sfruttare gli input disponibili in Windows Mixed Reality.

Per informazioni dettagliate sul modo in cui Windows Mixed Reality espone l'input, vedere la guida alla conversione di input per Unity e su come esegue il mapping degli input a ciò che l'applicazione esegue ora.

Importante

Se si usano controller HP Reverb G2, vedere HP Reverb G2 Controller in Unity per altre istruzioni di mapping di input.

8. Testare e ottimizzare le prestazioni

Windows Mixed Reality è disponibile in molti dispositivi, che variano da PC di gioco di alto livello a PC di mercato mainstream. Questi dispositivi hanno budget di calcolo e grafica notevolmente diversi disponibili per l'applicazione.

Se hai convertito l'app usando un PC Premium con budget di calcolo e grafica significativi, assicurati di testare e profilare l'app sull'hardware che rappresenta il tuo mercato di destinazione. Per altre informazioni, vedere Windows Mixed Reality linee guida minime sulla compatibilità hardware pc.

Unity e Visual Studio includono profiler delle prestazioni e linee guida per la pubblicazione di Microsoft e Intel per la profilatura e l'ottimizzazione delle prestazioni.

Per una descrizione approfondita delle prestazioni, vedere Informazioni sulle prestazioni per Realtà mista. Per informazioni dettagliate specifiche su Unity, vedere Consigli sulle prestazioni per Unity.

Mapping dell'input

Per informazioni e istruzioni sul mapping di input, vedere Guida alla conversione dell'input per Unity.

Importante

Se si usano controller HP Reverb G2, vedere HP Reverb G2 Controllers in Unity per altre istruzioni sul mapping di input.

Vedi anche