OpenXRInterface

Успадковує: XRInterface < RefCounted < Object

Інтерфейс OpenXR.

Опис

Інтерфейс OpenXR дозволяє Godot взаємодіяти з OpenXR runtimes і зробити його можливим для створення XR досвіду і ігор.

У зв'язку з потребами OpenXR цей інтерфейс працює трохи відрізняється від інших плагінів на основі інтерфейсів XR. Він повинен бути ініціалізований, коли починається Godot. Вам потрібно включити OpenXR, налаштування для цього можна знайти в налаштуваннях вашого проекту ігор під головуванням XR. Для того, щоб Богот знав, що результат рендерингу повинен бути вихідним до гарнітури.

Посібники

Властивості

float

display_refresh_rate

0.0

bool

foveation_dynamic

false

int

foveation_level

0

float

render_target_size_multiplier

1.0

float

vrs_min_radius

20.0

float

vrs_strength

1.0

Методи

Array

get_action_sets() const

Array

get_available_display_refresh_rates() const

Vector3

get_hand_joint_angular_velocity(hand: Hand, joint: HandJoints) const

BitField[HandJointFlags]

get_hand_joint_flags(hand: Hand, joint: HandJoints) const

Vector3

get_hand_joint_linear_velocity(hand: Hand, joint: HandJoints) const

Vector3

get_hand_joint_position(hand: Hand, joint: HandJoints) const

float

get_hand_joint_radius(hand: Hand, joint: HandJoints) const

Quaternion

get_hand_joint_rotation(hand: Hand, joint: HandJoints) const

HandTrackedSource

get_hand_tracking_source(hand: Hand) const

HandMotionRange

get_motion_range(hand: Hand) const

SessionState

get_session_state()

bool

is_action_set_active(name: String) const

bool

is_eye_gaze_interaction_supported()

bool

is_foveation_supported() const

bool

is_hand_interaction_supported() const

bool

is_hand_tracking_supported()

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 🔗

  • void set_display_refresh_rate(value: float)

  • float get_display_refresh_rate()

Відобразити частоту оновлення для поточного HMD. Тільки функціональна, якщо ця функція підтримується за допомогою OpenXR і після того, як інтерфейс був ініціалізований.


bool foveation_dynamic = false 🔗

  • void set_foveation_dynamic(value: bool)

  • bool get_foveation_dynamic()

Увімкнути динамічне налаштування фовеації. Інтерфейс має бути ініціалізований, перш ніж це стане доступним. Якщо ввімкнено, фовеація автоматично налаштовуватиметься між низьким рівнем та foveation_level.

Примітка: Працює лише на рендерері сумісності.


int foveation_level = 0 🔗

  • void set_foveation_level(value: int)

  • int get_foveation_level()

Встановіть рівень фовеації від 0 (вимкнено) до 3 (високий). Інтерфейс має бути ініціалізований, перш ніж це стане доступним.

Примітка: Працює лише на рендерері сумісності.


float render_target_size_multiplier = 1.0 🔗

  • void set_render_target_size_multiplier(value: float)

  • float get_render_target_size_multiplier()

Множник розміру рендеру для поточного HMD. Необхідно встановити перед ініціалізацією інтерфейсу.


float vrs_min_radius = 20.0 🔗

  • void set_vrs_min_radius(value: float)

  • float get_vrs_min_radius()

Мінімальний радіус навколо вогнища, де повна якість гарантована, якщо VRS використовується як відсоток розміру екрану.

Примітка: Мобільні та переадресні + рендерери тільки. Потрібні Viewport.vrs_mode бути встановленими на Viewport. VRS_XR.


float vrs_strength = 1.0 🔗

  • void set_vrs_strength(value: float)

  • float get_vrs_strength()

Потужність використовується для розрахунку карти щільності 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.