OpenXR

Логотип OpenXR

OpenXR — это открытый стандарт API без роялти от Khronos, предоставляющий движкам собственный доступ к целому ряду устройств в спектре смешанной реальности.

Вы можете разрабатывать с помощью OpenXR на HoloLens 2 или Windows Mixed Reality иммерсивную гарнитуру виртуальной реальности на настольном компьютере. Если у вас нет доступа к гарнитуре, можно использовать эмулятор HoloLens 2 или симулятор Windows Mixed Reality.

Почему OpenXR?

С помощью OpenXR можно создавать подсистемы, предназначенные как для голографических устройств, таких как HoloLens 2, так и для иммерсивных устройств виртуальной реальности, таких как Windows Mixed Reality гарнитуры для настольных компьютеров. OpenXR позволяет писать код, который затем переносится на широкий спектр аппаратных платформ.

API OpenXR использует загрузчик для подключения приложения непосредственно к собственной платформе гарнитуры. Конечные пользователи получают максимальную производительность и минимальную задержку независимо от того, используют ли они Windows Mixed Reality или любую другую гарнитуру.

Что такое OpenXR?

API OpenXR предоставляет основные функции прогнозирования положения, времени кадра и пространственного ввода, необходимые для создания подсистемы, которая может ориентироваться как на голографические, так и на иммерсивные устройства.

Чтобы узнать об API OpenXR, проверка спецификацию OpenXR 1.0, справочник по API и краткое справочное руководство. Дополнительные сведения см. на странице Khronos OpenXR.

Для работы с полным набором функций HoloLens 2 вы также будете использовать расширения OpenXR для разных поставщиков и поставщиков, которые предоставляют дополнительные функции, выходящие за рамки ядра OpenXR 1.0, такие как отслеживание рук, отслеживание глаз, пространственное сопоставление и пространственные привязки. Дополнительные сведения см. в разделе "Дорожная карта" ниже о расширениях, которые будут доступны в конце этого года.

OpenXR сам по себе не является подсистемой смешанной реальности. Вместо этого OpenXR позволяет таким подсистемам, как Unity и Unreal, писать переносимый код один раз, который затем может получить доступ к собственным функциям платформы голографического или иммерсивного устройства пользователя, независимо от того, кто создал такую платформу.

Схема действий

Спецификация OpenXR определяет механизм расширения, который позволяет реализующим средам выполнения предоставлять дополнительные функциональные возможности за пределами основных функций, определенных в базовой спецификации OpenXR 1.0.

Существует три типа расширений OpenXR:

  • Расширения поставщика (например, XR_MSFT_...): позволяет внедрять инновации для отдельных поставщиков в аппаратных или программных функциях. Любой поставщик среды выполнения может в любое время представить и отправить расширение поставщика.
    • Экспериментальные расширения поставщика (например, XR_MSFTX_...): предварительный просмотр расширений экспериментальных поставщиков для сбора отзывов. XR_MSFTX_... Расширения предназначены только для устройств разработчика и будут удалены при отправке реального расширения. Чтобы поэкспериментировать с ними, можно включить предварительные версии расширений на устройстве разработчика.
  • Расширения между поставщиками EXT . Расширения между поставщиками, которые определяются и реализуются несколькими компаниями. Группы заинтересованных компаний могут в любое время внедрять расширения EXT.
  • Официальные KHR расширения: Официальные расширения Khronos, утвержденные в рамках основного выпуска спецификации. На расширения KHR распространяется та же лицензия, что и сама базовая спецификация.

Среда выполнения Windows Mixed Reality OpenXR поддерживает набор расширений MSFT и EXT , которые позволяют использовать полный набор функций HoloLens 2 в приложения OpenXR:

Область применения компонента Доступность расширения
Системы + сеансы Базовая спецификация OpenXR 1.0:
XrInstance, XrSystemId, XrSession
Пространства ссылок (представление, локальный, этап) Базовая спецификация OpenXR 1.0:
XrSpace
Конфигурации просмотра (моно, стерео) Базовая спецификация OpenXR 1.0:
XrView...
Буферные цепочки + время кадра Базовая спецификация OpenXR 1.0:
XrSwapchain... + xrWaitFrame
Слои композиции
(проекция, четырехугольник)
Базовая спецификация OpenXR 1.0:
XrCompositionLayer... + xrEndFrame
Входные данные и тактильные Базовая спецификация OpenXR 1.0:
XrAction...
Интеграция Direct3D 11/12 Выпущены официальные KHR расширения:
XR_KHR_D3D11_enable
XR_KHR_D3D12_enable
Неограниченное пространство ссылок
(возможности мирового масштаба)
MSFT Выпущено расширение:
XR_MSFT_unbounded_reference_space
Пространственные привязки

MSFT Выпущено расширение:
XR_MSFT_spatial_anchor

MSFT расширение выпущено в среде выполнения 108:(только HoloLens 2)
XR_MSFT_spatial_anchor_persistence

Взаимодействие с рукой
(захват/поза прицела, воздушный кран, захват)

Только HoloLens 2

MSFT Выпущено расширение:
XR_MSFT_hand_interaction
Рисование руки + сетка рук

Только HoloLens 2

EXT Выпущено расширение:
XR_EXT_hand_tracking

MSFT Выпущено расширение:
XR_MSFT_hand_tracking_mesh

Взгляд

Только HoloLens 2

EXT Выпущено расширение:
XR_EXT_eye_gaze_interaction
Сбор Смешанная реальность
(третий отрисовка с фотокамеры)

Только HoloLens 2

