OpenXR

Logo OpenXR

OpenXR è uno standard api open royalty free di Khronos, che offre ai motori l'accesso nativo a una gamma di dispositivi nello spettro della realtà mista.

È possibile sviluppare usando OpenXR in un HoloLens 2 o Windows Mixed Reality visore VR immersive sul desktop. Se non si ha accesso a un visore VR, è possibile usare invece l'emulatore HoloLens 2 o il simulatore Windows Mixed Reality.

Perché OpenXR?

Con OpenXR è possibile creare motori destinati a dispositivi olografici, come HoloLens 2 e dispositivi VR immersive, come Windows Mixed Reality visori VR per PC desktop. OpenXR consente di scrivere codice una volta che è quindi portabile in un'ampia gamma di piattaforme hardware.

L'API OpenXR usa un caricatore per connettere l'applicazione direttamente al supporto della piattaforma nativa del visore VR. Gli utenti finali ottengono prestazioni massime e latenza minima, indipendentemente dal fatto che usino un Windows Mixed Reality o qualsiasi altro visore VR.

Che cos'è OpenXR?

L'API OpenXR fornisce la stima della posizione principale, la tempistica dei fotogrammi e la funzionalità di input spaziale che è necessario creare un motore in grado di indirizzare dispositivi olografici e immersive.

Per informazioni sull'API OpenXR, vedere la specifica OpenXR 1.0, le informazioni di riferimento sulle API e la guida di riferimento rapido. Per altre informazioni, vedere la pagina Khronos OpenXR.

Per definire come destinazione il set completo di funzionalità di HoloLens 2, si useranno anche estensioni OpenXR specifiche del fornitore che consentono funzionalità aggiuntive oltre al core OpenXR 1.0, ad esempio tracciamento della mano articolata, tracciamento oculare, mapping spaziale e ancoraggi nello spazio. Per altre informazioni, vedere la sezione Roadmap riportata di seguito sulle estensioni che verranno eseguite più avanti quest'anno.

OpenXR non è un motore di realtà mista. OpenXR consente invece ai motori come Unity e Unreal di scrivere codice portatile una volta che possono quindi accedere alle funzionalità della piattaforma nativa del dispositivo olografico o immersivo dell'utente, indipendentemente dal fornitore che ha creato tale piattaforma.

Roadmap

La specifica OpenXR definisce un meccanismo di estensione che consente agli implementatori di runtime di esporre funzionalità aggiuntive oltre alle funzionalità di base definite nella specifica OpenXR 1.0 di base.

Esistono tre tipi di estensioni OpenXR:

  • Estensioni fornitore (ad esempio, XR_MSFT_...): abilita l'innovazione per fornitore nelle funzionalità hardware o software. Qualsiasi fornitore di runtime può introdurre e spedire un'estensione fornitore in qualsiasi momento.
    • Estensioni sperimentali del fornitore (ad esempio, XR_MSFTX_...): estensioni del fornitore sperimentali in anteprima per raccogliere commenti e suggerimenti. XR_MSFTX_... le estensioni sono destinate solo ai dispositivi di sviluppo e verranno rimosse quando viene fornita l'estensione reale. Per provare a usarle, è possibile abilitare le estensioni di anteprima nel dispositivo per sviluppatori.
  • Estensioni tra fornitori EXT : estensioni tra fornitori definite e implementate da più aziende. Gruppi di aziende interessate possono introdurre estensioni EXT in qualsiasi momento.
  • Estensioni ufficiali KHR : estensioni ufficiali khronos ratificate come parte di una versione di specifiche di base. Le estensioni KHR sono coperte dalla stessa licenza della specifica di base stessa.

Il Windows Mixed Reality OpenXR Runtime supporta un set di MSFT estensioni e EXT che offre il set completo di funzionalità di HoloLens 2 alle applicazioni OpenXR:

Area funzionale Disponibilità dell'estensione
Sistemi e sessioni Specifica core OpenXR 1.0:
XrInstance, XrSystemId, XrSession
Spazi di riferimento (visualizzazione, locale, fase) Specifica core OpenXR 1.0:
XrSpace
Visualizzare le configurazioni (mono, stereo) Specifica core OpenXR 1.0:
XrView...
Swapchain + intervallo dei fotogrammi Specifica core OpenXR 1.0:
XrSwapchain... + xrWaitFrame
Livelli di composizione
(proiezione, quad)
Specifica core OpenXR 1.0:
XrCompositionLayer... + xrEndFrame
Input eptici Specifica core OpenXR 1.0:
XrAction...
Integrazione di Direct3D 11/12 Estensioni ufficiali KHR rilasciate:
XR_KHR_D3D11_enable
XR_KHR_D3D12_enable
Spazio di riferimento non associato
(esperienze su scala mondiale)
MSFT estensione rilasciata:
XR_MSFT_unbounded_reference_space
Ancoraggi nello spazio

MSFT estensione rilasciata:
XR_MSFT_spatial_anchor

MSFT estensione rilasciata in runtime 108:(solo HoloLens 2)
XR_MSFT_spatial_anchor_persistence

