Conversione di app VR in Windows Mixed Reality

Windows 10 include il supporto per visori immersive e olografici. Se sono stati creati contenuti per altri dispositivi, ad esempio Oculus Rift o l'opzione DISAUS Vive, hanno dipendenze dalle librerie esistenti sopra l'API della piattaforma del sistema operativo. Il retargeting delle app VR Win32 Unity esistenti Windows Mixed Reality comporta il retargeting dell'utilizzo di SDK VR specifici del fornitore alle API VR tra fornitori di Unity.

Requisiti di porting

A livello di alto livello, i passaggi seguenti sono necessari per il porting del contenuto esistente:

  1. Assicurarsi che il PC eserciti il Windows 10 Fall Creators Update (16299). Non è più consigliabile ricevere build di anteprima dall'anello Insider Skip Ahead, perché non saranno le più stabili per lo sviluppo di realtà mista.
  2. Eseguire l'aggiornamento alla versione più recente del motore di grafica o di gioco. I motori di gioco dovranno supportare Windows 10 SDK versione 10.0.15063.0 (rilasciata ad aprile 2017) o successiva.
  3. Aggiornare qualsiasi middleware, plug-in o componente. Se l'app contiene componenti, è buona idea eseguire l'aggiornamento alla versione più recente.
  4. Rimuovere le dipendenze da SDK duplicati. A seconda del dispositivo di destinazione del contenuto, è necessario rimuovere o compilare in modo condizionale l'SDK in modo da poter usare le API Windows destinazione. Un esempio di questo scenario è SteamVR.
  5. Risolvere i problemi di compilazione. A questo punto, l'esercizio di porting è specifico per l'app, il motore e le dipendenze dei componenti.

Passaggi comuni di porting

1. Assicurarsi di avere l'hardware di sviluppo giusto

La pagina della guida per gli appassionati di VR elenca l'hardware di sviluppo consigliato.

2. Eseguire l'aggiornamento al volo più recente di Windows 10

La Windows Mixed Reality è ancora in fase di sviluppo attivo. È consigliabile partecipare al Windows Programma Insider per accedere al volo "Windows Circuito Insider veloce".

  1. Installare il Windows 10 Creators Update
  2. Aggiungere il Windows Programma Insider.
  3. Abilitare la modalità sviluppatore
  4. Passare ai voli Windows Circuito Insider veloce tramite la Impostazioni sicurezza dell'aggiornamento

3. Eseguire l'aggiornamento alla build più recente di Visual Studio

  • Se si usa Visual Studio, eseguire l'aggiornamento alla build più recente
  • Vedere Installare la pagina degli strumenti in Visual Studio 2019

4. Scegliere l'adapter corretto

  • In sistemi come notebook con due GPU, scegliere come destinazione la scheda corretta. Questo vale per Unity e per le app DirectX native in cui viene creato un dispositivo ID3D11, in modo esplicito o implicito (Media Foundation), per la relativa funzionalità.

Linee guida per il porting di Unity

1. Esaminare i passaggi comuni di porting elencati in precedenza

Esaminare i passaggi comuni elencati in precedenza per assicurarsi che l'ambiente di sviluppo sia configurato correttamente. Nel passaggio 3, se si usa il Visual Studio è necessario selezionare il carico di lavoro Sviluppo di giochi con Unity. È possibile deselezionare il componente "Editor unity facoltativo" perché nel passaggio successivo si installerà una versione più recente di Unity.

2. Eseguire l'aggiornamento alla build pubblica più recente di Unity con Windows mr support

  1. Scaricare la build pubblica più recente consigliata di Unity con supporto per la realtà mista.
  2. Salvare una copia del progetto prima di iniziare
  3. Esaminare la documentazione disponibile in Unity per l'aggiornamento se il progetto è stato compilato in una versione precedente di Unity.
  4. Seguire le istruzioni nel sito di Unity per l'uso dell'aggiornamento automatico delle API
  5. Controllare e verificare se sono necessarie modifiche aggiuntive per eseguire il progetto e risolvere eventuali errori e avvisi rimanenti.

Nota

Se si dispone di middleware da cui si dipende, verificare di usare la versione più recente (altri dettagli nel passaggio 3 di seguito).

3. Aggiornare il middleware alle versioni più recenti

Con qualsiasi aggiornamento di Unity, è probabile che sia necessario aggiornare uno o più pacchetti middleware da cui dipende il gioco o l'applicazione. Inoltre, l'aggiornamento del middleware più recente aumenta la probabilità di successo durante il resto del processo di porting.

4. Impostare come destinazione l'applicazione per l'esecuzione in Win32

Dall'interno dell'applicazione Unity:

  • Passare a File - > Build Impostazioni
  • Selezionare "PC, Mac, Linux Autonomo"
  • Impostare la piattaforma di destinazione su "Windows"
  • Impostare architettura su "x86" Selezionare "Cambia piattaforma"

Nota

Se l'applicazione ha dipendenze da servizi specifici del dispositivo, ad esempio la creazione di corrispondenze da Steam, è necessario disabilitarle in questo passaggio. È possibile collegarsi ai servizi equivalenti che Windows in un secondo momento.

5. Configurare l'hardware Windows Mixed Reality hardware

  1. Esaminare i passaggi in Configurazione visore immersivo
  2. Informazioni sull'uso del simulatore Windows Mixed Realitye sulla navigazione nella Windows Mixed Reality home page

