Conversione di app VR in Windows Mixed RealityPorting VR apps to Windows Mixed Reality

Windows 10 include il supporto per auricolari immersivi e olografici.Windows 10 includes support for immersive and holographic headsets. Se è stato creato contenuto per altri dispositivi, ad esempio Oculus Rift o HTC vive, questi hanno dipendenze da librerie esistenti sopra l'API della piattaforma del sistema operativo.If you've built content for other devices like the Oculus Rift or HTC Vive, they have dependencies on libraries that exist above the operating system's platform API. Il riutilizzo delle app VR Unity di Win32 per la realtà mista di Windows prevede il reindirizzamento dell'utilizzo di SDK VR specifici del fornitore alle API VR tra fornitori di Unity.Bringing existing Win32 Unity VR apps over to Windows Mixed Reality involves retargeting usage of vendor-specific VR SDKs to Unity's cross-vendor VR APIs.

Requisiti di portingPorting requirements

A livello generale, sono necessari i passaggi seguenti per trasferire il contenuto esistente:At a high level, the following steps are involved in porting existing content:

  1. Verificare che il PC esegua Windows 10 Fall Creators Update (16299).Make sure your PC is running the Windows 10 Fall Creators Update (16299). Non è più consigliabile ricevere le build di anteprima dall'anello Insider Skip Ahead, perché tali Build non saranno le più stabili per lo sviluppo di realtà miste.We no longer recommend receiving preview builds from the Insider Skip Ahead ring, as those builds won't be the most stable for mixed reality development.
  2. Eseguire l'aggiornamento alla versione più recente della grafica o del motore di gioco.Upgrade to the latest version of your graphics or game engine. I motori di gioco dovranno supportare Windows 10 SDK versione 10.0.15063.0 (rilasciato ad aprile 2017) o versione successiva.Game engines will need to support the Windows 10 SDK version 10.0.15063.0 (released in April 2017) or higher.
  3. Aggiornare tutti i middleware, i plug-in o i componenti.Upgrade any middleware, plug-ins, or components. Se l'app contiene componenti, è consigliabile eseguire l'aggiornamento alla versione più recente.If your app contains any components, it's a good idea to upgrade to the latest version.
  4. Rimuovere le dipendenze da SDK duplicati.Remove dependencies on duplicate SDKs. A seconda del dispositivo a cui è destinato il contenuto, è necessario rimuovere o compilarlo in modo condizionale per poter usare le API di Windows.Depending on which device your content was targeting, you'll need to remove or conditionally compile out that SDK so you can target the Windows APIs instead. Un esempio di questo scenario è SteamVR.An example of this scenario would be SteamVR.
  5. Risolvere i problemi di compilazione.Work through build issues. A questo punto, l'esercizio di porting è specifico per l'app, il motore e le dipendenze dei componenti.At this point, the porting exercise is specific to your app, your engine, and the component dependencies you have.

Passaggi comuni di portingCommon porting steps

1. Assicurarsi di disporre dell'hardware di sviluppo appropriato1. Make sure you have the right development hardware

Nella pagina installa strumenti è elencato l'hardware di sviluppo consigliato.The install the tools page lists the recommended development hardware.

2. eseguire l'aggiornamento all'ultimo volo di Windows 102. Upgrade to the latest flight of Windows 10

La piattaforma di realtà mista Windows è ancora in fase di sviluppo attivo.The Windows Mixed Reality platform is still under active development. È consigliabile partecipare al programma Windows Insider per accedere al volo "Windows Insider Fast".We recommend joining the Windows Insider Program to access the "Windows Insider Fast" flight.

  1. Installare Windows 10 Creators UpdateInstall the Windows 10 Creators Update
  2. Partecipa al programma Windows Insider.Join the Windows Insider Program.
  3. Abilita modalità sviluppatoreEnable Developer Mode
  4. Passa alla sezione relativa ai voli rapidi di Windows Insider tramite le impostazioni > sezione aggiornamento & sicurezzaSwitch to the Windows Insider Fast flights through Settings > Update & Security Section

3. eseguire l'aggiornamento alla build più recente di Visual Studio3. Upgrade to the most recent build of Visual Studio

  • Se si usa Visual Studio, eseguire l'aggiornamento alla build più recenteIf you're using Visual Studio, then upgrade to the most recent build
  • Vedere Install the Tools page in Visual Studio 2019See Install the tools page under Visual Studio 2019

