Sur cette page

Qt Quick Exemple de téléportation libre en 3D - XR

Illustre comment mettre en œuvre un système de déplacement simple dans l'environnement 3D XR d'Qt Quick.

Salle quadrillée avec un arc de téléportation vert et un marqueur de cible

Présentation

Cet exemple montre comment se déplacer vers différents endroits de l’environnement virtuel à l’aide d’un système simple de téléportation libre, une forme de déplacement non continue.

Commandes

Pour naviguer, utilisez le joystick du contrôleur droit :

  • Poussez le stick vers l'avant pour viser, puis relâchez-le pour vous téléporter.
  • Déplacez le joystick latéralement pour pivoter.

Implémentation

La logique de téléportation est implémentée dans le composant « FreeformTeleporter ».

FreeformTeleporter {
    id: teleporter

    view: xrView
    originNode: xrOrigin
    cameraNode: xrOrigin.camera
    beamHandle: xrRightController

    rotationTriggerValue: xrRightController.xValue
    teleportTriggerValue: xrRightController.yValue

    onDoTeleportation: (cameraOriginPosition)=> {
                           xrOrigin.position = cameraOriginPosition
                       }
    onDoRotation: (cameraOriginRotation, cameraOriginPosition)=> {
                      xrOrigin.rotation = cameraOriginRotation
                      xrOrigin.position = cameraOriginPosition
                  }
}

Le composant FreeformTeleporter dispose des propriétés suivantes qui doivent être configurées :

QtObject xrView

La propriété « xrView » donne accès à la fonction intégrée de sélection de rayons d’ XrView. Vous pouvez utiliser n’importe quel objet implémentant une méthode « rayPick ». Par exemple, un « View3D » peut s’avérer utile pour le prototypage.

Node originNode

La propriété ` originNode ` spécifie le nœud que le téléporteur de forme libre va manipuler. Dans XR, la locomotion artificielle s’effectue en déplaçant l’ XrOrigin. Nous utiliserons donc l’`xrOrigin` de notre ` XrView ` comme ` originNode`.

Node cameraNode

La propriété « cameraNode » fournit la position de la caméra. Lors d’une rotation, elle définit le centre de rotation. Lors d’une téléportation, elle définit la position qui sera placée à l’emplacement sélectionné. Dans cet exemple, nous utilisons l’ XrCamera suivi que nous avons créé précédemment.

Remarque : en XR, l’ XrOrigin définit la relation entre la scène et l’espace de référence de l’utilisateur. Cet espace de référence est généralement ancré à l’espace physique entourant l’utilisateur. Modifier la position de l’ XrOrigin modifie la manière dont les emplacements physiques sont mis en correspondance avec les coordonnées de la scène. L’ XrCamera suit la position de la tête de l’utilisateur. Lorsque l’utilisateur se déplace physiquement, la position et l’orientation de l’ XrCamera changent par rapport à l’ XrOrigin.

Node beamHandle

La propriété ` beamHandle ` correspond au nœud utilisé comme point de départ du faisceau de téléportation. Dans cet exemple, nous utilisons la manette droite comme `beamHandle`.

Exemple de projet sur code.qt.io

Voir également Locomotion dans Qt Quick 3D Xr.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.