OpenXRInterface
Наследует: XRInterface < RefCounted < Object
Интерфейс OpenXR.
Описание
Интерфейс OpenXR позволяет Godot взаимодействовать со средами выполнения OpenXR и создавать игры и приложения XR.
Из-за потребностей OpenXR этот интерфейс работает немного иначе, чем другие XR-интерфейсы на основе плагинов. Его необходимо инициализировать при запуске Godot. Вам необходимо включить OpenXR, настройки для этого можно найти в настройках вашего игрового проекта под заголовком XR. Вам необходимо отметить область просмотра для использования с XR, чтобы Godot знал, какой результат рендеринга следует выводить на гарнитуру.
Обучающие материалы
Свойства
|
||
|
||
|
||
|
||
|
||
|
Методы
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) 🔗
Информирует об изменении уровня производительности CPU устройства в указанном поддомене (subdomain).
gpu_level_changed(sub_domain: int, from_level: int, to_level: int) 🔗
Информирует об изменении уровня производительности графического процессора устройства в указанном поддомене (subdomain).
instance_exiting() 🔗
Сообщает, что наш экземпляр OpenXR завершает работу.
pose_recentered() 🔗
Информирует пользователя, находящегося в очереди, о положении игрока.
refresh_rate_changed(refresh_rate: float) 🔗
Сообщает пользователю об изменении частоты обновления HMD.
Примечание: Выдается только в том случае, если среда выполнения XR поддерживает расширение частоты обновления.
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_focussed испускается при переходе на это состояние.
** Примечание: ** Это состояние 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
Приложение вошло в раздел non-XR (head-locked / static screen), в течение которого приоритет отдается энергосбережению.
PerfSettingsLevel PERF_SETTINGS_LEVEL_SUSTAINED_LOW = 1
Приложение вошло в стадию низкой и стабильной сложности, в течение которой снижение мощности важнее, чем случайные задержки рендеринга кадров.
PerfSettingsLevel PERF_SETTINGS_LEVEL_SUSTAINED_HIGH = 2
Приложение вошло в раздел высокой или динамической сложности, в ходе которого XR Runtime стремится к последовательному XR-композитингу и рендерингу кадров в термически устойчивом диапазоне.
PerfSettingsLevel PERF_SETTINGS_LEVEL_BOOST = 3
Приложение вошло в раздел с очень высокой сложностью, в ходе которого XR Runtime может выйти за пределы термически устойчивого диапазона.
enum PerfSettingsSubDomain: 🔗
PerfSettingsSubDomain PERF_SETTINGS_SUB_DOMAIN_COMPOSITING = 0
Производительность compositing в среде выполнения достигла нового уровня.
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
Sub-domain достиг критического уровня, при котором приложение должно начать радикальные действия по смягчению последствий.
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, включается динамическая регулировка фокусировки. Интерфейс должен быть инициализирован, прежде чем эта функция станет доступна. Если включена, фокусировка будет автоматически регулироваться в диапазоне от low до foveation_level.
Примечание: Работает только с рендерером совместимости.
Уровень фокусировки, от 0 (выкл.) до 3 (высокий). Интерфейс должен быть инициализирован, прежде чем эта функция станет доступна.
Примечание: Работает только с рендерером совместимости.
float render_target_size_multiplier = 1.0 🔗
Множитель размера рендера для текущего HMD. Должен быть установлен до инициализации интерфейса.
Минимальный радиус вокруг точки фокусировки, где гарантируется полное качество, если VRS используется как процент от размера экрана.
Примечание: Только для Mobile и Forward+ рендереров. Требуется, чтобы Viewport.vrs_mode был установлен на Viewport.VRS_XR.
Сила, используемая для расчета карты плотности VRS. Чем больше это значение, тем заметнее VRS. Это повышает производительность за счет качества.
Примечание: Только для Mobile и Forward+ рендереров. Требуется, чтобы Viewport.vrs_mode был установлен на Viewport.VRS_XR.
Описания метода
Array get_action_sets() const 🔗
Возвращает список наборов действий, зарегистрированных в Godot (загружаемых из карты действий во время выполнения).
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.
void set_action_set_active(name: String, active: bool) 🔗
Устанавливает заданный набор действий как активный или неактивный.
void set_cpu_level(level: PerfSettingsLevel) 🔗
Устанавливает уровень производительности ЦП устройства OpenXR.
void set_gpu_level(level: PerfSettingsLevel) 🔗
Устанавливает уровень производительности графического процессора (GPU) устройства OpenXR.
void set_motion_range(hand: Hand, motion_range: HandMotionRange) 🔗
Если отслеживание рук включено и поддерживается диапазон движения, устанавливает текущий настроенный диапазон движения для hand на motion_range.