4. scegliere la scheda corretta4. Choose the correct Adapter

  • Nei sistemi come notebook con due GPU, fare riferimento alla scheda corretta.In systems like notebooks with two GPUs, target the correct adapter. Questo vale per Unity e per le app DirectX native in cui viene creato un ID3D11Device, in modo esplicito o implicito (Media Foundation), per la funzionalità.This applies to Unity and native DirectX apps where a ID3D11Device is created, either explicitly or implicitly (Media Foundation), for its functionality.

Guida al porting di UnityUnity porting guidance

1. esaminare i passaggi di porting comuni elencati sopra1. Review the common porting steps listed above

Esaminare i passaggi comuni elencati sopra per assicurarsi che l'ambiente di sviluppo sia configurato correttamente.Review the common steps listed above to make sure your development environment is set up correctly. Nel passaggio #3, se si usa Visual Studio, è necessario selezionare il carico di lavoro sviluppo di giochi con Unity .In step #3, if you're using Visual Studio you should select the Game Development with Unity workload. È possibile deselezionare il componente "Unity editor optional" poiché verrà installata una versione più recente di Unity nel passaggio successivo.You may deselect the "Unity Editor optional" component since you'll be installing a newer version of Unity in the next step.

2. eseguire l'aggiornamento alla build pubblica più recente di Unity con il supporto di Windows MR2. Upgrade to the latest public build of Unity with Windows MR Support

  1. Scarica l'ultima Build pubblica consigliata di Unity con il supporto della realtà mista.Download the latest recommended public build of Unity with mixed reality support.
  2. Salva una copia del progetto prima di iniziareSave a copy of your project before you get started
  3. Esaminare la documentazione disponibile in Unity per l'aggiornamento se il progetto è stato creato con una versione precedente di Unity.Review the documentation available from Unity on upgrading if your project was built on an older version of Unity.
  4. Seguire le istruzioni nel sito di Unity per usare il relativo aggiornamento automatico delle APIFollow the instructions on Unity's site for using their automatic API updater
  5. Controllare e verificare se sono presenti ulteriori modifiche che è necessario apportare per eseguire il progetto e risolvere gli eventuali errori e avvisi rimanenti.Check and see if there are additional changes that you need to make to get your project running, and work through any remaining errors and warnings.

Nota

Se è presente un middleware da cui si dipende, verificare che sia in uso la versione più recente. per altre informazioni, vedere il passaggio 3 riportato di seguito.If you have middleware that you depend on, check that you're using the latest release (more details in step 3 below).

3. aggiornare il middleware alle versioni più recenti3. Upgrade your middleware to the latest versions

Con qualsiasi aggiornamento di Unity, è possibile che sia necessario aggiornare uno o più pacchetti middleware da cui dipende il gioco o l'applicazione.With any Unity update, there's a good chance that you'll need to update one or more middleware packages that your game or application depends on. Inoltre, l'aggiornamento con il middleware più recente aumenta la probabilità di successo durante il resto del processo di porting.Additionally, being up to date with the latest middleware increases the likelihood of success throughout the rest of the porting process.

4. indirizzare l'applicazione per l'esecuzione in Win324. Target your application to run on Win32

Dall'interno dell'applicazione Unity:From inside your Unity application:

  • Passare a file-> impostazioni di compilazioneNavigate to File -> Build Settings
  • Selezionare "PC, Mac, Linux autonomo"Select "PC, Mac, Linux Standalone"
  • Imposta la piattaforma di destinazione su "Windows"Set target platform to "Windows"
  • Imposta architettura su "x86" selezionare "Cambia piattaforma"Set architecture to "x86" Select "Switch Platform"

Nota

Se l'applicazione dispone di dipendenze da servizi specifici del dispositivo, ad esempio la corrispondenza da Steam, sarà necessario disabilitarli in questo passaggio.If your application has any dependencies on device-specific services, such as match making from Steam, you'll need to disable them at this step. È possibile associare i servizi equivalenti forniti da Windows in un secondo momento.You can hook up to the equivalent services that Windows provides later on.

5. configurare l'hardware della realtà mista di Windows5. Setup your Windows Mixed Reality hardware

  1. Esaminare i passaggi nella configurazione dell'auricolare immersivaReview steps in Immersive headset setup
  2. Scopri come usare il simulatore di realtà mista di Windows e passare alla Home realtà mista di WindowsLearn about Using the Windows Mixed Reality simulator and Navigating the Windows Mixed Reality home

