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 и создавать игры и приложения 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 |
|
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) 🔗
Информирует об изменении уровня производительности 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.
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_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, включается динамическая регулировка фокусировки. Интерфейс должен быть инициализирован, прежде чем эта функция станет доступна. Если включено, фокусировка будет автоматически регулироваться в диапазоне от низкого до foveation_level.
Уровень фокусировки, от 0 (выкл.) до 3 (высокий). Интерфейс должен быть инициализирован, прежде чем эта функция станет доступна.
bool foveation_with_subsampled_images = false 🔗
Если true, включается субдискретизация изображений с фовеацией, что может повысить производительность в Vulkan.
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.
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) 🔗
Устанавливает уровень производительности графического процессора (GPU) устройства OpenXR.
void set_motion_range(hand: Hand, motion_range: HandMotionRange) 🔗
Если отслеживание рук включено и поддерживается диапазон движения, устанавливает текущий настроенный диапазон движения для hand на motion_range.