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.

Paramètres OpenXR

OpenXR a son propre ensemble de paramètres qui sont appliqués lorsqu'OpenXR démarre. Bien qu'il soit possible pour les extensions OpenXR implémentées par les plugins Godot d'ajouter des paramètres supplémentaires, nous ne discuterons que des paramètres du noyau de Godot ici.

../../_images/openxr_settings.webp

Paramètres généraux

Activé

Ce paramètre active le module OpenXR lorsque Godot démarre. Ceci est nécessaire lorsque le backend Vulkan est utilisé. Pour d'autres backends, vous pouvez activer OpenXR à tout moment en appelant initialize sur la OpenXRInterface.

Cela doit également être activé pour obtenir l'accès à l'éditeur du tableau d'actions.

Vous pouvez utiliser l'option de ligne de commande --xr-mode on pour forcer cela.

Carte d'action par défaut

Ceci spécifie le chemin du fichier de la carte d'action que OpenXR chargera et communiquera au runtime XR.

Facteur de forme

Ceci spécifie si votre jeu est conçu pour :

  • Appareils Head Mounted (porté sur la tête) tels qu'un Meta Quest, un Valve Index ou un Magic Leap,

  • Appareils Handheld (tenu à la main) comme les téléphones.

Si l'appareil sur lequel vous exécutez votre jeu ne correspond pas à la sélection ici, OpenXR échouera à initialiser.

Configuration de la vue

Ceci spécifie la configuration de la vue dont votre jeu est conçu pour :

  • Mono, votre jeu fournit une seule sortie image. Par exemple, de la RA sur un téléphone,

  • Stereo, votre jeu fournit une sortie image stéréo. Par exemple, des dispositifs portés sur la tête.

Si l'appareil sur lequel vous exécutez votre jeu ne correspond pas à la sélection ici, OpenXR échouera à initialiser.

Note

OpenXR a des configurations de vue supplémentaires pour des appareils très spécifiques que Godot ne supporte pas encore. Par exemple, les casques Varjo disposent d'une configuration quadri-vue qui affiche deux ensembles d'images stéréo. Elles pourraient être supportées dans un avenir proche.

Espace de référence

Dans la XR, tous les éléments comme la tête du joueur et les mains sont suivis à l'intérieur d'un volume de suivi. À la base de ce volume de suivi est notre point d'origine, qui mappe notre espace virtuel vers l'espace réel. Il existe cependant différents scénarios qui placent ce point dans différents endroits, selon le système XR utilisé. Dans OpenXR, ces scénarios sont bien définis et sélectionnés en définissant un espace de référence.

Local

L'espace de référence local place notre point d'origine à la tête du joueur par défaut. Certains environnements d'exécution XR feront cela chaque fois que votre jeu commencera, d'autres feront que la position persiste sur les sessions.

Cet espace de référence n'empêche cependant pas l'utilisateur de s'éloigner, de sorte à ce que vous aurez besoin de détecter si l'utilisateur le fait si vous souhaitez empêcher l'utilisateur de quitter le véhicule qu'il contrôle, ce qui pourrait potentiellement casser le jeu.

Cet espace de référence est la meilleure option pour les jeux comme des simulateurs de vol ou de course où nous voulons placer le nœud XROrigin3D là où la tête du joueur devrait être.

Lorsque l'utilisateur active l'option recentrage sur son casque, dont la méthode est différente par selon l'environnement d'exécution XR, l'environnement d'exécution déplacera la XRCamera3D vers le nœud XROrigin3D. La OpenXRInterface émettra également le signal pose_recentered afin que votre jeu puisse réagir en conséquence.

Note

Tous les autres éléments suivis XR tels que les contrôleurs ou les ancrages seront également ajustés en conséquence.

Avertissement

Vous ne devriez pas appeler center_on_hmd quand vous utilisez cet espace de référence.

Stage

L'espace de référence Stage (Estrade) est notre espace de référence par défaut et place notre point d'origine au centre de notre espace de jeu. Pour les environnements d'exécution XR qui vous permettent d'établir une limite du gardien, cet emplacement et son orientation sont souvent définies par l'utilisateur. D'autres environnements d'exécution XR peuvent décider du placement de ce point par d'autres moyens. C'est cependant un point stationnaire dans le monde réel.

