OpenXRInterface

Hereda: XRInterface < RefCounted < Object

Nuestra interfaz de OpenXR.

Descripción

La interfaz OpenXR permite a Godot interactuar con los tiempos de ejecución de OpenXR y hace posible crear experiencias y juegos de XR.

Debido a las necesidades de OpenXR, esta interfaz funciona de forma ligeramente diferente a otras interfaces XR basadas en plugins. Debe inicializarse cuando se inicia Godot. Debe habilitar OpenXR, la configuración para esto se puede encontrar en la configuración del proyecto de juegos bajo el encabezado XR. Es necesario marcar un viewport para su uso con XR para que Godot sepa qué resultado de renderizado debe enviarse al visor.

Tutoriales

Propiedades

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

Métodos

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)


Señales

cpu_level_changed(sub_domain: int, from_level: int, to_level: int) 🔗

Informa que el nivel de rendimiento de la CPU del dispositivo ha cambiado en el subdominio especificado.


gpu_level_changed(sub_domain: int, from_level: int, to_level: int) 🔗

Informa que el nivel de rendimiento de la GPU del dispositivo ha cambiado en el subdominio especificado.


instance_exiting() 🔗

Informa que nuestra instancia de OpenXR está saliendo.


pose_recentered() 🔗

Informa al usuario que ha puesto en cola un recentrado de la posición del jugador.


refresh_rate_changed(refresh_rate: float) 🔗

Informa al usuario de que ha cambiado la frecuencia de actualización del HMD.

Nota: Solo se emite si el runtime de XR admite la extensión de la frecuencia de actualización.


session_begun() 🔗

Nos informa que nuestra sesión OpenXR ha sido iniciada.


session_focussed() 🔗

Informa que nuestra sesión de OpenXR ahora tiene el foco, por ejemplo, la salida se envía al HMD y estamos recibiendo entrada XR.


session_loss_pending() 🔗

Nos informa que nuestra sesión OpenXR está en proceso de perderse.


session_stopping() 🔗

Nos informa que nuestra sesión OpenXR se está deteniendo.


session_synchronized() 🔗

Informa que nuestra sesión de OpenXR ha sido sincronizada.


session_visible() 🔗

Informa que nuestra sesión de OpenXR ahora es visible, por ejemplo, la salida se envía al HMD pero no recibimos entrada XR.


Enumeraciones

enum SessionState: 🔗

SessionState SESSION_STATE_UNKNOWN = 0

Se desconoce el estado de la sesión, aún no hemos intentado configurar OpenXR.

SessionState SESSION_STATE_IDLE = 1

El estado inicial después de que se crea la sesión de OpenXR o después de que se destruye la sesión.

SessionState SESSION_STATE_READY = 2

OpenXR está listo para comenzar nuestra sesión. session_begun se emite cuando cambiamos a este estado.

SessionState SESSION_STATE_SYNCHRONIZED = 3

La aplicación ha sincronizado su bucle de fotogramas con el tiempo de ejecución, pero no estamos renderizando nada. session_synchronized se emite cuando cambiamos a este estado.

SessionState SESSION_STATE_VISIBLE = 4

La aplicación ha sincronizado su bucle de fotogramas con el tiempo de ejecución y estamos renderizando la salida al usuario, sin embargo, no recibimos ninguna entrada del usuario. session_visible se emite cuando cambiamos a este estado.

Nota: Este es el estado actual justo antes de obtener el estado enfocado, siempre que el usuario abra un menú del sistema, cambie a otra aplicación o se quite los auriculares.

SessionState SESSION_STATE_FOCUSED = 5

La aplicación ha sincronizado su bucle de fotogramas con el tiempo de ejecución, estamos renderizando la salida al usuario y estamos recibiendo entrada XR. session_focussed se emite cuando cambiamos a este estado.

Nota: Este es el estado en el que estará OpenXR cuando el usuario pueda interactuar completamente con tu juego.

SessionState SESSION_STATE_STOPPING = 6

Nuestra sesión se está deteniendo. session_stopping se emite cuando cambiamos a este estado.

