Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
OpenXRInterface
Успадковує: XRInterface < RefCounted < Object
Інтерфейс OpenXR.
Опис
Інтерфейс OpenXR дозволяє Godot взаємодіяти з OpenXR runtimes і зробити його можливим для створення XR досвіду і ігор.
У зв'язку з потребами OpenXR цей інтерфейс працює трохи відрізняється від інших плагінів на основі інтерфейсів XR. Він повинен бути ініціалізований, коли починається Godot. Вам потрібно включити OpenXR, налаштування для цього можна знайти в налаштуваннях вашого проекту ігор під головуванням XR. Для того, щоб Богот знав, що результат рендерингу повинен бути вихідним до гарнітури.
Посібники
Властивості
|
||
|
||
|
||
|
||
|
||
|
||
|
Методи
get_action_sets() const |
|
get_hand_joint_angular_velocity(hand: Hand, joint: HandJoints) const |
|
BitField[HandJointFlags] |
get_hand_joint_flags(hand: Hand, joint: HandJoints) const |
get_hand_joint_linear_velocity(hand: Hand, joint: HandJoints) const |
|
get_hand_joint_position(hand: Hand, joint: HandJoints) const |
|
get_hand_joint_radius(hand: Hand, joint: HandJoints) const |
|
get_hand_joint_rotation(hand: Hand, joint: HandJoints) const |
|
get_hand_tracking_source(hand: Hand) const |
|
get_motion_range(hand: Hand) const |
|
is_action_set_active(name: String) const |
|
is_foveation_supported() const |
|
is_hand_interaction_supported() const |
|
is_user_presence_supported() const |
|
is_user_present() const |
|
void |
set_action_set_active(name: String, active: bool) |
void |
set_cpu_level(level: PerfSettingsLevel) |
void |
set_gpu_level(level: PerfSettingsLevel) |
void |
set_motion_range(hand: Hand, motion_range: HandMotionRange) |
Сигнали
cpu_level_changed(sub_domain: int, from_level: int, to_level: int) 🔗
Повідомляє пристрій про зміну рівня продуктивності процесора у вказаному піддомені.
gpu_level_changed(sub_domain: int, from_level: int, to_level: int) 🔗
Повідомляє пристрій про зміну рівня продуктивності графічного процесора у вказаному піддомені.
instance_exiting() 🔗
У нашому екземплярі OpenXR є вихід.
pose_recentered() 🔗
Повідомляємо, що користувач чергав недавець позиції гравця.
refresh_rate_changed(refresh_rate: float) 🔗
Змінюється швидкість оновлення HMD.
Примітка: Тільки емітовані, якщо XR runtime підтримує розширення швидкості оновлення.
session_begun() 🔗
Починалася наша сесія OpenXR.
session_focussed() 🔗
Повідомляє, що наш сеанс OpenXR тепер у фокусі, наприклад, вихід надсилається на HMD, і ми отримуємо вхід XR.
session_loss_pending() 🔗
У процесі втрати втраченої роботи ми використовуємо OpenXR.
session_stopping() 🔗
Ми працюємо з OpenXR.
session_synchronized() 🔗
Повідомляє, що наш сеанс OpenXR синхронізовано.
session_visible() 🔗
Повідомляє, що наш сеанс OpenXR тепер видимий, наприклад, вихідні дані надсилаються на HMD, але ми не отримуємо вхідних даних XR.
user_presence_changed(is_user_present: bool) 🔗
Сигнал, що генерується при зміні стану присутності користувача.
Примітка: Цей сигнал не генерується під час запуску та завершення роботи програми. Розробникам слід виходити з того, що стан присутності користувача встановлюється під час запуску та втрачається під час завершення роботи програми.
Переліки
enum SessionState: 🔗
SessionState SESSION_STATE_UNKNOWN = 0
Стан сеансу невідомий, ми ще не пробували налаштувати OpenXR.
SessionState SESSION_STATE_IDLE = 1
Початковий стан після створення сеансу OpenXR або після його знищення.
SessionState SESSION_STATE_READY = 2
OpenXR готовий розпочати наш сеанс. При переході в цей стан видається сигнал session_begun.
SessionState SESSION_STATE_SYNCHRONIZED = 3
Програма синхронізувала свій цикл кадрів із середовищем виконання, але ми нічого не рендеримо. При переході в цей стан генерується сигнал session_synchronized.
SessionState SESSION_STATE_VISIBLE = 4
Програма синхронізувала свій цикл кадрів із середовищем виконання, і ми відтворюємо вивід для користувача, проте не отримуємо жодних вхідних даних від користувача. session_visible випромінюється, коли ми переходимо в цей стан.
Примітка: Це поточний стан безпосередньо перед тим, як ми отримуємо стан фокусування, щоразу, коли користувач відкриває системне меню, перемикається в іншу програму або знімає гарнітуру.
SessionState SESSION_STATE_FOCUSED = 5
Програма синхронізувала свій цикл кадрів із середовищем виконання, ми виводимо вивід користувачеві та отримуємо вхідний сигнал XR. session_focused випромінюється, коли ми переходимо в цей стан.
Примітка: Це стан, у якому буде OpenXR, коли користувач зможе повноцінно взаємодіяти з вашою грою.
SessionState SESSION_STATE_STOPPING = 6
Наш сеанс зупиняється. Коли ми переходимо в цей стан, видається сигнал session_stopping.
SessionState SESSION_STATE_LOSS_PENDING = 7
Сеанс ось-ось буде втрачено. При переході в цей стан видається сигнал session_loss_pending.
SessionState SESSION_STATE_EXITING = 8
Екземпляр OpenXR ось-ось буде знищено, і ми виходимо з програми. При переході в цей стан випромінюється сигнал instance_exiting.
enum Hand: 🔗
Hand HAND_LEFT = 0
Ліва рука.
Hand HAND_RIGHT = 1
Праворуч.
Hand HAND_MAX = 2
Максимальне значення для ручної роботи.
enum HandMotionRange: 🔗
HandMotionRange HAND_MOTION_RANGE_UNOBSTRUCTED = 0
Повна ручна дальність, якщо користувач закриває руки, ми робимо повноцінну кулак.
HandMotionRange HAND_MOTION_RANGE_CONFORM_TO_CONTROLLER = 1
Конформувати контролера, якщо користувач закриває руки, відстежені дані відповідають формі контролера.
HandMotionRange HAND_MOTION_RANGE_MAX = 2
Максимальне значення для об’єму руху.
enum HandTrackedSource: 🔗
HandTrackedSource HAND_TRACKED_SOURCE_UNKNOWN = 0
Джерело даних відстеження рук невідомо (подовження, ймовірно, не підтримується).
HandTrackedSource HAND_TRACKED_SOURCE_UNOBSTRUCTED = 1
Джерело відстеження ручних відправлень необґрунтовано, це означає, що використовується точний метод відстеження рук, наприклад, оптичне відстеження ручних даних, рукавичок даних тощо.
HandTrackedSource HAND_TRACKED_SOURCE_CONTROLLER = 2
Джерело ручного відстеження є контролером, кістковими позиціями, що посилаються з вхідних контролерів.
HandTrackedSource HAND_TRACKED_SOURCE_MAX = 3
Представляє розмір переліку HandTrackedSource.
enum HandJoints: 🔗
HandJoints HAND_JOINT_PALM = 0
Пальмовий суглоб.
HandJoints HAND_JOINT_WRIST = 1
Вристий суглоб.
HandJoints HAND_JOINT_THUMB_METACARPAL = 2
Тумба метакарпатичний суглоб.
HandJoints HAND_JOINT_THUMB_PROXIMAL = 3
Тонкий проксимальний суглоб.
HandJoints HAND_JOINT_THUMB_DISTAL = 4
Тонкий дистальний суглоб.
HandJoints HAND_JOINT_THUMB_TIP = 5
Наконечник натяжний суглоб.
HandJoints HAND_JOINT_INDEX_METACARPAL = 6
Індекс пальцевий метакарпатичний суглоб.
HandJoints HAND_JOINT_INDEX_PROXIMAL = 7
Індекс пальця фаланкс проксимальний суглоб.
HandJoints HAND_JOINT_INDEX_INTERMEDIATE = 8
Індекс пальця фаланкс проміжний суглоб.
HandJoints HAND_JOINT_INDEX_DISTAL = 9
Індекс палець фаланкс дистальний суглоб.
HandJoints HAND_JOINT_INDEX_TIP = 10
Індекс кінчика пальця суглоба.
HandJoints HAND_JOINT_MIDDLE_METACARPAL = 11
Середній палець метакарпатичний суглоб.
HandJoints HAND_JOINT_MIDDLE_PROXIMAL = 12
Середній палець фаланкс проксимальний суглоб.
HandJoints HAND_JOINT_MIDDLE_INTERMEDIATE = 13
Середній палець фаланкс проміжний суглоб.
HandJoints HAND_JOINT_MIDDLE_DISTAL = 14
Середній палець фаланкс дистальний суглоб.
HandJoints HAND_JOINT_MIDDLE_TIP = 15
Середній кінчик пальця суглоб.
HandJoints HAND_JOINT_RING_METACARPAL = 16
Кільце пальця метакарпального суглоба.
HandJoints HAND_JOINT_RING_PROXIMAL = 17
Кільце палець фаланкс проксимальний суглоб.
HandJoints HAND_JOINT_RING_INTERMEDIATE = 18
Кільце палець фаланкс проміжний суглоб.
HandJoints HAND_JOINT_RING_DISTAL = 19
Кільце палець фаланкс дистальний суглоб.
HandJoints HAND_JOINT_RING_TIP = 20
Кільце кінчика пальця суглоба.
HandJoints HAND_JOINT_LITTLE_METACARPAL = 21
Рожевий пальчик метакарпатичний суглоб.
HandJoints HAND_JOINT_LITTLE_PROXIMAL = 22
Рожевий палець фаланкс проксимальний суглоб.
HandJoints HAND_JOINT_LITTLE_INTERMEDIATE = 23
Рожевий палець фаланкс проміжний суглоб.
HandJoints HAND_JOINT_LITTLE_DISTAL = 24
Рожевий палець фаланкс дистальний суглоб.
HandJoints HAND_JOINT_LITTLE_TIP = 25
Рожевий кінчик пальця суглоб.
HandJoints HAND_JOINT_MAX = 26
Представляє розмір переліку HandJoints.
enum PerfSettingsLevel: 🔗
PerfSettingsLevel PERF_SETTINGS_LEVEL_POWER_SAVINGS = 0
Програма перейшла в режим не-XR (екран, заблокований з фокусом на голові / статичний екран), під час якого пріоритет має надаватися економії енергії.
PerfSettingsLevel PERF_SETTINGS_LEVEL_SUSTAINED_LOW = 1
Додаток увійшов у розділ низької та стабільної складності, під час якого зниження потужності важливіше, ніж випадкові затримки кадрів рендерингу.
PerfSettingsLevel PERF_SETTINGS_LEVEL_SUSTAINED_HIGH = 2
Програма перейшла в розділ високої або динамічної складності, під час якого середовище виконання XR прагне забезпечити послідовне композиційне зображення XR та рендеринг кадрів у межах термічно стійкого діапазону.
PerfSettingsLevel PERF_SETTINGS_LEVEL_BOOST = 3
Застосунок увійшов у розділ з дуже високою складністю, під час якого XR Runtime може вийти за межі термічно стійкого діапазону.
enum PerfSettingsSubDomain: 🔗
PerfSettingsSubDomain PERF_SETTINGS_SUB_DOMAIN_COMPOSITING = 0
Продуктивність композитингу під час виконання досягла нового рівня.
PerfSettingsSubDomain PERF_SETTINGS_SUB_DOMAIN_RENDERING = 1
Продуктивність рендерингу застосунків досягла нового рівня.
PerfSettingsSubDomain PERF_SETTINGS_SUB_DOMAIN_THERMAL = 2
Температура пристрою досягла нового рівня.
enum PerfSettingsNotificationLevel: 🔗
PerfSettingsNotificationLevel PERF_SETTINGS_NOTIF_LEVEL_NORMAL = 0
Піддомен досяг рівня, де жодних подальших дій, окрім тих, що застосовуються наразі, не потрібно.
PerfSettingsNotificationLevel PERF_SETTINGS_NOTIF_LEVEL_WARNING = 1
Піддомен досяг рівня раннього попередження, коли програма повинна розпочати проактивні дії щодо пом'якшення наслідків.
PerfSettingsNotificationLevel PERF_SETTINGS_NOTIF_LEVEL_IMPAIRED = 2
Піддомен досяг критичного рівня, де застосунок має розпочати радикальні заходи щодо пом'якшення наслідків.
flags HandJointFlags: 🔗
HandJointFlags HAND_JOINT_NONE = 0
Немає прапорів встановлюються.
HandJointFlags HAND_JOINT_ORIENTATION_VALID = 1
Якщо встановити, дані орієнтації діють, інакше дані орієнтації ненадійні і не повинні використовуватися.
HandJointFlags HAND_JOINT_ORIENTATION_TRACKED = 2
Якщо встановити, дані орієнтації надходять з даних відстеження, інакше дані орієнтації містять дані про прогнозування.
HandJointFlags HAND_JOINT_POSITION_VALID = 4
Якщо встановити, дані позиціонування дійсні, інакше дані позиціонування ненадійні і не повинні використовуватися.
HandJointFlags HAND_JOINT_POSITION_TRACKED = 8
Якщо встановлено, що дані позиціонування надходять з даних відстеження, в іншому випадку, дані позиціонування містить дані, що свідчать.
HandJointFlags HAND_JOINT_LINEAR_VELOCITY_VALID = 16
Якщо встановити, наші лінійні дані швидкості діють, інакше лінійні дані швидкості ненадійні і не повинні використовуватися.
HandJointFlags HAND_JOINT_ANGULAR_VELOCITY_VALID = 32
Якщо встановити, наші дані кутової швидкості діють, інакше, дані кутової швидкості ненадійні і не повинні використовуватися.
Описи властивостей
float display_refresh_rate = 0.0 🔗
Відобразити частоту оновлення для поточного HMD. Тільки функціональна, якщо ця функція підтримується за допомогою OpenXR і після того, як інтерфейс був ініціалізований.
bool foveation_dynamic = false 🔗
Якщо true, увімкнути динамічне регулювання фовеації. Перед тим, як скористатися цією функцією, необхідно ініціалізувати інтерфейс. Якщо функція увімкнена, фовеація автоматично регулюватиметься в діапазоні від мінімального рівня до foveation_level.
Рівень фовеації: від 0 (вимкнено) до 3 (високий). Щоб отримати доступ до цього параметра, спочатку потрібно ініціалізувати інтерфейс.
bool foveation_with_subsampled_images = false 🔗
Якщо true, увімкне зображення з пониженою роздільною здатністю та фовеацією, що може забезпечити підвищення продуктивності в Vulkan.
float render_target_size_multiplier = 1.0 🔗
Множник розміру рендеру для поточного HMD. Необхідно встановити перед ініціалізацією інтерфейсу.
Мінімальний радіус навколо вогнища, де повна якість гарантована, якщо VRS використовується як відсоток розміру екрану.
Примітка: Мобільні та переадресні + рендерери тільки. Потрібні Viewport.vrs_mode бути встановленими на Viewport. VRS_XR.
Потужність використовується для розрахунку карти щільності VRS. Чим більше це значення, тим більш помітні VRS. Це покращує продуктивність за вартістю якості.
Примітка: Мобільні та переадресні + рендерери тільки. Потрібні Viewport.vrs_mode бути встановленими на Viewport. VRS_XR.
Описи методів
Array get_action_sets() const 🔗
Повертає список наборів дій, зареєстрованих Godot (завантажено з карти дій на runtime).
Array get_available_display_refresh_rates() const 🔗
Повертає список частот оновлення дисплея, що підтримуються поточним HMD. Повертається лише за умови, що ця функція підтримується середовищем виконання OpenXR та після ініціалізації інтерфейсу.
Vector3 get_hand_joint_angular_velocity(hand: Hand, joint: HandJoints) const 🔗
Застаріло: Use XRHandTracker.get_hand_joint_angular_velocity() obtained from XRServer.get_tracker() instead.
Якщо ввімкнено, повертає кутову швидкість суглоба (Joint) руки (hand) як передбачено OpenXR. XROrigin3D!
BitField[HandJointFlags] get_hand_joint_flags(hand: Hand, joint: HandJoints) const 🔗
Застаріло: Use XRHandTracker.get_hand_joint_flags() obtained from XRServer.get_tracker() instead.
Якщо увімкнено відстеження, повертає прапори, які повідомляють нам про дійсність даних відстеження.
Vector3 get_hand_joint_linear_velocity(hand: Hand, joint: HandJoints) const 🔗
Застаріло: Use XRHandTracker.get_hand_joint_linear_velocity() obtained from XRServer.get_tracker() instead.
Якщо ввімкнено, повертає лінійну швидкість суглоба (Joint) руки (hand) як передбачено OpenXR. Це відносно XROrigin3D без застосування світового масштабу!
Vector3 get_hand_joint_position(hand: Hand, joint: HandJoints) const 🔗
Застаріло: Use XRHandTracker.get_hand_joint_transform() obtained from XRServer.get_tracker() instead.
Якщо ввімкнено, повертає позицію суглоба (Joint) руки (hand) як передбачено OpenXR. Це відносно XROrigin3D без застосування світового масштабу!
float get_hand_joint_radius(hand: Hand, joint: HandJoints) const 🔗
Застаріло: Use XRHandTracker.get_hand_joint_radius() obtained from XRServer.get_tracker() instead.
Якщо ввімкнено ручне відстеження, повертає радіус суглоба (Joint) руки (hand) як передбачено OpenXR. Це без використання світового масштабу!
Quaternion get_hand_joint_rotation(hand: Hand, joint: HandJoints) const 🔗
Застаріло: Use XRHandTracker.get_hand_joint_transform() obtained from XRServer.get_tracker() instead.
Якщо ввімкнено ручний відстеження, повертає обертання суглоба (Joint) руки (hand) як передбачено OpenXR.
HandTrackedSource get_hand_tracking_source(hand: Hand) const 🔗
Застаріло: Use XRHandTracker.hand_tracking_source obtained from XRServer.get_tracker() instead.
Якщо підтримується вікно відстеження вручну, отримує джерело даних відстеження рук для hand.
HandMotionRange get_motion_range(hand: Hand) const 🔗
Якщо підтриманий ручний відстеження і діапазон руху, отримує в даний час налаштований діапазон руху для hand.
SessionState get_session_state() 🔗
Повертає поточний стан нашого сеансу OpenXR.
bool is_action_set_active(name: String) const 🔗
Повертає true, якщо надана дія встановлена активна.
bool is_eye_gaze_interaction_supported() 🔗
Повертаємо можливості розширення взаємодії очей.
Примітка: Це тільки повертає дійсне значення після OpenXR.
bool is_foveation_supported() const 🔗
Повертає true, якщо підтримується розширення фовеації OpenXR. Інтерфейс має бути ініціалізований, перш ніж це поверне коректне значення.
Примітка: Під час використання драйвера рендерингу Vulkan, Viewport.vrs_mode має бути встановлено на Viewport.VRS_XR для підтримки фовеації.
bool is_hand_interaction_supported() const 🔗
Повернення true, якщо Профіль ручної взаємодії OpenXR підтримується і ввімкнено.
Примітка: Це тільки повертає дійсне значення після OpenXR.
bool is_hand_tracking_supported() 🔗
Повернення true, якщо OpenXR підтримується і ввімкнено.
Примітка: Це тільки повертає дійсне значення після OpenXR.
bool is_user_presence_supported() const 🔗
Повертає true, якщо розширення OpenXR для визначення присутності користувача підтримується та увімкнено.
Примітка: Ця функція повертає дійсне значення лише після ініціалізації OpenXR.
bool is_user_present() const 🔗
Повертає true, якщо система виявила присутність користувача в XR-досвіді.
void set_action_set_active(name: String, active: bool) 🔗
Налаштовує задану дію, як активний або неактивний.
void set_cpu_level(level: PerfSettingsLevel) 🔗
Встановлює рівень продуктивності процесора пристрою OpenXR.
void set_gpu_level(level: PerfSettingsLevel) 🔗
Встановлює рівень продуктивності графічного процесора пристрою OpenXR.
void set_motion_range(hand: Hand, motion_range: HandMotionRange) 🔗
Якщо підтримується ручний відстеження, налаштовує в даний момент налаштований діапазон руху hand до mode_range.