Cet espace de référence est la meilleure option pour les jeux à l'échelle de la pièce où l'utilisateur est censé marcher autour d'un espace plus grand, ou pour les jeux où il y a un besoin de changer entre les modes de jeu. Voir Échelle de la pièce pour plus d'informations.

Lorsque l'utilisateur active l'option recentrage sur son casque, dont la méthode est différente selon les environnements d'exécution XR, l'environnement d'exécution XR ne changera pas le point d'origine. La OpenXRInterface émettra le signal pose_recentered et il appartient au jeu de réagir correctement. Ne pas le faire empêchera votre jeu d'être accepté dans divers magasins.

Dans Godot, vous pouvez le faire en appelant la fonction center_on_hmd sur le XRServer :

  • Calling XRServer.center_on_hmd(XRServer.RESET_BUT_KEEP_TILT, false) will move the XRCamera3D node to the XROrigin3D node similar to the Local reference space.

  • Appeler XRServer.center_on_hmd(XRServer.RESET_BUT_KEEP_TILT, true) va déplacer le nœud XRCamera3D au-dessus du nœud XROrigin3D en gardant la hauteur du joueur, de manière semblable à l'espace de référence Local Floor.

Note

Tous les autres éléments suivis XR tels que les contrôleurs ou les ancrages seront également ajustés en conséquence.

Sol Local

L'espace de référence du sol local est semblable à l'espace de référence local car il positionne le point d'origine où le joueur est. Dans ce mode cependant la hauteur du joueur est maintenue. De même qu'avec l'espace de référence local, certains environnements d'exécution XR garderont cet emplacement au cours des sessions.

Il n'est donc pas garanti que le joueur sera debout sur le point d'origine, la seule garantie est qu'ils étaient debout là quand l'utilisateur s'est recentré pour la dernière fois. Le joueur est donc aussi libre de s'éloigner.

Cet espace de référence est la meilleure option pour les jeux où l'utilisateur est censé se tenir au même endroit ou pour les jeux en RA où les éléments d'interface de l'utilisateur sont liés au nœud d'origine et sont rapidement placés à l'emplacement du joueur lors du recentrage.

Lorsque l'utilisateur active l'option recentrage sur son casque, dont la méthode est différente selon l'environnement d'exécution XR, l'environnement d'exécution XR va déplacer la XRCamera3D au-dessus du nœud XROrigin3D mais en gardant la hauteur du joueur. La OpenXRInterface émettra également le signal pose_recentered afin que votre jeu puisse réagir en conséquence.

Avertissement

Faites attention à utiliser ce mode en combinaison avec le mouvement virtuel du lecteur. L'utilisateur se recentrant dans ce scénario peut être imprévisible à moins que vous n'annulez le mouvement lors de la manipulation du signal de recentrage. Cela peut même casser le jeu car l'effet dans ce scénario serait que le joueur se téléporte à n'importe quel emplacement abstrait où le point d'origine a été placé au cours du mouvement virtuel, y compris la capacité pour les joueurs de téléporter dans des endroits qui devraient être hors limites. Il vaut mieux utiliser le mode Stage dans ce scénario et limiter la réinitialisation à l'orientation seulement lorsqu'un signal pose_recentered est reçu.

Note

Tous les autres éléments suivis XR tels que les contrôleurs ou les ancrages seront également ajustés en conséquence.

Avertissement

Vous ne devriez pas appeler center_on_hmd quand vous utilisez cet espace de référence.

Mode de mélange d'environnement

