XRServer

Hereda: Object

Servidor para las funciones de AR y VR.

Descripción

El servidor AR/VR es el corazón de nuestra solución de Realidad Virtual y Avanzada y maneja todo el procesamiento.

Tutoriales

Propiedades

bool

camera_locked_to_origin

false

XRInterface

primary_interface

Transform3D

world_origin

Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)

float

world_scale

1.0

Métodos

void

add_interface(interface: XRInterface)

void

add_tracker(tracker: XRTracker)

void

center_on_hmd(rotation_mode: RotationMode, keep_height: bool)

void

clear_reference_frame()

XRInterface

find_interface(name: String) const

Transform3D

get_hmd_transform()

XRInterface

get_interface(idx: int) const

int

get_interface_count() const

Array[Dictionary]

get_interfaces() const

Transform3D

get_reference_frame() const

XRTracker

get_tracker(tracker_name: StringName) const

Dictionary

get_trackers(tracker_types: int)

void

remove_interface(interface: XRInterface)

void

remove_tracker(tracker: XRTracker)


Señales

interface_added(interface_name: StringName) 🔗

Emitida cuando se ha añadido una nueva interfaz.


interface_removed(interface_name: StringName) 🔗

Emitida cuando se quita una interfaz.


reference_frame_changed() 🔗

Emitida cuando cambia la transformación del marco de referencia.


tracker_added(tracker_name: StringName, type: int) 🔗

Emitida cuando se añade un nuevo rastreador. Si no se utiliza un número fijo de controladores o si se utilizan XRAnchor3D para una solución de RA, es importante reaccionar a esta señal para añadir los nodos XRController3D o XRAnchor3D correspondientes a este nuevo rastreador.


tracker_removed(tracker_name: StringName, type: int) 🔗

Emitida al eliminar un rastreador. Debe eliminar cualquier punto XRController3D o XRAnchor3D si corresponde. Esto no es obligatorio; los nodos simplemente se desactivan y se activan de nuevo cuando un nuevo rastreador esté disponible (es decir, cuando se active un nuevo controlador que sustituya al anterior).


tracker_updated(tracker_name: StringName, type: int) 🔗

Emitida cuando se actualiza un rastreador existente. Esto puede ocurrir si el usuario cambia de controlador.


Enumeraciones

enum TrackerType: 🔗

TrackerType TRACKER_HEAD = 1

El rastreador rastrea la ubicación de la cabeza del jugador. Normalmente es una ubicación centrada entre los ojos del jugador. Ten en cuenta que para los dispositivos AR portátiles, esta puede ser la ubicación actual del dispositivo.

TrackerType TRACKER_CONTROLLER = 2

El rastreador rastrea la ubicación de un controlador.

TrackerType TRACKER_BASESTATION = 4

El rastreador rastrea la ubicación de una estación base.

TrackerType TRACKER_ANCHOR = 8

El rastreador rastrea la ubicación y el tamaño de un ancla AR.

TrackerType TRACKER_HAND = 16

El rastreador rastrea la ubicación y las articulaciones de una mano.

TrackerType TRACKER_BODY = 32

El rastreador rastrea la ubicación y las articulaciones de un cuerpo.

TrackerType TRACKER_FACE = 64

El rastreador rastrea las expresiones de un rostro.

TrackerType TRACKER_ANY_KNOWN = 127

Se utiliza internamente para filtrar los rastreadores de cualquier tipo conocido.

TrackerType TRACKER_UNKNOWN = 128

Se usa internamente si aún no hemos establecido el tipo de rastreador.

TrackerType TRACKER_ANY = 255

Se utiliza internamente para seleccionar todos los rastreadores.


enum RotationMode: 🔗

RotationMode RESET_FULL_ROTATION = 0

Reajustar completamente la orientación del HMD. Independientemente de la dirección en la que el usuario está mirando en el mundo real. El usuario mirará hacia adelante en el mundo virtual.

RotationMode RESET_BUT_KEEP_TILT = 1

Restablece la orientación pero mantiene la inclinación del dispositivo. Así que si estamos mirando hacia abajo, seguimos mirando hacia abajo pero la orientación se reajustará.

RotationMode DONT_RESET_ROTATION = 2

No reajusta la orientación del HMD, sólo la posición del jugador se centra.


Descripciones de Propiedades