SessionState SESSION_STATE_LOSS_PENDING = 7

La sesión está a punto de perderse. session_loss_pending se emite cuando cambiamos a este estado.

SessionState SESSION_STATE_EXITING = 8

The OpenXR instance is about to be destroyed and we're exiting. instance_exiting is emitted when we change to this state.


enum Hand: 🔗

Hand HAND_LEFT = 0

Mano izquierda.

Hand HAND_RIGHT = 1

Mano derecha.

Hand HAND_MAX = 2

Valor máximo para la enum de mano.


enum HandMotionRange: 🔗

HandMotionRange HAND_MOTION_RANGE_UNOBSTRUCTED = 0

Rango completo de la mano, si el usuario cierra las manos, hacemos un puño completo.

HandMotionRange HAND_MOTION_RANGE_CONFORM_TO_CONTROLLER = 1

De acuerdo con el controlador, si el usuario cierra sus manos, los datos rastreados se ajustan a la forma del controlador.

HandMotionRange HAND_MOTION_RANGE_MAX = 2

Valor máximo para la enum de rango de movimiento.


enum HandTrackedSource: 🔗

HandTrackedSource HAND_TRACKED_SOURCE_UNKNOWN = 0

Se desconoce la fuente de los datos de seguimiento de la mano (es probable que la extensión no sea compatible).

HandTrackedSource HAND_TRACKED_SOURCE_UNOBSTRUCTED = 1

La fuente del seguimiento de la mano no está obstruida, esto significa que se utiliza un método preciso de seguimiento de la mano, por ejemplo, seguimiento óptico de la mano, guantes de datos, etc.

HandTrackedSource HAND_TRACKED_SOURCE_CONTROLLER = 2

La fuente del seguimiento de la mano es un mando, las posiciones de los huesos se infieren a partir de las entradas del mando.

HandTrackedSource HAND_TRACKED_SOURCE_MAX = 3

Representa el tamaño del enum HandTrackedSource.


enum HandJoints: 🔗

HandJoints HAND_JOINT_PALM = 0

Junta de palma.

HandJoints HAND_JOINT_WRIST = 1

Junta de muñeca.

HandJoints HAND_JOINT_THUMB_METACARPAL = 2

Articulación metacarpiana del pulgar.

HandJoints HAND_JOINT_THUMB_PROXIMAL = 3

Articulación proximal del pulgar.

HandJoints HAND_JOINT_THUMB_DISTAL = 4

Articulación distal del pulgar.

HandJoints HAND_JOINT_THUMB_TIP = 5

Articulación de la punta del pulgar.

HandJoints HAND_JOINT_INDEX_METACARPAL = 6

Articulación metacarpiana del dedo índice.

HandJoints HAND_JOINT_INDEX_PROXIMAL = 7

Articulación proximal de la falange del dedo índice.

HandJoints HAND_JOINT_INDEX_INTERMEDIATE = 8

Articulación intermedia de la falange del dedo índice.

HandJoints HAND_JOINT_INDEX_DISTAL = 9

Articulación distal de la falange del dedo índice.

HandJoints HAND_JOINT_INDEX_TIP = 10

Articulación de la punta del dedo índice.

HandJoints HAND_JOINT_MIDDLE_METACARPAL = 11

Articulación metacarpiana del dedo medio.

HandJoints HAND_JOINT_MIDDLE_PROXIMAL = 12

Articulación proximal de la falange del dedo medio.

HandJoints HAND_JOINT_MIDDLE_INTERMEDIATE = 13

Articulación intermedia de la falange del dedo medio.

HandJoints HAND_JOINT_MIDDLE_DISTAL = 14

Articulación de la falange distal del dedo medio.

HandJoints HAND_JOINT_MIDDLE_TIP = 15

Articulación de la punta del dedo medio.

HandJoints HAND_JOINT_RING_METACARPAL = 16

Articulación metacarpiana del dedo anular.

HandJoints HAND_JOINT_RING_PROXIMAL = 17