Le mode de mélange d'environnement définit comment notre sortie rendue est mélangée avec "le monde réel" à la condition que ce soit supporté par le casque.

  • Opaque signifie que notre sortie occulte le monde réel, nous sommes en mode RV.

  • Additive signifie que notre sortie est ajoutée au monde réel, c'est un mode en RA où les optiques ne nous permettent pas de masquer pleinement le monde réel (par exemple sur Hololens),

  • Alpha signifie que notre production est mélangée avec le monde réel en utilisant la sortie alpha (la fenêtre d'affichage devrait avoir un arrière-plan transparent activé), c'est un mode de RA où les optiques peuvent masquer pleinement le monde réel (Magic Leap, tous les appareils avec du passthrough, etc...).

Si un mode n'est pas pris en charge par le casque, le premier mode disponible sera sélectionné.

Note

Certains appareils OpenXR ont des systèmes séparés pour activer/désactiver le passthrough. À partir de Godot 4.3, sélectionner le mode de mélange alpha effectuera également ces étapes supplémentaires. Cela nécessite que le dernier plugin fournisseur soit installé.

Niveau de fovéation

Définit le niveau de fovéation utilisé lors du rendu à condition que cette fonctionnalité soit supportée par le matériel utilisé. La fovéation est une technique où le plus loin du centre de la vue nous rendons le contenu, la basse sera la résolution à laquelle nous rendons. La plupart des environnements d'exécution XR ne supportent que le fovéation fixe, mais certains prendront en compte le suivi des yeux et utiliseront le point focal pour cela.

The higher the level, the better the performance gains, but also the more reduction in quality there is in the user's peripheral vision.

Note

Moteur de rendu Compatibilité seulement, pour les moteurs de rendu Mobile et Forward+, définissez la propriété vrs_mode sur Viewport à VRS_XR.

Avertissement

Cette fonctionnalité est désactivée si des effets de post-traitement sont utilisés, comme le glow, le flou lumineux ou le DOF.

Fovéation Dynamique

Lorsque cette option est activé, le niveau de fovéation sera réglé automatiquement en fonction de la charge GPU actuelle. Il sera ajusté entre low (bas) et le niveau de fovéation choisi dans le réglage précédent. Il est donc préférable de combiner ce réglage avec le niveau de fovéation fixé à haut (high).

Note

Compatibilité de rendu uniquement

Soumettre le tampon de profondeur

Si activé un tampon de profondeur fourni par OpenXR sera utilisé lors du rendu et soumis avec l'image rendue. L'environnement d'exécution XR peut l'utiliser pour une reprojection améliorée.

Note

Activer cette fonctionnalité va désactiver le support du stencil durant le rendu. Peu d'environnements d'exécution XR utilisent ceci, il est conseillé de laisser ce réglage désactivé à moins qu'il fournit des avantages notables pour votre cas d'utilisation.

Alerte de démarrage

Si cela est activé, cela entraînera un message d'alerte présenté à l'utilisateur si OpenXR ne démarre pas. Nous ne recevons pas toujours de commentaires du système XR quant à la raison pour laquelle le démarrage échoue. Si nous le faisons, nous l'écrivons dans la console. Les raisons communes de défaillance sont :

  • Aucun environnement d'exécution OpenXR n'est installé sur le système hôte.

  • L'environnement d’exécution OpenXR WMR de Microsoft est actuellement actif, qui ne supporte que DirectX et échouera si OpenGL ou Vulkan est utilisé.

  • SteamVR est utilisé mais aucun casque n'est connecté/allumé.

Désactivez ceci si vous supportez un mode de repli dans votre jeu afin qu'il puisse être joué en mode bureau quand aucun casque VR n'est connecté, ou si vous manipulez la condition de défaillance vous-même en vérifiant OpenXRInterface.is_initialized().

Extensions

Cette sous-section vous permet d'activer diverses extensions OpenXR optionnelles. Gardez à l'esprit que les extensions ne fonctionneront que si le runtime OpenXR (SteamVR, Oculus, etc) avec lequel le projet est exécuté les supporte.

Debug Utils

Activer ceci loggera les messages de débogage du runtime XR.

Types de message de débogage

This allows you to choose which debug messages are logged.

Frame Synthesis

When enabled, provided it's supported by the XR runtime, lower resolution motion vector and depth buffers are rendered and provided to the XR runtime. The XR runtime can now inject reprojection frames and compensate for lower framerates.

It currently has the following limitations:

  • Ne fonctionne PAS dans le moteur de rendu Forward+.

  • Ne fonctionne qu'avec le rendu stéréo.

Suivi des mains

Cela permet l'extension de suivi des mains lorsque cela est supporté par l'appareil. C'est activé par défaut pour des raisons historiques. L'extension de suivi des mains permet d'accéder aux données qui vous permettent de visualiser les mains de l'utilisateur avec des positions de doigt correctes. Selon les capacités de la plate-forme, les données de suivi des mains peuvent être inférées des entrées du contrôleur, proviennent de gants de données, proviennent de capteurs optiques de suivi des mains ou de toute autre source applicable.

Si votre jeu supporte uniquement les contrôleurs, cela devrait être désactivé.

See the page on hand tracking for additional details.

Hand Tracking Unobstructed Data Source

Activer ceci signifie que le suivi des mains peut utiliser la position exacte des doigts, habituellement ce qu'une caméra du casque voit.

Hand Tracking Controller Data Source

Activer ceci signifie que le suivi des mains peut utiliser le contrôleur lui-même, et inférer où sont les doigts selon les entrées et les capteurs du contrôleur.

Profil d'interaction de main

Activer cette extension permet l'utilisation de deux nouvelles poses de suivi des mains. La pose "pinch" (litt. pincer) qui est l'emplacement entre le pouce et l'index pointant vers l'avant, et la pose "poke" (litt. piquer) qui est à la pointe de l'index.

Cela permet également 3 autres entrées basées sur des gestes. "Pinch", quand l'utilisateur pince son pouce et son index ensemble. Aim activation (litt. activation de la visée), lorsque le doigt d'index est complètement étendu. Et Grasps (litt. saisir), quand l'utilisateur fait un poing.

Lorsqu'un profil d'interaction de main et un profil d'interaction de contrôleur sont fournis, le runtime changera entre les profils en fonction de l'utilisation du suivi optique ou de si l'utilisateur tient un contrôleur.

Si seulement un profil d'interaction de la main est fourni, tout runtime devrait utiliser l'interaction des mains même si un contrôleur est tenu.

Spatial Entities

Cette extension et ses paramètres sont utilisés pour obtenir et interagir avec des informations sur l'environnement réel de l'utilisateur. Vous pouvez trouver des informations plus détaillées sur la façon dont elle fonctionne sur la page des entités spatiales.

Interaction avec le regard

Cela permet l'extension d'interaction avec le regard lorsque cela est supporté par l'appareil. Lorsqu'elle est activée, nous obtiendrons un retour du suivi des yeux grâce à une pose située entre les yeux de l'utilisateur orientée dans la direction où l'utilisateur regarde. Ce sera une orientation unifiée.

Pour utiliser cette fonctionnalité, vous devez modifier votre carte d'action et ajouter une nouvelle pose action, disons eye_pose. Ajoutez maintenant un nouveau profil d'interaction pour l'interaction avec le regard et mappez l'eye_pose :

../../_images/openxr_eye_gaze_interaction.webp

N'oubliez pas de sauvegarder !

Ajoutez ensuite un nouveau nœud XRController3D à votre nœud d'origine et définissez sa propriété tracker sur /user/eyes_ext et définissez sa propriété pose sur eye_pose.

Maintenant, vous pouvez ajouter des choses à ce nœud de contrôleur comme un raycast, et contrôler des choses avec vos yeux.

Render Models

Cette extension est utilisée pour demander au runtime XR les ressources 3D du matériel utilisé, habituellement un contrôleur, ainsi que la position de ce matériel. Vous trouverez un guide détaillé sur la façon de l'utiliser ici.

Modificateurs de liaison

Ceux-ci contrôle si des modificateurs de liaison peuvent être utilisés ou non. Les modificateurs de liaison sont utilisés pour appliquer des valeurs de seuil ou de décalage. Vous pouvez trouver des informations sur la façon de les utiliser et les configurer sur la page de l'action map XR ici.

Analog Threshold

Permet des modificateurs de fixation de seuil analogique.

Dpad Binding

Permet les modificateurs de liaison D-pad.