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.

XRServer

Hérite de : Object

Serveur pour les fonctionnalités AR et VR.

Description

Les serveurs AR/VR sont au cœur de nos solutions avancées de réalité virtuelle, traitant tous les processus.

Tutoriels

Propriétés

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éthodes

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)


Signaux

interface_added(interface_name: StringName) 🔗

Émis lorsqu'une nouvelle interface a été ajoutée.


interface_removed(interface_name: StringName) 🔗

Émis lorsqu'une interface est supprimée.


reference_frame_changed() 🔗

Émis lorsque la transformation du cadre de référence change.


tracker_added(tracker_name: StringName, type: int) 🔗

Émis quand un nouveau tracker a été ajouté. Si vous n'utilisez pas un nombre fixe de contrôleurs ou si vous utilisez XRAnchor3D pour une solution AR, il est important de réagir à ce signal pour ajouter les nœuds XRController3D ou XRAnchor3D appropriés liés à ce nouveau tracker.


tracker_removed(tracker_name: StringName, type: int) 🔗

Émis quand un tracker est retiré. Vous devez supprimer tout XRController3D ou XRAnchor3D si nécessaire. Ce n'est pas obligatoire, les nœuds deviennent tout simplement inactifs et seront de nouveau actifs lorsqu'un nouveau tracker sera disponible (quand un nouveau contrôleur activé prendra la place du précédent).


tracker_updated(tracker_name: StringName, type: int) 🔗

Émis lorsqu'un tracker existant a été mis à jour. Cela peut se produire si l'utilisateur change de contrôleurs.


world_origin_changed() 🔗

Emitted when the world origin transform changes.


Énumérations

enum TrackerType: 🔗

TrackerType TRACKER_HEAD = 1

Le tracker suit l'emplacement de la tête du joueur. Il s'agit généralement d'un emplacement centré entre les yeux du joueur. Notez que pour les appareils AR portatifs, cela peut être l'emplacement actuel de l'appareil.

TrackerType TRACKER_CONTROLLER = 2

Le traqueur permet de suivre la localisation d'un contrôleur.

TrackerType TRACKER_BASESTATION = 4

Le tracker permet de suivre l'emplacement d'une station de base.

TrackerType TRACKER_ANCHOR = 8

Le tracker permet de suivre l'emplacement et la taille d'une ancre en réalité augmentée.

TrackerType TRACKER_HAND = 16

Le tracker suit l'emplacement et les articulations d'une main.

TrackerType TRACKER_BODY = 32

Le tracker suit l'emplacement et les articulations d'un corps.

TrackerType TRACKER_FACE = 64

Le tracker suit les expressions d'un visage.

TrackerType TRACKER_ANY_KNOWN = 127

Utilisé en interne pour filtrer les trackers de n’importe quel type connu.

TrackerType TRACKER_UNKNOWN = 128

Utilisé en interne si nous n'avons pas encore défini le type de tracker.

TrackerType TRACKER_ANY = 255

Utilisé en interne pour sélectionner tous les traqueurs.


enum RotationMode: 🔗

RotationMode RESET_FULL_ROTATION = 0

Réinitialise complètement l'orientation du visiocasque. Indépendamment de la direction que l'utilisateur regarde dans le monde réel. L'utilisateur regardera droit devant dans le monde virtuel.

RotationMode RESET_BUT_KEEP_TILT = 1

Réinitialise l'orientation mais conserve l'inclinaison du dispositif. Donc si nous regardons en bas, nous continuons de regarder en bas mais le titre sera réinitialisé.

RotationMode DONT_RESET_ROTATION = 2

Ne réinitialise pas l'orientation du visiocasque, centre seulement la position du joueur.


Descriptions des propriétés

bool camera_locked_to_origin = false 🔗

  • void set_camera_locked_to_origin(value: bool)

  • bool is_camera_locked_to_origin()

Si défini à true, la scène sera rendue comme si la caméra était verrouillée au XROrigin3D.

Note : Cela ne fournit pas une expérience très confortable pour les utilisateurs. Ce paramètre existe pour faire des tests de référence ou automatisés, où vous voulez contrôler ce qui est rendu via le code.