Articulación proximal de la falange del dedo anular.

HandJoints HAND_JOINT_RING_INTERMEDIATE = 18

Articulación intermedia de la falange del dedo anular.

HandJoints HAND_JOINT_RING_DISTAL = 19

Articulación de la falange distal del dedo anular.

HandJoints HAND_JOINT_RING_TIP = 20

Articulación de la punta del dedo anular.

HandJoints HAND_JOINT_LITTLE_METACARPAL = 21

Articulación metacarpiana del dedo meñique.

HandJoints HAND_JOINT_LITTLE_PROXIMAL = 22

Articulación proximal de la falange del dedo meñique.

HandJoints HAND_JOINT_LITTLE_INTERMEDIATE = 23

Articulación intermedia de la falange del dedo meñique.

HandJoints HAND_JOINT_LITTLE_DISTAL = 24

Articulación distal de la falange del dedo meñique.

HandJoints HAND_JOINT_LITTLE_TIP = 25

Articulación de la punta del dedo meñique.

HandJoints HAND_JOINT_MAX = 26

Representa el tamaño del enum HandJoints.


enum PerfSettingsLevel: 🔗

PerfSettingsLevel PERF_SETTINGS_LEVEL_POWER_SAVINGS = 0

La aplicación ha entrado en una sección que no es XR (pantalla estática / bloqueada en la cabeza), durante la cual se debe priorizar el ahorro de energía.

PerfSettingsLevel PERF_SETTINGS_LEVEL_SUSTAINED_LOW = 1

La aplicación ha entrado en una sección de complejidad baja y estable, durante la cual reducir la energía es más importante que los fotogramas de renderizado tardíos ocasionales.

PerfSettingsLevel PERF_SETTINGS_LEVEL_SUSTAINED_HIGH = 2

La aplicación ha entrado en una sección de complejidad alta o dinámica, durante la cual el XR Runtime se esfuerza por una composición XR y un renderizado de fotogramas consistentes dentro de un rango térmicamente sostenible.

PerfSettingsLevel PERF_SETTINGS_LEVEL_BOOST = 3

La aplicación ha entrado en una sección de complejidad muy alta, durante la cual se permite que el XR Runtime supere el rango térmicamente sostenible.


enum PerfSettingsSubDomain: 🔗

PerfSettingsSubDomain PERF_SETTINGS_SUB_DOMAIN_COMPOSITING = 0

El rendimiento de la composición dentro del runtime ha alcanzado un nuevo nivel.

PerfSettingsSubDomain PERF_SETTINGS_SUB_DOMAIN_RENDERING = 1

El rendimiento del renderizado de la aplicación ha alcanzado un nuevo nivel.

PerfSettingsSubDomain PERF_SETTINGS_SUB_DOMAIN_THERMAL = 2

La temperatura del dispositivo ha alcanzado un nuevo nivel.


enum PerfSettingsNotificationLevel: 🔗

PerfSettingsNotificationLevel PERF_SETTINGS_NOTIF_LEVEL_NORMAL = 0

El subdominio ha alcanzado un nivel en el que no son necesarias más acciones que las que se están aplicando actualmente.

PerfSettingsNotificationLevel PERF_SETTINGS_NOTIF_LEVEL_WARNING = 1

El subdominio ha alcanzado un nivel de alerta temprana en el que la aplicación debería iniciar acciones de mitigación proactivas.

PerfSettingsNotificationLevel PERF_SETTINGS_NOTIF_LEVEL_IMPAIRED = 2

El subdominio ha alcanzado un nivel crítico en el que la aplicación debería iniciar acciones de mitigación drásticas.


flags HandJointFlags: 🔗

HandJointFlags HAND_JOINT_NONE = 0

No hay banderas establecidas.

HandJointFlags HAND_JOINT_ORIENTATION_VALID = 1

Si está establecido, los datos de orientación son válidos, de lo contrario, los datos de orientación no son fiables y no deben utilizarse.

HandJointFlags HAND_JOINT_ORIENTATION_TRACKED = 2

