Игровой движок Godot переживает большое обновление, в котором разработчики улучшили поддержку виртуальной и смешанной реальности для целого списка иммерсивных платформ. Часть улучшений реализовали при финансовой и технической поддержке Meta*, которая прокачивает независимый движок на открытых исходниках, добавляя его к неподконтрольным Unity и Unreal Engine на Quest.
Meta обеспечивает Godot стремительное развитие. Одним из его результатов пару недель назад стал выпуск редактора Godot в виде приложения для Horizon OS. Благодаря этому проекты для очков можно создавать на самих очках.
Ниже вас ждёт обширный список последних улучшений Godot, направленных на иммерсивную разработку. Мы приводим их в цитатах ключевого специалиста движка по поддержке виртуальной и смешанной реальности Бастиана Олиджа:
Архитектурные улучшения
Улучшенная синхронизация кадров
При изначальной реализации OpenXR в Godot 3 были ограничения на порядок, в котором происходили определённые действия. Большая часть взаимодействия с OpenXR была связана с движком рендеринга, в результате чего Godot больше полагался на предиктивные алгоритмы для позиционирования отслеживаемых объектов, таких как контроллеры. Godot 4 унаследовал этот подход.
В рамках релиза Godot 4.3 большая часть этой логики переделана для правильного взаимодействия с OpenXR. Godot теперь правильно информирует OpenXR, когда начинает обрабатывать новый кадр, и получает данные о позе для отслеживаемых объектов с прогнозируемым позиционированием для текущего кадра.
Стандартизация дополненной реальности с видом через камеры и прозрачные дисплеи
Passthrough — это механизм, при котором видеокамеры на очках виртуальной реальности записывают реальный мир и представляют этот вид реального мира в качестве фона внутри очков, превращая их в устройство дополненной реальности. Различные очки реализуют эту функцию по-разному, и это вызвало трудности у разработчиков, которые ориентировались сразу на несколько устройств.
Сквозной режим позволяет делать некоторые изящные вещи, невозможные с оптическими ДР-устройствами, но большинство разработчиков приложений, ориентированных на дополненную реальность, не следует заставлять писать разный код для поддержки всего этого оборудования.
Таким образом, мы стандартизировали этот подход, используя режимы смешивания среды OpenXR и переместив специфичный для платформы код в OpenXR-плагины вендоров.
Стандартизация отслеживания рук, лица и тела
Godot давно поддерживает отслеживание рук, однако сейчас внесены улучшения для кроссплатформенной работы, включая стандартизацию между OpenXR и WebXR. Узел OpenXRHand признан устаревшим в пользу нового XRHandModifier3D, который предназначен для работы с любой иммерсивной системой, а не только с OpenXR.
Добавлена поддержка отслеживания лица, при этом данные отслеживания поступают с нескольких устройств. Godot теперь поддерживает стандарт Unified Expressions для обработки данных трекинга лиц.
Поддержку отслеживания тела надстроили на фундамент в виде Godot Humanoid Skeleton, что позволяет различным трекерам тела использовать логику перенацеливания Godot.
Хотя эти три системы реализованы под наименованием XR, это не ограничивает варианты их использования. Уже есть несколько плагинов с использованием этой системы для получения данных отслеживания тела из различных соответствующих решений, от оптического мокапа до костюмов трекинга всего тела.
Улучшенный фовеальный рендеринг в Vulkan
Совместимый рендерер напрямую использует поддержку фовеального рендеринга OpenXR, но она имеет различные ограничения и неприменима вне OpenXR.
В рендерере Vulkan у нас была поддержка Variable Rate Shading, который позволяет применять фовеальный рендеринг в Godot без прежних недостатков. В последней версии применены различные улучшения, которые повышают контроль над используемой картой плотности и позволяют отслеживанию глаз влиять на карту и обеспечивать качественную визуализацию в точке фокусировки пользователя.
Улучшенная поддержка WebXR
Поддержка WebXR в Godot постоянно совершенствуется, в частности, добавлена поддержка отслеживания рук, MSAA и ряд более мелких исправлений и улучшений. Наша реализация WebXR теперь также работает с приложениями дополненной реальности.
Улучшения под Meta
Улучшенная поддержка сквозного вида и отслеживания рук
Помимо стандартизации сквозного вида и отслеживания рук в Godot, поддержка многих дополнительных функций от Meta реализована в плагине Godot OpenXR Vendors.
Для сквозного вида она включает применение различных фильтров к сквозным изображениям, например, регулировку яркости, контрастности и насыщенности, сопоставление цветов с другими значениями или даже проецирование сквозного вида на пользовательскую геометрию, чтобы перенести только определённые объекты из физической среды пользователя в иной опыт виртуальной реальности.
Для отслеживания рук разработчики теперь могут получать доступ к сеткам рук, формам прикосновений для рук и выполнять простое отслеживание жестов, например, обнаружение щипков между большим пальцем пользователя и любым другим пальцем.
Смотрите руководства по отслеживанию рук и сквозному виду.
Поддержка слоёв композиции
Слои композиции являются стандартной функцией OpenXR, которая позволяет разработчикам добавлять плавающие панели (плоские или изогнутые), отображающие 2D-контент из Godot SubViewport.
Результатом такого подхода является гораздо более чёткая детализация 2D-контента по сравнению с применением того же контента в качестве текстуры на 3D-сетке.
Это идеально подходит для игровых меню, просмотра мультимедиа или отображения на экране. При использовании этой техники особенно легко читается мелкий текст.
W4 Games добавила и основную реализацию, и специфичные для Meta расширения, которые позволяют применять дополнительную резкость или суперсэмплинг, расширенное альфа-смешивание или отмечать определённые композиционные слои как содержащие «защищённый контент».
Подробнее об этих спецфункциях читайте в руководстве по композиционным слоям.
Scene Discovery и пространственные якоря
Эти две тесно связанные функции, возможно, являются самой захватывающей частью проделанной работы на данный момент. Scene Discovery от Meta позволяет Quest сканировать ваше окружение и предоставлять вашей игре информацию о реальном мире.
Это даст вам размещать объекты на стенах, на мебели или заставлять NPC взаимодействовать с реальным окружением.
Пространственные якоря позволяют сделать это постоянным. Создайте пространственный якорь, который ссылается на место на вашей стене, и вы можете показывать там виртуальный экран в любое время, когда ваш пользователь возвращается в приложение.
Для дополнительной информации есть руководства Scene Manager и Spatial Anchors.
Новая / улучшенная поддержка устройств
Pico 4
Godot уже некоторое время поддерживает очки Pico, но в прошлом году эту функцию улучшили. Pico полностью приняла официальный загрузчик Khronos Android для OpenXR и прекратила поддержку своего собственного загрузчика. Godot полностью поддерживает новый подход.
Magic Leap 2
Поддержку экосистемы Magic Leap недавно добавили в плагин поставщика. Magic Leap отличается от других автономных устройств на Android, поскольку является оптическим устройством дополненной реальности и работает на оборудовании AMD. На этих гаджетах вам необходимо использовать мобильный рендерер Vulkan.
Что будет дальше
Олидж также поделился содержимым бэклога, которое сейчас в работе.
Отдельный поток рендеринга
В Godot 4.4 предстоит много работать, чтобы сделать это полностью жизнеспособным, но основы заложены. В рамках внедрения улучшенной логики синхронизации кадров мы провели большую очистку кода XR, чтобы убедиться, что он работает правильно, когда рендеринг идёт в отдельном потоке. Особенно для XR-приложений, это приближает нас к обеспечению стабильной частоты кадров даже на автономных устройствах.
Поддержка Logitech MX Ink
Это не новые очки, а периферия, MX Ink — это стилус с позиционным отслеживанием, который можно использовать с Meta Quest. Поддержку недавно ввели в основную версию, и это устройство будет работать в предстоящем релизе Godot 4.4. Мы рассматриваем возможность его поддержки в будущем патче 4.3.
Автономные очки HTC Vive
HTC дала команде устройства HTC Vive XR Elite, что позволило нам гарантировать работу Godot на автономных устройствах HTC. Мы также работаем вместе с HTC над улучшениями под эти устройства.
Qualcomm Spaces
Это всё ещё в разработке, мы поддерживаем среду выполнения OpenXR от Qualcomm на Lynx R1, но рассматриваем увеличение количества устройств в этой экосистеме.
*В России признана экстремистской
Не пропускайте важнейшие новости о дополненной и виртуальной реальности — подписывайтесь на Голографику в Telegram, ВК и Twitter! Поддержите проект на Boosty.
Далее: API Passthrough откроет доступ к необработанным данным камер Quest в начале 2025 года