bool camera_locked_to_origin = false 🔗

  • void set_camera_locked_to_origin(value: bool)

  • bool is_camera_locked_to_origin()

Si se establece en true, la escena se renderizará como si la cámara estuviera enfocada en XROrigin3D.

Nota: Esto no proporciona una experiencia muy cómoda para los usuarios. Esta configuración se utiliza para realizar pruebas comparativas o automatizadas, donde se desea controlar lo que se renderiza mediante código.


XRInterface primary_interface 🔗

La XRInterface principal actualmente vinculada al XRServer.


Transform3D world_origin = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) 🔗

El origen actual de nuestro espacio de seguimiento en el mundo virtual. El renderizador lo utiliza para posicionar correctamente la cámara con los nuevos datos de seguimiento.

Nota: Esta propiedad la gestiona el nodo XROrigin3D actual. Está expuesta para el acceso desde GDExtensions.


float world_scale = 1.0 🔗

  • void set_world_scale(value: float)

  • float get_world_scale()

La escala del mundo del juego en comparación con el mundo real. Por defecto, la mayoría de las plataformas de RA/RV asumen que una unidad de juego corresponde a un medidor del mundo real.


Descripciones de Métodos

void add_interface(interface: XRInterface) 🔗

Registra un objeto XRInterface.


void add_tracker(tracker: XRTracker) 🔗

Registra un nuevo XRTracker que rastrea un objeto físico.


void center_on_hmd(rotation_mode: RotationMode, keep_height: bool) 🔗

Es importante comprender esta función correctamente. Las plataformas de RA y RV gestionan el posicionamiento de forma ligeramente diferente.

En las plataformas que no ofrecen seguimiento espacial, nuestro punto de origen (0, 0, 0) es la ubicación de nuestro HMD, pero tienes poco control sobre la dirección a la que mira el jugador en el mundo real.

En las plataformas que sí ofrecen seguimiento espacial, nuestro punto de origen depende en gran medida del sistema. En OpenVR, nuestro punto de origen suele ser el centro del espacio de seguimiento, en el suelo. En otras plataformas, suele ser la ubicación de la cámara de seguimiento.

Este método permite centrar el rastreador en la ubicación del HMD. Tomará la ubicación actual del HMD y la usará para ajustar todos los datos de seguimiento; en esencia, realineará el mundo real a la posición actual del jugador en el mundo del juego.

Para que este método produzca resultados útiles, la información de seguimiento debe estar disponible. Esto suele tardar unos fotogramas después de iniciar el juego.

Debes ejecutar este método después de unos segundos. Por ejemplo, cuando el usuario solicita una realineación de la pantalla manteniendo presionado un botón designado en un controlador durante un período corto de tiempo, o al implementar un mecanismo de teletransporte.


void clear_reference_frame() 🔗

Borra el marco de referencia establecido por llamadas anteriores a center_on_hmd().


XRInterface find_interface(name: String) const 🔗

Busca una interfaz por su name. Por ejemplo, si tu proyecto utiliza las capacidades de una plataforma de RA/RV, puedes buscar la interfaz de esa plataforma por su nombre e inicializarla.


Transform3D get_hmd_transform() 🔗

Devuelve la transformación de la interfaz primaria.


XRInterface get_interface(idx: int) const 🔗

Devuelve la interfaz registrada en el índice idx dado en la lista de interfaces.


int get_interface_count() const 🔗

Devuelve el número de interfaces registradas actualmente en el servidor AR/VR. Si tu proyecto soporta múltiples plataformas AR/VR, puedes mirar a través de la interfaz disponible, y presentar al usuario una selección o simplemente tratar de inicializar cada interfaz y usar la primera que devuelva true.


Array[Dictionary] get_interfaces() const 🔗

Devuelve una lista de las interfaces disponibles, el ID y el nombre de cada interfaz.


Transform3D get_reference_frame() const 🔗

Devuelve la transformación del marco de referencia. Se usa principalmente internamente y se expone para las interfaces de compilación de GDExtension.


XRTracker get_tracker(tracker_name: StringName) const 🔗

Devuelve el rastreador posicional con el tracker_name dado.


Dictionary get_trackers(tracker_types: int) 🔗

Devuelve un diccionario de rastreadores para tracker_types.


void remove_interface(interface: XRInterface) 🔗

Elimina esta interface.


void remove_tracker(tracker: XRTracker) 🔗

Elimina este tracker.