6. indirizzare l'applicazione per l'esecuzione in realtà mista di Windows6. Target your application to run on Windows Mixed Reality

  1. In primo luogo, è necessario rimuovere o compilare in modo condizionale qualsiasi altro supporto di libreria specifico di un determinato VR SDK.First, you must remove or conditionally compile out any other library support specific to a particular VR SDK. Tali asset cambiano spesso le impostazioni e le proprietà del progetto in modi non compatibili con altri SDK di VR, ad esempio la realtà mista di Windows.Those assets frequently change settings and properties on your project in ways that are incompatible with other VR SDKs, such as Windows Mixed Reality.
    • Ad esempio, se il progetto fa riferimento a SteamVR SDK, sarà necessario aggiornare il progetto per usare invece le API VR comuni di Unity che supportano sia la realtà mista di Windows che la SteamVR.For example, if your project references the SteamVR SDK, you'll need to update your project to instead use Unity's common VR APIs that support both Windows Mixed Reality and SteamVR.
    • I passaggi specifici per escludere gli altri SDK di VR saranno presto disponibili.Specific steps for conditionally excluding other VR SDKs are coming soon.
  2. Nel progetto Unity, fare riferimento a Windows 10 SDKIn your Unity project, target the Windows 10 SDK
  3. Per ogni scena, configurare la fotocameraFor each scene, setup the camera

7. utilizzare la fase per collocare il contenuto al piano7. Use the stage to place content on the floor

È possibile creare esperienze di realtà miste in un'ampia gamma di scale di esperienza.You can build Mixed Reality experiences across a wide range of experience scales.

Se si esegue il porting di un' esperienza con scalabilità verticale, è necessario assicurarsi che Unity sia impostato sul tipo di spazio di rilevamento stazionario :If you're porting a seated-scale experience, you must ensure Unity is set to the Stationary tracking space type:

XRDevice.SetTrackingSpaceType(TrackingSpaceType.Stationary);

Questo codice precedente imposta il sistema di Coordinate internazionali di Unity per tenere traccia del frame di riferimento fisso.This above code sets Unity's world coordinate system to track the stationary frame of reference. Nella modalità di rilevamento fisso, il contenuto inserito nell'editor immediatamente davanti alla posizione predefinita della fotocamera (avanti è-Z) viene visualizzato davanti all'utente all'avvio dell'app.In the Stationary tracking mode, content placed in the editor just in front of the camera's default location (forward is -Z) appears in front of the user when the app launches. Per ricentrare l'origine di seduta dell'utente, è possibile chiamare XR di Unity . Metodo InputTracking. recenter .To recenter the user's seated origin, you can call Unity's XR.InputTracking.Recenter method.

Se si sta effettuando il porting di un'esperienza di scalabilità permanente o di scalabilità in modalità locale, il contenuto verrà inserito in relazione al pavimento.If you're porting a standing-scale experience or room-scale experience, you'll be placing content relative to the floor. Si ragiona sul pavimento dell'utente usando la fase spaziale, che rappresenta l'origine di livello del piano definita dall'utente e il limite di spazio facoltativo, configurato durante la prima esecuzione.You reason about the user's floor using the spatial stage, which represents the user's defined floor-level origin and optional room boundary, set up during first run. Per queste esperienze è necessario assicurarsi che Unity sia impostato sul tipo di spazio di rilevamento RoomScale .For these experiences, you must ensure Unity is set to the RoomScale tracking space type. Anche se RoomScale è il valore predefinito, è consigliabile impostarlo in modo esplicito e assicurarsi di tornare a true per individuare le situazioni in cui l'utente ha spostato il computer dalla stanza in cui è stato calibrato:While RoomScale is the default, you'll want to set it explicitly and ensure you get back true, to catch situations where the user has moved their computer away from the room they calibrated:

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.
}

Quando l'app imposta correttamente il tipo di spazio di rilevamento RoomScale, il contenuto inserito sul piano y = 0 verrà visualizzato sul pavimento.Once your app successfully sets the RoomScale tracking space type, content placed on the y=0 plane will appear on the floor. L'origine in (0, 0, 0) sarà la posizione specifica del piano in cui l'utente si trovava durante l'installazione della chat room, con-Z che rappresenta la direzione in avanti durante l'installazione.The origin at (0, 0, 0) will be the specific place on the floor where the user stood during room setup, with -Z representing the forward direction they were facing during setup.

