OpenXR — это бесплатный открытый стандарт от Khronos Group для разработки высокопроизводительных VR-приложений, работающих на разных платформах. OpenXR упрощает разработку для VR, позволяя разработчикам использовать один и тот же код на разных платформах. Так разработчики могут создавать переносимый код для устройств разных производителей. Подробнее об OpenXR см. на странице Khronos OpenXR.
OpenXR Mobile SDK включает в себя необходимые ресурсы для использования OpenXR API для нативной разработки VR-приложений для Meta Quest и Quest 2. Гарнитуры Meta Quest поддерживают стандарт OpenXR 1.0.
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 следующий код:
Перед загрузкой загрузчик необходимо инициализировать с указанием параметров для конкретной платформы. Эти параметры задаются с помощью расширений загрузчика 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.
XrCompositor_NativeActivity — простая сцена, использующая класс Android NativeActivity, чтобы проиллюстрировать использование различных типов слоев, доступных с OpenXR.
XrHandsFB — демонстрация трех расширений Meta для рук, позволяющих рендерить сетку рук со скином, использовать капсулы столкновений и модель взаимодействия с пользовательским интерфейсом по принципу ray-cast-plus-pinch. Благодаря этому поддержка рук в OpenXR сравнялась с соответствующим API рук VrApi.
XrHandsAndControllers — простой пример, показывающий, как настроить одновременное отслеживание движений рук и контроллеров и определить, когда контроллеры находятся в руках, чтобы создать мультимодальное взаимодействие.
XrPassthrough — пример приложения, демонстрирующий базовую функциональность сквозной камеры. Обеспечивает ввод информации с контроллеров для переключения различных функций и стилей, таких как базовый режим сквозной камеры, неподвижный и анимированный стили, маскированная (выборочная) и проецируемая (на сетку) сквозная камера.
XrSpatialAnchor — пример приложения, демонстрирующий возможности нашей системы пространственных привязок и предоставляющий примеры кода для работы, обслуживания и совместного использования пространственных привязок, которые вы можете использовать в своем проекте.
XrColorSpaceFB — образовательный пример, который касается цветовых пространств и демонстрирует, как с помощью XR_FB_color_space указать, для какого цветового пространства создано приложение.
XrDynamicObjects: предоставляет пример использования Dynamic Object Tracker API, показывая, как можно отслеживать клавиатуры и представлять их через сквозную камеру в Meta Quest 3 и последующих играх.
XrSpaceWarp — пример, демонстрирующий Application SpaceWarp, функцию, которая позволяет добиться ступенчатого улучшения производительности и задержки.
XrBodyTrackingFB — пример, демонстрирующий функциональность отслеживания движений тела для отрисовки суставов скелета на теле, руках и кистях с наложением на суставы соответствующих координатных рамок.
XrEyeTrackingSocialFB — демонстрация функций отслеживания движений глаз, показывающая данные о взгляде обоих глаз в социальном контексте.
XrFaceTrackingFB — пример приложения с отслеживанием лица, которое отображает веса соответствующих блендшейпов, срабатывающих или изменяющихся при движении частей лица: рта, щек, глаз и т. д.
XrSceneModel — приложение, демонстрирующее возможности распознавания сцен, которые обеспечивают расширенное взаимодействие с окружением пользователя, например полом, стенами и мебелью.
XrVirtualKeyboard — пример, демонстрирующий использование виртуальной клавиатуры. Приложение контролирует позиционирование, взаимодействие и рендеринг клавиатуры.
XrMicrogestures — пример, демонстрирующий использование микрожестов. Приложение показывает, что пользователь правильно выполнил микрожест большим пальцем (движение влево или право, назад или вперед) или касание большим пальцем.