Interazione manuale
(presa/mira posa, tocco d'aria, afferra)

solo HoloLens 2

MSFT estensione rilasciata:
XR_MSFT_hand_interaction
Articolazione manuale + mesh a mano

solo HoloLens 2

EXT estensione rilasciata:
XR_EXT_hand_tracking

MSFT estensione rilasciata:
XR_MSFT_hand_tracking_mesh

Tracciamento oculare

solo HoloLens 2

EXT estensione rilasciata:
XR_EXT_eye_gaze_interaction
acquisizione Realtà mista
(terzo rendering dalla fotocamera PV)

solo HoloLens 2

MSFT estensioni rilasciate:
XR_MSFT_secondary_view_configuration
XR_MSFT_first_person_observer
Profili di interazione del controller di movimento
(Samsung Odissea e HP Reverb G2)
MSFT estensioni rilasciate in runtime 103:
XR_EXT_samsung_odyssey_controller
XR_EXT_hp_mixed_reality_controller
Modelli di rendering del controller di movimento MSFT estensione rilasciata in runtime 104:
XR_MSFT_controller_model
Comprensione della scena (piani, mesh)

solo HoloLens 2

MSFT estensione rilasciata in runtime 106:
XR_MSFT_scene_understanding
XR_MSFT_scene_understanding_serialization
Modalità di riprogettazione del livello di composizione
(riprogettazione automatica planare o di sola orientamento)
MSFT estensione rilasciata in runtime 106:
XR_MSFT_composition_layer_reprojection
Interoperabilità con altri SDK di Realtà mista
(ad esempio, qr)
MSFT estensione rilasciata:
XR_MSFT_spatial_graph_bridge
Interoperabilità con l'API UWP CoreWindow
(ad esempio, per tastiera/mouse)
MSFT estensione rilasciata in runtime 103:
XR_MSFT_holographic_window_attachment
Interoperabilità con le API WinRT legacy Realtà mista
(ad esempio, SpatialAnchorTransferManager))

MSFT estensione rilasciata in runtime 105:
XR_MSFT_perception_anchor_interop

Altre estensioni tra fornitori

Estensioni ufficiali KHR rilasciate:
XR_KHR_composition_layer_depth
XR_KHR_visibility_mask
XR_KHR_win32_convert_performance_counter_time
XR_KHR_composition_layer_color_scale_bias

EXT estensioni rilasciate:
XR_EXT_win32_appcontainer_compatible
XR_EXT_debug_utils

Anche se alcune di queste estensioni possono iniziare come estensioni specifiche MSFT del fornitore, Microsoft e altri fornitori di runtime OpenXR collaborano per progettare estensioni o KHR fornitori tra fornitori EXT per molte di queste aree di funzionalità. Le estensioni tra fornitori rendono il codice scritto per tali funzionalità portabile tra i fornitori di runtime, come con la specifica di base.

Dove è possibile usare OpenXR?

Screenshot di Minecraft riprodotto da un utente che indossa un visore VR di realtà mista

Il nuovo motore RenderDragon di Minecraft ha creato il supporto per la realtà virtuale desktop con OpenXR!

Microsoft sta lavorando con Unity e Epic Games per garantire che il futuro della realtà mista sia aperto, non solo per HoloLens 2, ma attraverso tutta la gamma completa di PC VR, incluso il nuovo visore VR Reverb G2 di HP. OpenXR alimenta il supporto VR tra fornitori per la spedizione dei principali titoli, ad esempio Minecraft e Microsoft Flight Simulator! Per altre informazioni sullo sviluppo per HoloLens (prima generazione), vedere le note sulla versione.

Per informazioni su come iniziare a usare OpenXR in Unity, Unreal Engine o il proprio motore, leggere!

OpenXR in Unity

La configurazione corrente di Unity consigliata da Microsoft per HoloLens 2 e lo sviluppo di Windows Mixed Reality è Unity 2020.3 LTS con il plug-in Realtà mista OpenXR. Questo plug-in include il supporto per le estensioni OpenXR che illuminano le funzionalità complete di HoloLens 2 e Windows Mixed Reality visori VR, tra cui tracciamento della mano/occhio, ancoraggi nello spazio e controller HP Reverb G2. MRTK-Unity supporta OpenXR a partire da MRTK 2.7. Per altre informazioni su come iniziare a usare Unity 2020 e OpenXR, vedere Scelta di una versione unity e di un plug-in XR.

Se si sviluppa per HoloLens (prima generazione), è necessario continuare a usare Unity 2019.4 LTS con il back-end dell'API WinRT legacy. Se hai come destinazione il nuovo controller HP Reverb G2 in un'app Unity 2019, vedi la documentazione sull'input di HP Reverb G2.

A partire da Unity 2021.3 LTS, OpenXR sarà l'unico back-end Unity supportato per la destinazione HoloLens 2 e Windows Mixed Reality visori VR.

OpenXR nel motore Unreal

Unreal Engine 4.23 è stata la prima versione principale del motore di gioco a fornire il supporto dell'anteprima per OpenXR 1.0! Ora in Unreal Engine 4.26, il supporto per HoloLens 2, Windows Mixed Reality e altri visori VR desktop è disponibile tramite il supporto predefinito di OpenXR di Unreal Engine. Unreal Engine 4.26 supporta anche il plug-in di estensione OpenXR di Microsoft, consentendo l'interazione manuale e il supporto del controller HP Reverb G2, illuminando il set completo di funzionalità di HoloLens 2 e Windows Mixed Reality visori VR. Unreal Engine 4.26 è attualmente disponibile in Epic Games Launcher, con MRTK-Unreal 0.12 che supporta i progetti OpenXR.

OpenXR per lo sviluppo nativo

È possibile sviluppare usando OpenXR in un HoloLens 2 o Windows Mixed Reality visore VR immersive sul desktop. Se non si ha accesso a un visore VR, è possibile usare invece l'emulatore HoloLens 2 o il simulatore Windows Mixed Reality.

Per iniziare a sviluppare applicazioni OpenXR per HoloLens 2 o Windows Mixed Reality visori VR, vedere come iniziare a usare lo sviluppo di OpenXR.

Per una panoramica di tutti i componenti principali dell'API OpenXR, insieme ad esempi di applicazioni reali che usano OpenXR, vedere questo video dettagliato di 60 minuti:

Vedi anche