6. Impostare come destinazione l'esecuzione dell'applicazione Windows Mixed Reality

  1. In primo luogo, è necessario rimuovere o compilare in modo condizionale qualsiasi altro supporto di libreria specifico per un sdk VR specifico. Tali asset modificano spesso le impostazioni e le proprietà del progetto in modi incompatibili con altri SDK vr, ad esempio Windows Mixed Reality.
    • Ad esempio, se il progetto fa riferimento a SteamVR SDK, è necessario aggiornare il progetto per usare invece le API VR comuni di Unity che supportano sia Windows Mixed Reality che SteamVR.
    • Saranno presto disponibili passaggi specifici per escludere in modo condizionale altri SDK vr.
  2. Nel progetto Unity scegliere come destinazione l'SDK Windows 10
  3. Per ogni scena, configurare la fotocamera

7. Usare la fase per posizionare il contenuto sul pavimento

È possibile creare esperienze di realtà mista in un'ampia gamma di scalabilità di esperienze.

Se si sta trasando un'esperienza diridimensionamento, è necessario assicurarsi che Unity sia impostato sul tipo di spazio di rilevamento stazionario:

XRDevice.SetTrackingSpaceType(TrackingSpaceType.Stationary);

Questo codice precedente imposta il sistema di coordinate del mondo di Unity per tenere traccia del fotogramma zionario di riferimento. Nella modalità di rilevamento stazionario, il contenuto posizionato nell'editor proprio davanti alla posizione predefinita della fotocamera (forward è -Z) viene visualizzato davanti all'utente all'avvio dell'app. Per una più recente origine dell'utente, è possibile chiamare la XR di Unity. Metodo InputTracking.Recenter.

Se si sta effettuando il porting di un'esperienza su larga scala o di stanza,il contenuto verrà posizionato rispetto al piano. Per la motivazione del piano dell'utente si usa la fase spaziale ,che rappresenta l'origine definita a livello di piano dell'utente e il limite facoltativo della stanza, configurato durante la prima esecuzione. Per queste esperienze, è necessario assicurarsi che Unity sia impostato sul tipo di spazio di rilevamento RoomScale. Anche se RoomScale è l'impostazione predefinita, è necessario impostarla in modo esplicito e assicurarsi di tornare true per rilevare le situazioni in cui l'utente ha spostato il computer dalla stanza calibrata:

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 cannot make assumptions about where the floor plane is.
}

Dopo che l'app ha impostato correttamente il tipo di spazio di rilevamento RoomScale, sul piano y=0 verrà visualizzato il contenuto posizionato sul piano y=0. L'origine in (0, 0, 0) sarà la posizione specifica sul piano in cui l'utente si è alzato durante la configurazione della stanza, con -Z che rappresenta la direzione in avanti rivolta durante la configurazione.

Nel codice di script è quindi possibile chiamare il metodo TryGetGeometry sul tipo UnityEngine.Experimental.XR.Boundary per ottenere un poligono limite, specificando un tipo di limite TrackedArea. Se l'utente ha definito un limite (si ottiene un elenco di vertici), è possibile offrire un'esperienza su larga scala all'utente, in cui può aggirare la scena creata.

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

Per altre informazioni, vedere la pagina Sistemi di coordinate in Unity.

Esempio di risultati:

Esempio di risultati

L'algoritmo è basato su un blog di Daniel Smilkov: Rettangolo più grande in un poligono

8. Usare il modello di input

Ogni gioco o applicazione che ha come destinazione un HMD esistente avrà un set di input gestiti, tipi di input di cui ha bisogno per l'esperienza e API specifiche che chiama per ottenere tali input. Abbiamo investito nel tentativo di rendere il più semplice e semplice possibile sfruttare gli input disponibili in Windows Mixed Reality.

Leggere la guida alla portabilità dell'input per Unity nella scheda adiacente per informazioni dettagliate su come Windows Mixed Reality espone l'input e su come viene eseguito il mapping a ciò che l'applicazione può eseguire attualmente.

9. Test e ottimizzazione delle prestazioni

Windows Mixed Reality sarà disponibile su un'ampia gamma di dispositivi, dai PC di giochi di fascia alta, fino ai PC mainstream di ampio mercato. A seconda del mercato di destinazione, esiste una differenza significativa nei budget di calcolo e grafica disponibili per l'applicazione. Durante questo esercizio di porting, probabilmente si sta sfruttando un PC Premium e sono stati disponibili budget di calcolo e grafica significativi per l'app. Se si vuole rendere disponibile l'app a un pubblico più ampio, è consigliabile testare e profilare l'app nell'hardware rappresentativo che si vuole impostare come destinazione.

Unity e Visual Studio includono profiler delle prestazioni e microsoft e Intel pubblicano linee guida sulla profilatura e l'ottimizzazione delle prestazioni. È disponibile un'ampia discussione sulle prestazioni in Informazioni sulle prestazioni per la realtà mista. Sono inoltre disponibili dettagli specifici per Unity in Prestazioni Consigli per Unity.

Linee guida per la portabilità unreal

Importante

Se si usano controller HP Reverb G2, fare riferimento a questo articolo per istruzioni aggiuntive sul mapping dell'input.

Vedi anche