MSFT Выпущенные расширения:
XR_MSFT_secondary_view_configuration
XR_MSFT_first_person_observer
Профили взаимодействия с контроллером движения
(Samsung Odyssey и HP Reverb G2)
MSFT расширения, выпущенные в среде выполнения 103:
XR_EXT_samsung_odyssey_controller
XR_EXT_hp_mixed_reality_controller
Модели отрисовки контроллера движения MSFT расширение, выпущенное в среде выполнения 104:
XR_MSFT_controller_model
Понимание сцены (плоскости, сетки)

Только HoloLens 2

MSFT расширение, выпущенное в среде выполнения 106:
XR_MSFT_scene_understanding
XR_MSFT_scene_understanding_serialization
Режимы повторного проецирования слоя композиции
(автопланирование или перепроецирование только с ориентацией)
MSFT расширение, выпущенное в среде выполнения 106:
XR_MSFT_composition_layer_reprojection
Взаимодействие с другими пакетами SDK для Смешанная реальность
(например, QR)
MSFT Выпущено расширение:
XR_MSFT_spatial_graph_bridge
Взаимодействие с api UWP CoreWindow
(например, для клавиатуры или мыши)
MSFT расширение, выпущенное в среде выполнения 103:
XR_MSFT_holographic_window_attachment
Взаимодействие с устаревшими API Смешанная реальность WinRT
(например, SpatialAnchorTransferManager))

MSFT расширение, выпущенное в среде выполнения 105:
XR_MSFT_perception_anchor_interop

Другие расширения для разных поставщиков

Выпущены официальные KHR расширения:
XR_KHR_composition_layer_depth
XR_KHR_visibility_mask
XR_KHR_win32_convert_performance_counter_time
XR_KHR_composition_layer_color_scale_bias

EXT Выпущенные расширения:
XR_EXT_win32_appcontainer_compatible
XR_EXT_debug_utils

Хотя некоторые из этих расширений могут начинаться как расширения для конкретных MSFT поставщиков, Корпорация Майкрософт и другие поставщики среды выполнения OpenXR совместно разрабатывают кросс-поставщиков EXT или KHR расширения для многих из этих функциональных областей. Расширения между поставщиками делают код, который вы пишете для этих функций, переносимым между поставщиками среды выполнения, как и в базовой спецификации.

Где можно использовать OpenXR?

Снимок экрана: minecraft, в который играет пользователь, одетый в гарнитуру смешанной реальности

Новый движок RenderDragon от Minecraft создал поддержку виртуальной реальности для настольных компьютеров с помощью OpenXR!

Корпорация Майкрософт работает с Unity и Epic Games, чтобы обеспечить открытое будущее смешанной реальности не только для HoloLens 2, но и на всей широте ВИРТУАЛЬНОй реальности для ПК, включая новую гарнитуру HP Reverb G2. OpenXR обеспечивает поддержку виртуальной реальности между поставщиками для основных наименований, которые сегодня поставляемы, такие как Minecraft и Microsoft Flight Simulator! Дополнительные сведения о разработке для HoloLens (1-го поколения) см. в заметках о выпуске.

Сведения о том, как приступить к работе с OpenXR в Unity, Unreal Engine или собственном движке, см. в статье.

OpenXR в Unity

В настоящее время рекомендуемая конфигурация Unity для разработки HoloLens 2 и Windows Mixed Reality — это Unity 2020.3 LTS с подключаемым модулем Смешанная реальность OpenXR. Этот подключаемый модуль включает поддержку расширений OpenXR, которые освещают все возможности HoloLens 2 и Windows Mixed Reality гарнитур, включая отслеживание рук и глаз, пространственные привязки и контроллеры HP Reverb G2. MRTK-Unity поддерживает OpenXR с версии MRTK 2.7. Дополнительные сведения о начале работы с Unity 2020 и OpenXR см. в разделе Выбор версии Unity и подключаемого модуля XR.

При разработке для HoloLens (1-го поколения) необходимо продолжать использовать Unity 2019.4 LTS с устаревшей серверной частью API WinRT. Если вы используете новый контроллер HP Reverb G2 в приложении Unity 2019, ознакомьтесь с нашей документацией по входным данным HP Reverb G2.

Начиная с Unity 2021.3 LTS, OpenXR будет единственной поддерживаемой серверной частью Unity для HoloLens 2 и Windows Mixed Reality гарнитур.

OpenXR в Unreal Engine

Unreal Engine 4.23 стал первым основным выпуском игрового движка, который получил поддержку предварительной версии OpenXR 1.0! Теперь в Unreal Engine 4.26 поддержка HoloLens 2, Windows Mixed Reality и других гарнитур виртуальной реальности для настольных компьютеров доступна благодаря встроенной поддержке OpenXR Unreal Engine. Unreal Engine 4.26 также поддерживает подключаемый модуль расширения OpenXR корпорации Майкрософт, обеспечивающий взаимодействие с рукой и поддержку контроллера HP Reverb G2, освещающий полный набор функций HoloLens 2 и Windows Mixed Reality гарнитур. Unreal Engine 4.26 доступен сегодня в Epic Games Launcher, а MRTK-Unreal 0.12 поддерживает проекты OpenXR.

OpenXR для разработки в машинном коде

Вы можете разрабатывать с помощью OpenXR на HoloLens 2 или Windows Mixed Reality иммерсивную гарнитуру виртуальной реальности на настольном компьютере. Если у вас нет доступа к гарнитуре, можно использовать эмулятор HoloLens 2 или симулятор Windows Mixed Reality.

Чтобы приступить к разработке приложений OpenXR для HoloLens 2 или Windows Mixed Reality гарнитур виртуальной реальности, см. статью о начале разработки OpenXR.

Чтобы ознакомиться со всеми основными компонентами API OpenXR, а также примерами реальных приложений, использующих OpenXR, проверка это 60-минутное пошаговое видео:

См. также раздел