Si está establecido, los datos de orientación provienen de datos de seguimiento, de lo contrario, los datos de orientación contienen datos predichos.

HandJointFlags HAND_JOINT_POSITION_VALID = 4

Si está establecido, los datos posicionales son válidos, de lo contrario, los datos posicionales no son fiables y no deben utilizarse.

HandJointFlags HAND_JOINT_POSITION_TRACKED = 8

Si está establecido, los datos posicionales provienen de datos de seguimiento, de lo contrario, los datos posicionales contienen datos predichos.

HandJointFlags HAND_JOINT_LINEAR_VELOCITY_VALID = 16

Si está establecido, nuestros datos de velocidad lineal son válidos, de lo contrario, los datos de velocidad lineal no son fiables y no deben utilizarse.

HandJointFlags HAND_JOINT_ANGULAR_VELOCITY_VALID = 32

Si está establecido, nuestros datos de velocidad angular son válidos, de lo contrario, los datos de velocidad angular no son fiables y no deben utilizarse.


Descripciones de Propiedades

float display_refresh_rate = 0.0 🔗

  • void set_display_refresh_rate(value: float)

  • float get_display_refresh_rate()

La frecuencia de actualización de la pantalla para el HMD actual. Solo funciona si esta característica es compatible con el runtime de OpenXR y después de que se haya inicializado la interfaz.


bool foveation_dynamic = false 🔗

  • void set_foveation_dynamic(value: bool)

  • bool get_foveation_dynamic()

If true, enables dynamic foveation adjustment. The interface must be initialized before this is accessible. If enabled, foveation will automatically be adjusted between low and foveation_level.

Note: Only works on the Compatibility renderer.


int foveation_level = 0 🔗

  • void set_foveation_level(value: int)

  • int get_foveation_level()

The foveation level, from 0 (off) to 3 (high). The interface must be initialized before this is accessible.

Note: Only works on the Compatibility renderer.


float render_target_size_multiplier = 1.0 🔗

  • void set_render_target_size_multiplier(value: float)

  • float get_render_target_size_multiplier()

El multiplicador de tamaño de renderizado para el HMD actual. Debe establecerse antes de que se haya inicializado la interfaz.


float vrs_min_radius = 20.0 🔗

  • void set_vrs_min_radius(value: float)

  • float get_vrs_min_radius()

The minimum radius around the focal point where full quality is guaranteed if VRS is used as a percentage of screen size.

Note: Mobile and Forward+ renderers only. Requires Viewport.vrs_mode to be set to Viewport.VRS_XR.


float vrs_strength = 1.0 🔗

  • void set_vrs_strength(value: float)

  • float get_vrs_strength()

The strength used to calculate the VRS density map. The greater this value, the more noticeable VRS is. This improves performance at the cost of quality.

Note: Mobile and Forward+ renderers only. Requires Viewport.vrs_mode to be set to Viewport.VRS_XR.


Descripciones de Métodos

Array get_action_sets() const 🔗

Devuelve una lista de conjuntos de acciones registrados con Godot (cargados desde el mapa de acciones en tiempo de ejecución).


Array get_available_display_refresh_rates() const 🔗

Returns a list of display refresh rates supported by the current HMD. Only returned if this feature is supported by the OpenXR runtime and after the interface has been initialized.


Vector3 get_hand_joint_angular_velocity(hand: Hand, joint: HandJoints) const 🔗

Obsoleto: Use XRHandTracker.get_hand_joint_angular_velocity() obtained from XRServer.get_tracker() instead.

Si el seguimiento de manos está habilitado, devuelve la velocidad angular de una articulación (joint) de una mano (hand) según lo proporcionado por OpenXR. ¡Esto es relativo a XROrigin3D!


BitField[HandJointFlags] get_hand_joint_flags(hand: Hand, joint: HandJoints) const 🔗

Obsoleto: Use XRHandTracker.get_hand_joint_flags() obtained from XRServer.get_tracker() instead.

Si el seguimiento de manos está habilitado, devuelve banderas que nos informan de la validez de los datos de seguimiento.


