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 |
|
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.
Переліки
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 🔗
Увімкнути динамічне налаштування фовеації. Інтерфейс має бути ініціалізований, перш ніж це стане доступним. Якщо ввімкнено, фовеація автоматично налаштовуватиметься між низьким рівнем та foveation_level.
Примітка: Працює лише на рендерері сумісності.
Встановіть рівень фовеації від 0 (вимкнено) до 3 (високий). Інтерфейс має бути ініціалізований, перш ніж це стане доступним.
Примітка: Працює лише на рендерері сумісності.
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. Після того, як інтерфейс був ініціалізований.
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, якщо підтримується розширення foveation OpenXR, інтерфейс має бути ініціалізований, перш ніж це поверне дійсне значення.
Примітка: Ця функція доступна лише на рендерері сумісності та наразі доступна лише на деяких автономних гарнітурах. Для Vulkan встановіть Viewport.vrs_mode на VRS_XR на робочому столі.
bool is_hand_interaction_supported() const 🔗
Повернення true, якщо Профіль ручної взаємодії OpenXR підтримується і ввімкнено.
Примітка: Це тільки повертає дійсне значення після OpenXR.
bool is_hand_tracking_supported() 🔗
Повернення true, якщо OpenXR підтримується і ввімкнено.
Примітка: Це тільки повертає дійсне значення після OpenXR.
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.