Разработка
Разработка
Выберите платформу

Поддержка OpenXR для гарнитур Meta Quest

Обновлено: 23 янв 2025 г.
OpenXR — это бесплатный открытый стандарт от Khronos Group для разработки высокопроизводительных VR-приложений, работающих на разных платформах. OpenXR упрощает разработку для VR, позволяя разработчикам использовать один и тот же код на разных платформах. Так разработчики могут создавать переносимый код для устройств разных производителей. Подробнее об OpenXR см. на странице Khronos OpenXR.
OpenXR Mobile SDK включает в себя необходимые ресурсы для использования OpenXR API для нативной разработки VR-приложений для Meta Quest и Quest 2. Гарнитуры Meta Quest поддерживают стандарт OpenXR 1.0.
Скачайте Oculus OpenXR Mobile SDK с нашей страницы с файлами для скачивания.

Документация для разработчиков OpenXR

Важно! Начните с основных понятий OpenXR, изучив статью Основные понятия и связанные с ними темы. В этих темах рассматриваются:
Вы также можете изучить спецификацию OpenXR 1.0 на сайте Khronos Group. На сайте представлена справочная документация по API и справочное руководство в формате PDF, содержащее подробный обзор API.

Мобильная разработка Meta Quest OpenXR

Помимо документации от Khronos Group, в этом разделе содержится информация, необходимая для разработки приложений OpenXR для Meta Quest и Quest 2.

Спецификация манифеста Android

При настройке проекта OpenXR для Meta Quest и Quest 2 добавьте в файл AndroidManifest.xml следующий фильтр намерений активности:
<intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="org.khronos.openxr.intent.category.IMMERSIVE_HMD" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>

Загрузчик OpenXR для Android

Meta поддерживает загрузчик Khronos OpenXR для Android. Проприетарный загрузчик не требуется. Все примеры приложений уже интегрированы в загрузчик Khronos OpenXR для Android.
Но есть и ограничения: * Meta поддерживает только загрузчик Khronos OpenXR для Android версии 1.0.34 и выше. Использование загрузчика Khronos OpenXR для Android ниже этой версии приведет к аварийному завершению работы вашего приложения. * Эта поддержка предназначена для пользователей версий ОС 62 и более поздних, а также для пользователей Quest 1. * Приложения, использующие новый загрузчик, будут аварийно завершать работу в версиях ОС до 62. * Если ваше приложение использует загрузчик Khronos OpenXR для Android, пользователи устройств, отличных от Quest 1, и ОС ниже версии 62 не смогут увидеть ваше обновление в Meta Store из-за проблем с совместимостью.
Чтобы добавить стандартный загрузчик OpenXR (Khronos) для Android в свой проект, добавьте в файл build.gradle следующий код:
android{
  ...

  buildFeatures {
    prefab true
  }
}
и
dependencies {
  ...

  implementation 'org.khronos.openxr:openxr_loader_for_android:1.0.34'
}
Для других платформ см. официальный файл README OpenXR-SDK.

Расширение загрузчика KHR для Android

Перед загрузкой загрузчик необходимо инициализировать с указанием параметров для конкретной платформы. Эти параметры задаются с помощью расширений загрузчика KHR XR_KHR_loader_init и XR_KHR_loader_init_android, добавленных в спецификацию 1.0.11 OpenXR. Приложения должны сначала получить указатель функции xrInitializeLoaderKHR через xrGetInstanceProcAddress с нулевым указателем экземпляра, а затем вызвать xrInitializeLoaderKHR со структурой XrLoaderInitInfoAndroidKHR, определенной в XR_KHR_loader_init_android.

Расширение для создания экземпляра KHR для Android

Приложения должны указывать параметры для конкретной платформы в xrCreateInstance через расширение XR_KHR_android_create_instance.

Начало работы с OpenXR Mobile SDK

Чтобы начать знакомство с разработкой OpenXR на гарнитурах Meta, изучите статью Сборка и запуск примера приложения hello_xr. Приложение hello_xr — это простой кроссплатформенный пример OpenXR в репозитории OpenXR-SDK-Source GitHub группы Khronos, который можно найти по адресу https://github.com/KhronosGroup/OpenXR-SDK-Source/tree/master/src/tests/hello_xr.

Примеры

  • XrCompositor_NativeActivity — простая сцена, использующая класс Android NativeActivity, чтобы проиллюстрировать использование различных типов слоев, доступных с OpenXR.
  • XrHandsFB — демонстрация трех расширений Meta для рук, позволяющих рендерить сетку рук со скином, использовать капсулы столкновений и модель взаимодействия с пользовательским интерфейсом по принципу ray-cast-plus-pinch. Благодаря этому поддержка рук в OpenXR сравнялась с соответствующим API рук VrApi.
  • XrHandsAndControllers — простой пример, показывающий, как настроить одновременное отслеживание движений рук и контроллеров и определить, когда контроллеры находятся в руках, чтобы создать мультимодальное взаимодействие.
  • XrPassthrough — пример приложения, демонстрирующий базовую функциональность сквозной камеры. Обеспечивает ввод информации с контроллеров для переключения различных функций и стилей, таких как базовый режим сквозной камеры, неподвижный и анимированный стили, маскированная (выборочная) и проецируемая (на сетку) сквозная камера.
  • XrSpatialAnchor — пример приложения, демонстрирующий возможности нашей системы пространственных привязок и предоставляющий примеры кода для работы, обслуживания и совместного использования пространственных привязок, которые вы можете использовать в своем проекте.
  • XrColorSpaceFB — образовательный пример, который касается цветовых пространств и демонстрирует, как с помощью XR_FB_color_space указать, для какого цветового пространства создано приложение.
  • XrControllers — пример, показывающий, как получить доступ к каждому из действий ввода на контроллере Meta Quest Touch Pro через OpenXR. В нем показано использование расширенных интерфейсов Haptics API TruTouch с контроллерами Meta Quest Touch Pro.
  • XrDynamicObjects: предоставляет пример использования Dynamic Object Tracker API, показывая, как можно отслеживать клавиатуры и представлять их через сквозную камеру в Meta Quest 3 и последующих играх.
  • XrSpaceWarp — пример, демонстрирующий Application SpaceWarp, функцию, которая позволяет добиться ступенчатого улучшения производительности и задержки.
  • XrBodyTrackingFB — пример, демонстрирующий функциональность отслеживания движений тела для отрисовки суставов скелета на теле, руках и кистях с наложением на суставы соответствующих координатных рамок.
  • XrEyeTrackingSocialFB — демонстрация функций отслеживания движений глаз, показывающая данные о взгляде обоих глаз в социальном контексте.
  • XrFaceTrackingFB — пример приложения с отслеживанием лица, которое отображает веса соответствующих блендшейпов, срабатывающих или изменяющихся при движении частей лица: рта, щек, глаз и т. д.
  • XrSceneModel — приложение, демонстрирующее возможности распознавания сцен, которые обеспечивают расширенное взаимодействие с окружением пользователя, например полом, стенами и мебелью.
  • XrVirtualKeyboard — пример, демонстрирующий использование виртуальной клавиатуры. Приложение контролирует позиционирование, взаимодействие и рендеринг клавиатуры.
  • XrMicrogestures — пример, демонстрирующий использование микрожестов. Приложение показывает, что пользователь правильно выполнил микрожест большим пальцем (движение влево или право, назад или вперед) или касание большим пальцем.

Ресурсы

Логотип навигации
Русский
© 2026 Meta