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 |
Неограниченное пространство ссылок (возможности мирового масштаба) |
MSFT Выпущено расширение:XR_MSFT_unbounded_reference_space |
Пространственные привязки |
|
Взаимодействие с рукой (захват/поза прицела, воздушный кран, захват) Только HoloLens 2 |
MSFT Выпущено расширение:XR_MSFT_hand_interaction |
Рисование руки + сетка рук Только HoloLens 2 |
|
Взгляд Только 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
поставщиков, Корпорация Майкрософт и другие поставщики среды выполнения OpenXR совместно разрабатывают кросс-поставщиков EXT
или KHR
расширения для многих из этих функциональных областей. Расширения между поставщиками сделают код, который вы пишете для этих функций, переносимым между поставщиками среды выполнения, как и в базовой спецификации.
Где можно использовать OpenXR?
Новый движок 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-минутным пошаговым видео: