Добавить поддержку Android XR в существующий проект Godot XR
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Применимые устройства XR
Данное руководство поможет вам создавать приложения для устройств XR такого типа.
Если у вас уже есть проект XR в Godot, вы можете добавить поддержку Android XR, не создавая новый отдельный проект. Некоторые шаги необходимы для всех проектов, в то время как другие являются необязательными в зависимости от функций XR, которые использует ваш проект. В описании шагов мы привели ссылки на несколько проектов Godot XR с открытым исходным кодом, в которых добавлена поддержка Android XR, а также соответствующие запросы на слияние (pull requests), демонстрирующие изменения, необходимые для включения определенных функций.
Обязательные шаги для всех проектов
Выполните шаги, описанные в следующих разделах, независимо от того, какие функции XR поддерживает ваш проект. После этого просмотрите функции, описанные в списке необязательных шагов, чтобы определить, требуется ли вашему проекту дополнительная работа.
Обновите Godot и плагин Godot OpenXR Vendors.
Учитесь на примерах
Ознакомьтесь с запросом на слияние (pull request), чтобы изучить материал на реальном примере.
arrow_forward
Выполните следующие шаги, чтобы обновить ваш проект до последних необходимых версий и настроить параметры проекта для Android XR:
Обновите версию Godot до 4.6.2 или выше. Если вам нужна дополнительная помощь для вашего проекта, обратитесь к документации по миграции на новую версию .
Настройте параметры вашего проекта для Android XR:
Добавить предустановку экспорта для Android XR.
Включить использование команды `Gradle Build` .
В разделе «Функции XR» выберите OpenXR для режима XR и выберите «Включить плагин AndroidXR» .
Добавить поддержку отслеживания движений рук.
Учитесь на примерах
Ознакомьтесь с запросом на слияние (pull request), чтобы изучить материал на реальном примере.
arrow_forward
Хотя контроллеры и доступны, основным методом ввода на Android XR-гарнитурах и XR-очках является отслеживание движений рук. По возможности, следует добавить поддержку отслеживания движений рук в ваш проект Godot.
Добавить поддержку отслеживания движений рук: Настроить параметры проекта
Для начала выполните следующие шаги, чтобы настроить параметры проекта и включить отслеживание движений рук и связанные с ним расширения OpenXR.
Откройте настройки вашего проекта и перейдите в раздел «Общие» > «XR» > «OpenXR» .
В разделе «Расширения» выберите «Отслеживание движений рук» и «Профиль взаимодействия с руками» .
В разделе «Расширения» найдите подраздел «Мета» и выберите «Hand Tracking Mesh» и «Hand Tracking Aim» .
Добавить поддержку отслеживания движений рук: добавить и настроить узлы контроллера.
Вместо динамического изменения существующих узлов XRController3D для отслеживания движений рук, добавьте узлы контроллера для отслеживания и отображения моделей рук, а также для обработки входных данных из расширения Hand Tracking Aim:
Добавьте три дополнительных узла XRController3D к вашему узлу XROrigin3D .
Присвойте одному из них имя "HandTrackingLeft" и установите свойство tracker в значение /user/hand_tracker/left .
Назовите другой объект "HandTrackingRight" и установите свойство tracker равным /user/hand_tracker/right .
Назовите последний объект "HandTrackingAimLeft" и установите свойство tracker равным /user/fbhandaim/left .
Если бы исходные узлы XRController3D вашего проекта назывались "XRController3D_left" и "XRController3D_right", ваша сцена выглядела бы примерно так:
Свяжите сигналtracking_changed на контроллерах HandTrackingLeft и HandTrackingRight с отдельными функциями, которые обновляют видимость соответствующих трекеров контроллеров ( XRController3D_left и XRController3D_right в приведенном выше примере).
Например, функция, связанная с сигналом на HandTrackingLeft , может выглядеть следующим образом:
Включите свойство « Показывать при отслеживании» на узлах контроллера отслеживания рук.
Теперь в вашем проекте можно визуально переключаться между моделями контроллеров и моделями отслеживания движений рук в зависимости от того, использует ли пользователь отслеживание движений рук или контроллеры.
Добавьте несколько узлов OpenXRFbHandTrackingMesh в качестве дочерних элементов к узлам контроллера отслеживания движений рук.
Добавьте узлы XRHandModifier3D в качестве дочерних элементов к этим узлам OpenXRFbHandTrackingMesh , убедившись, что установлено правильное свойство Hand Tracker , чтобы применять данные отслеживания движений рук в реальном времени к моделям.
Добавить поддержку отслеживания движений рук: Настройте профиль взаимодействия с руками на карте действий OpenXR.
Далее вам нужно будет настроить профиль взаимодействия с рукой на карте действий OpenXR :
Откройте меню « Карта действий OpenXR» в нижней части редактора.
Удалите профиль Simple Controller , чтобы избежать проблем с совместимостью с контроллерами Galaxy XR.
Нажмите «Добавить профиль» , выберите «Взаимодействие с рукой» , а затем нажмите «ОК» .
Назначьте этому профилю одно или несколько заданий по своему усмотрению.
Добавить поддержку отслеживания движений рук: настроить жест меню для Android XR
Наконец, вы можете реализовать жест меню для Android XR. Он отображает значок, когда левая рука игрока находится в правильном положении для выполнения жеста меню, а также показывает или скрывает меню, когда пользователь выполняет жест. Для этого вы будете использовать узел HandTrackingAimLeft , который вы добавили ранее .
Добавьте к левому узлу отслеживания четырехугольник с рекламным щитом, отображающий выбранную вами иконку (см. узел MenuIcon на следующем изображении среди добавленных ранее узлов контроллера).
Подключитесь к сигналам button_pressed и button_released на HandTrackingAimLeft для выполнения таких функций:
После выполнения необходимых шагов для вашего проекта вы решаете, нужно ли вам дополнительно поработать над определенными функциями, в зависимости от требований и возможностей вашего приложения. Более подробную информацию о каждой из этих дополнительных функций см. в следующих разделах.
Регистрировать нажатия щипков как нажатия кнопок
В Android XR жест «щипка» используется для многих базовых системных действий , таких как выбор элементов, прокрутка, перемещение или изменение размера окон, а также перемещение элементов пользовательского интерфейса или объектов в 2D и 3D пространстве. Чтобы соответствовать этим шаблонам и обеспечить единообразный пользовательский опыт, ваше приложение должно регистрировать жесты «щипка» аналогично нажатиям кнопок на контроллере при использовании отслеживания движений рук.
Проверяет, превышает ли значение типа float заданные пороговые значения в сигналах input_float_changedXRController3D или нет.
Создает виртуальное действие с именем pinch_pressed .
Используйте функции XR Tools вместе с отслеживанием движений рук.
Многие проекты Godot XR используют Godot XR Tools , включая некоторые проекты с открытым исходным кодом, ссылки на которые приведены на этой странице. Для работы некоторых функций XR Tools, таких как FunctionPointer для взаимодействия с меню, потребуется дополнительный код для изменения требуемого действия при переключении пользователя на отслеживание движений рук.
Например, при использовании FunctionPointer для взаимодействия с меню обновите свойство active_button_action , указав действие отслеживания руки на основе сигнала tracking_changed узлов XRController3D , отвечающих за отслеживание руки (в предыдущих шагах настройки отслеживания руки эти узлы назывались HandTrackingLeft и HandTrackingRight ).
Используйте отслеживание движений рук в сочетании с искусственным передвижением.
Если в вашем проекте используется искусственное передвижение, поддержка отслеживания движений рук по-прежнему возможна. Например, вы можете создать систему передвижения, которая позволит игрокам рисовать пути для перемещения с помощью жестов, или вы можете позволить игрокам двигать руками вверх и вниз для ускорения, с дополнительными жестами для прыжков, лазания и планирования.
В игре «Музей всего сущего » используется искусственное перемещение с помощью джойстиков на контроллерах. Отслеживание движения рук было реализовано путем добавления «виртуальных джойстиков», которые игрок активирует, сжимая руку в воздухе и перемещая ее в нужном направлении.
Сценарий XRVirtualThumbstick создается при обнаружении жеста масштабирования.
Пока удерживается щипок, относительное расстояние и направление от исходного положения щипка преобразуются в вектор Vector2 и виртуально сопоставляются с обычным вводом с помощью джойстика.
Визуальная обратная связь от этого ввода также предоставляется игроку в виде двух плоских четырехугольных моделей, иллюстрирующих положение джойстика.
Вы можете попробовать аналогичный подход, чтобы заставить работать существующий код управления движением с помощью джойстика с минимальными изменениями. Однако вашему проекту все еще может потребоваться собственное решение для отслеживания движений рук.
Добавить поддержку сквозной передачи
Вы можете добавить в свое приложение поддержку сквозной передачи данных, чтобы пользователи могли видеть окружающую их реальность.
Для этого внесите следующие изменения в код вашего приложения:
Установите параметр environment_blend_mode интерфейса OpenXR XRInterface в значение XR_ENV_BLEND_MODE_ALPHA_BLEND .
Установите параметр background_mode узла WorldEnvironment в BG_COLOR .
Установите background_color узла WorldEnvironment на любой полностью прозрачный цвет.
Установите свойство Viewport transparent_bg в true .
Используйте расширение для оценки освещенности.
При включении сквозной передачи данных рекомендуется использовать расширение Android XR Light Estimation OpenXR. Это расширение изменяет свойства WorldEnvironment и DirectionalLight3D для более точной имитации освещения реального мира пользователя, благодаря чему виртуальные объекты лучше сливаются с реальными условиями освещения. Вы можете включить это расширение в настройках своего проекта.
Откройте настройки вашего проекта и перейдите в раздел «Общие» > «XR» > «OpenXR» .
В разделе Androidxr выберите «Оценка освещенности» .
Добавьте узел OpenXRAndroidLightEstimation в дерево сцены и подключите его к WorldEnvironment и DirectionalLight3D вашей сцены.
Пример: Включение или отключение сквозной передачи и оценки освещенности.
Следующий код включает или отключает сквозную передачу и оценку освещенности:
При отключении оценки освещенности необходимо вручную восстановить исходное направление объекта DirectionalLight3D .
Полный пример проекта, использующего сквозную передачу данных и оценку освещенности, можно найти в проекте Expedition to Blobotopia на GitLab.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2026-05-19 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2026-05-19 UTC."],[],[]]