Nel codice di script è quindi possibile chiamare il metodo TryGetGeometry sul tipo UnityEngine. Experimental. XR. Boundary per ottenere un poligono di limiti, specificando un tipo di limite di TrackedArea.In script code, you can then call the TryGetGeometry method on you're the UnityEngine.Experimental.XR.Boundary type to get a boundary polygon, specifying a boundary type of TrackedArea. Se l'utente ha definito un limite (si ottiene un elenco di vertici), è possibile fornire all'utente un' esperienza di scalabilità della stanza , in cui è possibile aggirare la scena creata.If the user defined a boundary (you get back a list of vertices), it's safe to deliver a room-scale experience to the user, where they can walk around the scene you create.

Il sistema eseguirà automaticamente il rendering del limite quando l'utente si avvicina.The system will automatically render the boundary when the user approaches it. L'app non deve usare questo poligono per eseguire il rendering del limite.Your app does not need to use this polygon to render the boundary itself.

Per altre informazioni, vedere la pagina sistemi di coordinate in Unity .For more information, see the Coordinate systems in Unity page.

Esempio di risultati:Example of results:

Esempio di risultati

L'algoritmo si basa su un Blog di Daniel smilkov: rettangolo più grande in un poligonoAlgorithm is based on a blog by Daniel Smilkov: Largest rectangle in a polygon

8. utilizzare il modello di input8. Work through your input model

Ogni gioco o applicazione destinata a un HMD esistente avrà un set di input che gestisce, i tipi di input necessari per l'esperienza e le API specifiche che chiama per ottenere tali input.Each game or application targeting an existing HMD will have a set of inputs that it handles, types of inputs that it needs for the experience, and specific APIs that it calls to get those inputs. Abbiamo investito nel tentativo di renderlo il più semplice e semplice possibile per sfruttare i vantaggi degli input disponibili nella realtà mista di Windows.We've invested in trying to make it as simple and straightforward as possible to take advantage of the inputs available in Windows Mixed Reality.

Per informazioni dettagliate sul modo in cui la realtà mista di Windows espone l'input e su come eseguire questa operazione, vedere la Guida al porting di input per Unity nella scheda adiacente.Read through the input porting guide for Unity in the adjacent tab for details of how Windows Mixed Reality exposes input, and how that maps to what your application may do today.

9. test delle prestazioni e ottimizzazione9. Performance testing and tuning

La realtà mista di Windows sarà disponibile in un'ampia gamma di dispositivi, a partire da PC con giochi di fascia alta, fino a PC mainstream di mercato più ampi.Windows Mixed Reality will be available on a broad class of devices, ranging from high end gaming PCs, down to broad market mainstream PCs. A seconda del mercato di destinazione, esiste una differenza significativa nei budget di calcolo e grafica disponibili per l'applicazione.Depending on what market you're targeting, there's a significant difference in the available compute and graphics budgets for your application. Durante questo esercizio di porting, è probabile che si usi un PC Premium e che siano disponibili budget di calcolo e grafica significativi per l'app.During this porting exercise, you're likely leveraging a premium PC, and have had significant compute and graphics budgets available to your app. Se si vuole rendere l'app disponibile a un pubblico più ampio, è consigliabile eseguire il test e la profilatura dell'app sull' hardware rappresentativo a cui si vuole fare riferimento.If you wish to make your app available to a broader audience, you should test and profile your app on the representative hardware that you wish to target.

Unity e Visual Studio includono i profiler delle prestazioni e le linee guida per la pubblicazione di Microsoft e Intel per la profilatura e l'ottimizzazione delle prestazioni.Both Unity and Visual Studio include performance profilers, and both Microsoft and Intel publish guidelines on performance profiling and optimization. È disponibile una descrizione approfondita delle prestazioni disponibili per comprendere le prestazioni della realtà mista.There's an extensive discussion of performance available at Understanding Performance for Mixed Reality. Sono inoltre disponibili dettagli specifici per Unity in raccomandazioni sulle prestazioni per Unity.Further, there are specific details for Unity under Performance Recommendations for Unity.

Guida al porting non realeUnreal porting guidance

Importante

Se si usano i controller di HP Reverb G2, fare riferimento a questo articolo per istruzioni aggiuntive sul mapping degli input.If you're using HP Reverb G2 controllers, please refer to this article for additional input mapping instructions.

Vedi ancheSee also