Vector3 get_hand_joint_linear_velocity(hand: Hand, joint: HandJoints) const 🔗

Obsoleto: Use XRHandTracker.get_hand_joint_linear_velocity() obtained from XRServer.get_tracker() instead.

Si el seguimiento de manos está habilitado, devuelve la velocidad lineal de una articulación (joint) de una mano (hand) proporcionada por OpenXR. ¡Esto es relativo a XROrigin3D sin aplicar la escala del mundo!


Vector3 get_hand_joint_position(hand: Hand, joint: HandJoints) const 🔗

Obsoleto: Use XRHandTracker.get_hand_joint_transform() obtained from XRServer.get_tracker() instead.

Si el seguimiento de manos está habilitado, devuelve la posición de una articulación (joint) de una mano (hand) proporcionada por OpenXR. ¡Esto es relativo a XROrigin3D sin aplicar la escala del mundo!


float get_hand_joint_radius(hand: Hand, joint: HandJoints) const 🔗

Obsoleto: Use XRHandTracker.get_hand_joint_radius() obtained from XRServer.get_tracker() instead.

Si el seguimiento de manos está habilitado, devuelve el radio de una articulación (joint) de una mano (hand) proporcionada por OpenXR. ¡Esto es sin aplicar la escala del mundo!


Quaternion get_hand_joint_rotation(hand: Hand, joint: HandJoints) const 🔗

Obsoleto: Use XRHandTracker.get_hand_joint_transform() obtained from XRServer.get_tracker() instead.

Si el seguimiento de manos está habilitado, devuelve la rotación de una articulación (joint) de una mano (hand) proporcionada por OpenXR.


HandTrackedSource get_hand_tracking_source(hand: Hand) const 🔗

Obsoleto: Use XRHandTracker.hand_tracking_source obtained from XRServer.get_tracker() instead.

Si el seguimiento de manos está habilitado y se admite la fuente de seguimiento de manos, obtiene la fuente de los datos de seguimiento de manos para hand.


HandMotionRange get_motion_range(hand: Hand) const 🔗

Si el seguimiento de manos está habilitado y se admite el rango de movimiento, obtiene el rango de movimiento configurado actualmente para hand.


SessionState get_session_state() 🔗

Devuelve el estado actual de nuestra sesión de OpenXR.


bool is_action_set_active(name: String) const 🔗

Devuelve true si el conjunto de acciones dado está activo.


bool is_eye_gaze_interaction_supported() 🔗

Devuelve las capacidades de la extensión de interacción de la mirada ocular.

Nota: Esto solo devuelve un valor válido después de que se haya inicializado OpenXR.


bool is_foveation_supported() const 🔗

Returns true if OpenXR's foveation extension is supported. The interface must be initialized before this returns a valid value.

Note: When using the Vulkan rendering driver, Viewport.vrs_mode must be set to Viewport.VRS_XR to support foveation.


bool is_hand_interaction_supported() const 🔗

Devuelve true si el perfil de interacción de manos de OpenXR es compatible y está habilitado.

Nota: Esto solo devuelve un valor válido después de que OpenXR se haya inicializado.


bool is_hand_tracking_supported() 🔗

Devuelve true si el seguimiento de manos de OpenXR es compatible y está habilitado.

Nota: Esto solo devuelve un valor válido después de que OpenXR se haya inicializado.


void set_action_set_active(name: String, active: bool) 🔗

Establece el conjunto de acciones dado como activo o inactivo.


void set_cpu_level(level: PerfSettingsLevel) 🔗

Establece el nivel de rendimiento de la CPU del dispositivo OpenXR.


void set_gpu_level(level: PerfSettingsLevel) 🔗

Establece el nivel de rendimiento de la GPU del dispositivo OpenXR.


void set_motion_range(hand: Hand, motion_range: HandMotionRange) 🔗

Si el seguimiento de manos está habilitado y el rango de movimiento es compatible, establece el rango de movimiento configurado actualmente para hand a motion_range.