OpenXR

Logo OpenXR

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

È possibile sviluppare usando OpenXR in holoLens 2 o Windows Realtà mista visore VR immersive sul desktop. Se non hai accesso a un visore VR, puoi usare invece l'emulatore HoloLens 2 o il simulatore di Windows Realtà mista.

Perché OpenXR?

Con OpenXR è possibile creare motori destinati a entrambi i dispositivi olografici, ad esempio HoloLens 2, e dispositivi VR immersive, come i visori VR windows Realtà mista per i 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 windows Realtà mista 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 necessari per creare un motore che possa essere destinati a 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 specificare come destinazione il set completo di funzionalità di HoloLens 2, si usano anche estensioni OpenXR specifiche del fornitore e del fornitore. Queste funzionalità consentono funzionalità come il tracciamento manuale articolato, il tracciamento oculare, il mapping spaziale e gli ancoraggi nello spazio. Per altre informazioni, vedere la sezione Roadmap sulle estensioni disponibili 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 può quindi accedere alle funzionalità native della piattaforma 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 altre funzionalità 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 del fornitore sperimentali (ad esempio: XR_MSFTX_... estensioni del fornitore sperimentali in anteprima per raccogliere commenti e suggerimenti). XR_MSFTX_... le estensioni sono solo per i dispositivi di sviluppo e vengono rimosse quando viene fornita la vera estensione. Per provare a usarle, è possibile abilitare le estensioni di anteprima nel dispositivo per sviluppatori.
  • Estensioni tra fornitori EXT : estensioni tra fornitori che più aziende definiscono e implementano. Gruppi di società interessate possono introdurre estensioni EXT in qualsiasi momento.
  • Estensioni ufficiali: estensioni ufficiali KHR khronos ratificate come parte di una versione specifica di base. Le estensioni KHR sono coperte dalla stessa licenza della specifica core stessa.

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

Area funzionalità 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...
Intervallo fotogrammi + swapchain Specifica core OpenXR 1.0:
XrSwapchain... + xrWaitFrame
Livelli di composizione
(proiezione, quad)
Specifica core OpenXR 1.0:
XrCompositionLayer... + xrEndFrame
Input e aptici 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
(posizione di presa/obiettivo, 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 Odyssey 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
Indicatore di scena (codici a matrice)

Solo HoloLens 2

MSFT estensione rilasciata in runtime 113:
XR_MSFT_scene_marker
Modalità di riprogettazione del livello di composizione
(riprogettazione solo pianore o orientamento automatico)
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 cross-vendor 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 vr desktop usando OpenXR!

Microsoft ha lavorato 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 supporta oggi il supporto VR tra fornitori per i 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 di Unity consigliata corrente per HoloLens 2 e Windows Realtà mista lo sviluppo è 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 dei controller HoloLens 2 e Windows Realtà mista, tra cui tracciamento manuale/oculare, 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 di Unity e di un plug-in XR.

Se si sta sviluppando 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 HP Reverb G2.

A partire da Unity 2021.3 LTS, OpenXR è l'unico back-end Unity supportato per la destinazione holoLens 2 e i visori VR windows Realtà mista.

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 Realtà mista e altri visori VR desktop è disponibile tramite il supporto openXR predefinito di Unreal Engine. Unreal Engine 4.26 supporta anche il plug-in di estensione OpenXR di Microsoft. Ciò consente l'interazione manuale e il supporto del controller HP Reverb G2, illuminando il set completo di funzionalità di HoloLens 2 e visori VR Windows Realtà mista. 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 holoLens 2 o Windows Realtà mista visore VR immersive sul desktop. Se non hai accesso a un visore VR, puoi usare invece l'emulatore HoloLens 2 o il simulatore di Windows Realtà mista.

Per iniziare a sviluppare applicazioni OpenXR per HoloLens 2 o Windows Realtà mista 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