XRInterface primary_interface 🔗

La XRInterface principale actuellement connectée à ce XRServer.


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

L'origine actuelle de notre espace de suivi dans le monde virtuel. Ceci est utilisé par le moteur de rendu pour positionner correctement la caméra avec de nouvelles données de suivi.

Note : Cette propriété est gérée par le nœud XROrigin3D courant. Il est exposé pour y accéder depuis des GDExtensions.


float world_scale = 1.0 🔗

  • void set_world_scale(value: float)

  • float get_world_scale()

L'échelle du monde du jeu par rapport au monde réel. Par défaut, la plupart des plateformes AR/VR supposent que 1 unité de jeu correspond à 1 mètre du monde réel.


Descriptions des méthodes

void add_interface(interface: XRInterface) 🔗

Enregistre un objet XRInterface.


void add_tracker(tracker: XRTracker) 🔗

Enregistre un nouveau XRTracker qui suit un objet physique.


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

Il s'agit d'une fonction importante qu'il faut comprendre correctement. Les plates-formes AR et VR gèrent les positions légèrement différemment.

Pour les plateformes qui n'offrent pas de suivi spatial, notre point d'origine (0,0,0) est l'emplacement de notre HMD, mais vous avez peu de contrôle sur la direction que le joueur fait face dans le monde réel.

Pour les plateformes qui offrent un suivi spatial, notre point d'origine dépend beaucoup du système. Pour OpenVR, notre point d'origine est généralement le centre de l'espace de suivi, au sol. Pour d'autres plates-formes, il s'agit souvent de l'emplacement de la caméra de suivi.

Cette méthode vous permet de centrer votre tracker sur l'emplacement du HMD. Il prendra l'emplacement actuel de l'HMD et l'utilisera pour ajuster toutes vos données de suivi ; c'est-à-dire réaligner le monde réel à la position actuelle de votre joueur dans le monde du jeu.

Pour que cette méthode produise des résultats utilisables, des informations de suivi doivent être disponibles. Cela prend souvent quelques trames après le démarrage de votre jeu.

Vous devriez appeler cette méthode après quelques secondes. Par exemple, lorsque l'utilisateur demande un réalignement de l'écran en maintenant un bouton désigné sur un contrôleur pendant une courte période, ou lors de l'implémentation d'un mécanisme de téléportation.


void clear_reference_frame() 🔗

Clears the reference frame that was set by previous calls to center_on_hmd().


XRInterface find_interface(name: String) const 🔗

Trouve une interface par son nom name. Par exemple, si votre projet utilise des capacités d'une plateforme AR/VR, vous pouvez trouver l'interface pour cette plateforme par son nom et l'initialiser.


Transform3D get_hmd_transform() 🔗

Renvoie la transformation de l'interface primaire.


XRInterface get_interface(idx: int) const 🔗

Renvoie l'interface enregistrée à l'index idx donné dans la liste des interfaces.


int get_interface_count() const 🔗

Renvoie le nombre d'interfaces actuellement enregistrées avec le serveur AR/VR. Si votre projet prend en charge plusieurs plateformes AR/VR, vous pouvez lister les interfaces disponibles, et présenter à l'utilisateur une sélection ou simplement essayer d'initialiser chaque interface et utiliser la première interface qui renvoie true.


Array[Dictionary] get_interfaces() const 🔗

Renvoie une liste des interfaces disponibles avec l'identifiant et le nom de chaque interface.


Transform3D get_reference_frame() const 🔗

Returns the reference frame transform. Mostly used internally and exposed for GDExtension build interfaces.


XRTracker get_tracker(tracker_name: StringName) const 🔗

Renvoie le tracker positionnel avec le nom tracker_name donné.


Dictionary get_trackers(tracker_types: int) 🔗

Renvoie un dictionnaire de trackers pour tracker_types.


void remove_interface(interface: XRInterface) 🔗

Supprime cette interface.


void remove_tracker(tracker: XRTracker) 🔗

Supprime ce tracker.