Налаштування OpenXR
OpenXR має власний набір параметрів, які застосовуються під час запуску OpenXR. Хоча розширення OpenXR, реалізовані через плагіни Godot, можуть додавати додаткові параметри, ми обговоримо тут лише налаштування в ядрі Godot.
General settings
Увімкнено
Це налаштування вмикає модуль OpenXR під час запуску Godot. Це потрібно, якщо використовується серверна частина Vulkan. Для інших серверних програм ви можете будь-коли ввімкнути OpenXR, викликавши ініціалізацію на OpenXRInterface.
Це також потрібно ввімкнути, щоб отримати доступ до редактора карти дій.
Ви можете використати перемикач командного рядка --xr-mode on, щоб примусово ввімкнути це.
Карта дій за замовчуванням
Це вказує шлях до файлу карти дій, який OpenXR завантажуватиме та передаватиме до XR Runtime.
Форм-фактор
Це визначає, чи призначена ваша гра для:
«На голові» пристрої, такі як Meta Quest, Valve Index або Magic Leap,
кишеньковіпристрої, такі як телефони.
Якщо пристрій, на якому ви запускаєте гру, не відповідає вибраним тут, OpenXR не вдасться ініціалізувати.
Переглянути конфігурацію
Це визначає конфігурацію перегляду, для якої розроблено вашу гру:
Mono, ваша гра забезпечує виведення одного зображення. наприклад AR на основі телефону;Стерео, ваша гра забезпечує вихід стереозображення. наприклад наголовні пристрої.
Якщо пристрій, на якому ви запускаєте гру, не відповідає вибраним тут, OpenXR не вдасться ініціалізувати.
Примітка
OpenXR має додаткові конфігурації перегляду для дуже специфічних пристроїв, які Godot ще не підтримує. Наприклад, гарнітури Varjo мають конфігурацію квадроперегляду, яка виводить два набори стереозображень. Вони можуть бути підтримані найближчим часом.
Довідковий простір
У XR усі елементи, як-от голова та руки гравця, відстежуються в обсязі відстеження. В основі цього обсягу відстеження знаходиться наша початкова точка, яка відображає наш віртуальний простір у реальний простір. Однак існують різні сценарії, які розміщують цю точку в різних місцях, залежно від використовуваної системи XR. У OpenXR ці сценарії чітко визначені та вибрані шляхом встановлення еталонного простору.
Місцевий
Локальний довідковий простір за замовчуванням розміщує нашу початкову точку в голові гравця. Деякі середовища виконання XR робитимуть це кожного разу, коли починається ваша гра, інші змусять позицію зберігатися протягом сеансів.
Однак цей довідковий простір не заважає користувачеві піти, тому вам потрібно буде виявити, чи робить це користувач, якщо ви хочете завадити користувачеві залишити транспортний засіб, яким він керує, що потенційно може порушити гру.
Цей довідковий простір є найкращим варіантом для таких ігор, як авіасимулятори або симулятори перегонів, де ми хочемо розмістити вузол XROrigin3D там, де має бути голова гравця.
Коли користувач вмикає на своїй гарнітурі параметр повторного центру, метод якого відрізняється для кожного середовища виконання XR, середовище виконання XR перемістить XRCamera3D до вузла XROrigin3D. OpenXRInterface також видаватиме сигнал pose_recentered, щоб ваша гра могла реагувати відповідно.
Примітка
Будь-які інші гусеничні елементи XR, такі як контролери або анкери, також будуть відповідним чином налаштовані.
Попередження
Ви не повинні викликати center_on_hmd під час використання цього довідкового простору.
етап
Еталонний простір сцени є нашим стандартним еталонним простором і розміщує точку початку в центрі нашого ігрового простору. Для середовищ виконання XR, які дозволяють накреслити межу опікуна, це розташування та його орієнтацію часто встановлює користувач. Інші середовища виконання XR можуть прийняти рішення про розміщення цієї точки іншими засобами. Однак це нерухома точка в реальному світі.
Цей еталонний простір є найкращим варіантом для ігор масштабу кімнати, де користувач повинен ходити по більшому простору, або для ігор, де потрібно перемикатися між режимами гри. Дивіться Room Scale для отримання додаткової інформації.
Коли користувач вмикає опцію Recenter на своїй гарнітурі, метод якої відрізняється для кожного середовища виконання XR, середовище виконання XR не змінюватиме вихідну точку. OpenXRInterface видасть сигнал pose_recentered, і від гри залежить належна реакція. Якщо цього не зробити, ваша гра не буде прийнята в різних магазинах.
У Godot ви можете зробити це, викликавши функцію center_on_hmd на XRServer:
Calling
XRServer.center_on_hmd(XRServer.RESET_BUT_KEEP_TILT, false)will move the XRCamera3D node to the XROrigin3D node similar to theLocalreference space.Виклик
XRServer.center_on_hmd(XRServer.RESET_BUT_KEEP_TILT, true)перемістить вузол XRCamera3D над вузлом XROrigin3D, зберігаючи висоту гравця, подібно до `` Референтний простір локального поверху.
Примітка
Будь-які інші гусеничні елементи XR, такі як контролери або анкери, також будуть відповідним чином налаштовані.
Місцевий поверх
Локальний опорний простір підлоги подібний до локального опорного простору, оскільки він розташовує початкову точку, де знаходиться гравець. Однак у цьому режимі висота гравця зберігається. Так само, як і з локальним довідковим простором, деякі середовища виконання XR зберігатимуть це розташування протягом сеансів.
Таким чином, немає гарантії, що гравець буде стояти на початковій точці, єдина гарантія полягає в тому, що він стояв там, коли користувач востаннє повторно центрував. Таким чином, гравець також може вільно піти.
Цей еталонний простір є найкращим варіантом для ігор, де користувач повинен стояти в тому самому місці, або для ігор типу AR, де елементи інтерфейсу користувача прив’язані до початкового вузла та швидко розміщуються в місці розташування гравця на останньому центрі.
Коли користувач активує опцію повторного центру на своїй гарнітурі, метод якої відрізняється для середовища виконання XR, середовище виконання XR перемістить XRCamera3D над вузлом XROrigin3D, але збереже зріст гравця. OpenXRInterface також видаватиме сигнал pose_recentered, щоб ваша гра могла реагувати відповідно.
Попередження
Будьте обережні, використовуючи цей режим у поєднанні з віртуальним рухом гравця. Повторне центрування користувача в цьому сценарії може бути непередбачуваним, якщо не протидіяти переміщенню під час обробки сигналу повторного центрування. Це навіть може призвести до порушення гри, оскільки ефектом у цьому сценарії буде телепортація гравця в будь-яке абстрактне місце, де було розміщено початкову точку під час віртуального руху, включаючи можливість телепортації гравців у місця, які повинні бути заборонені. У цьому сценарії краще використовувати режим Stage і обмежити скидання до орієнтації лише тоді, коли отримано сигнал pose_recentered.
Примітка
Будь-які інші гусеничні елементи XR, такі як контролери або анкери, також будуть відповідним чином налаштовані.
Попередження
Ви не повинні викликати center_on_hmd під час використання цього довідкового простору.
Режим змішування середовища
Режим змішування середовища визначає, як наш відтворений результат змішується з «реальним світом», якщо це підтримується гарнітурою.
Непрозорийозначає, що наш вихід закриває реальний світ, ми перебуваємо в режимі VR.Additiveозначає, що наш результат додається до реального світу, це режим AR, де оптика не дозволяє нам повністю затемнювати реальний світ (наприклад, Hololens),Альфаозначає, що наш вихід змішується з реальним світом за допомогою альфа-виводу (вікно перегляду має мати прозорий фон). Це режим AR, де оптика може повністю закривати реальний світ (Magic Leap, усі прохідні пристрої тощо) .).
Якщо вибрано режим, який не підтримується гарнітурою, буде вибрано перший доступний режим.
Примітка
Деякі пристрої OpenXR мають окремі системи для ввімкнення/вимкнення проходу. Починаючи з Godot 4.3 і далі, вибір режиму альфа-змішування також виконуватиме ці додаткові дії. Для цього потрібно встановити найновіший плагін постачальника.
Рівень фовеації
Встановлює рівень фовеації, який використовується під час візуалізації, якщо ця функція підтримується апаратним забезпеченням, що використовується. Foveation — це техніка, при якій чим далі від центру вікна перегляду ми відтворюємо вміст, тим нижча роздільна здатність відтворюється. Більшість середовищ виконання XR підтримують лише фіксовану фовеацію, але деякі враховують відстеження очей і використовують для цього ефекту фокусну точку.
Що вищий рівень, то кращий приріст продуктивності, але також більше погіршується якість периферійного зору користувачів.
Примітка
Лише сумісний рендерер, для Mobile і Forward+ рендерера встановіть для властивості vrs_mode Viewport значення VRS_XR.
Попередження
Ця функція вимкнена, якщо використовуються пост-ефекти, такі як світіння, цвітіння або DOF.
Фовеація динамічна
Якщо ввімкнено, рівень фовеації регулюватиметься автоматично залежно від поточного навантаження графічного процесора. Він буде регулюватися між низьким і вибраним рівнем фовеації в попередньому налаштуванні. Тому найкраще поєднати це налаштування з високим рівнем фовеації.
Примітка
Тільки сумісний рендерер
Надіслати буфер глибини
Якщо ввімкнено, буфер глибини, що надається OpenXR, використовуватиметься під час відтворення, яке надсилається разом із відтвореним зображенням. Середовище виконання XR може використовувати це для покращеного повторного проектування.
Примітка
Увімкнення цієї функції вимкне підтримку трафаретів під час візуалізації. Не багато середовищ виконання XR використовують це, радимо залишити це налаштування вимкнутим, якщо це не дає помітних переваг для вашого випадку використання.
Сповіщення про запуск
Якщо ввімкнено, це призведе до повідомлення про сповіщення, наданого користувачеві, якщо OpenXR не запускається. Ми не завжди отримуємо відгук від системи XR щодо того, чому не вдається запустити. Якщо ми це робимо, ми реєструємо це на консолі. Поширені причини невдач:
На головній системі не встановлено середовище виконання OpenXR.
Середа виконання Microsoft WMR OpenXR наразі активна, вона підтримує лише DirectX і не працюватиме, якщо використовується OpenGL або Vulkan.
SteamVR використовується, але гарнітура не підключена/увімкнена.
Вимкніть це, якщо ви підтримуєте резервний режим у своїй грі, щоб у неї можна було грати в режимі настільного комп’ютера, коли гарнітура VR не під’єднана, або якщо ви самостійно справляєтеся з проблемою, перевіряючи OpenXRInterface.is_initialized().
Розширення
This subsection allows you to enable to various optional OpenXR extensions. Keep in mind that the extensions will only work if the OpenXR runtime (SteamVR, Oculus, etc) the project is ran with supports them.
Debug Utils
Enabling this will log debug messages from the XR runtime.
Debug Message Types
This allows you to choose which debug messages are logged.
Відстеження рук
Це вмикає розширення відстеження рук, якщо воно підтримується використовуваним пристроєм. Це ввімкнено за замовчуванням через старі причини. Розширення відстеження руки надає доступ до даних, які дозволяють візуалізувати руки користувача з правильним положенням пальців. Залежно від можливостей платформи дані відстеження рук можуть бути отримані з вхідних даних контролера, отримані з даних рукавичок, оптичних датчиків відстеження рук або будь-якого іншого відповідного джерела.
Якщо ваша гра підтримує лише контролери, це слід вимкнути.
Перегляньте розділ про hand tracking для отримання додаткової інформації.
Hand Tracking Unobstructed Data Source
Enabling this means hand tracking may use the exact position of fingers, usually what a headset camera sees.
Hand Tracking Controller Data Source
Enabling this means hand tracking may use the controller itself, and infer where fingers are based on controller input or sensors on the controller.
Hand Interaction Profile
Enabling this extension allows the use of two new hand tracking poses. Pinch pose which is the location between the thumb and index finger pointing forward, and poke pose which is at the tip of the index finger.
This also allows 3 more gesture based inputs. Pinch, when the user pinches their thumb and index finger together. Aim activation, when the index finger is fully extended. And Grasps, when the user makes a fist.
When a hand interaction profile and controller interaction profile are supplied, the runtime will switch between profiles depending on if optical tracking is used or if the user is holding a controller.
If only a hand interaction profile is supplied any runtime should use hand interaction even if a controller is being held.
Взаємодія погляду очей
Це дозволяє розширити взаємодію погляду очей, якщо це підтримується використовуваним пристроєм. Якщо ввімкнено, ми отримуватимемо зворотний зв’язок від відстеження очей через позу, розташовану між очима користувача, орієнтованими в напрямку, куди користувач дивиться. Це буде єдина орієнтація.
Щоб скористатися цією функціональністю, вам потрібно відредагувати свою карту дій і додати нову дію пози, скажімо eye_pose. Тепер додайте новий профіль взаємодії для взаємодії погляду очей і зіставте eye_pose:
Не забудьте зберегти!
Далі додайте новий вузол XRController3D до свого початкового вузла та встановіть для його властивості tracker значення /user/eyes_ext, а для властивості pose значення eye_pose.
Тепер ви можете додавати речі до цього вузла контролера, наприклад raycast, і контролювати речі очима.
Модифікатори прив'язки
These control whether or not binding modifiers can be used. Binding modifiers are used to apply thresholds or offset values.
Analog Threshold
Allow analog threshold binding modifiers.
Dpad Binding
Allow D-pad binding modifiers.