Sur cette page

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

Démontre comment implémenter une locomotion simple dans Qt Quick 3D XR.

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

Vue d'ensemble

Cet exemple montre comment se déplacer vers des endroits de l'environnement virtuel à l'aide d'un simple système de téléportation de forme libre, une forme de mouvement non continu.

Commandes

Pour la navigation, utilisez le manche à balai de la manette droite :

  • Poussez le stick vers l'avant pour viser et relâchez-le pour vous téléporter.
  • Déplacez le stick latéralement pour tourner.

Implémentation

La logique de téléportation est implémentée dans le composant FreeformTeleporter. Celui-ci se trouve dans le sous-projet distinct xr_shared, de sorte que vous pouvez facilement le réutiliser dans d'autres projets.

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 possède les propriétés suivantes qui doivent être définies :

QtObject xrView

La propriété xrView donne accès au ray-picking intégré de XrView. Vous pouvez utiliser n'importe quel objet qui implémente une méthode rayPick. Par exemple, un View3D peut être utile pour le prototypage.

Node originNode

La propriété originNode spécifie le nœud que le téléporteur freeform manipulera. Dans XR, la locomotion artificielle est réalisée en déplaçant le XrOrigin. Nous utiliserons donc le xrOrigin de notre XrView comme originNode.

Node cameraNode

La propriété cameraNode fournit la position de la caméra. En cas de rotation, elle définit le centre de rotation. Lors d'une téléportation, elle définit la position qui sera placée au-dessus de l'emplacement sélectionné. Dans cet exemple, nous utilisons le site XrCamera que nous avons créé précédemment.

Remarque : dans XR, 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é dans l'espace physique autour de l'utilisateur. Le fait de modifier la position du site XrOrigin change la façon dont les emplacements physiques sont représentés dans les coordonnées de la scène. Le site XrCamera suit la position de la tête de l'utilisateur. Lorsque l'utilisateur se déplace physiquement, la position et l'orientation de XrCamera changent par rapport à XrOrigin.

Node beamHandle

La propriété beamHandle est le nœud utilisé comme point de départ du faisceau de téléportation. Dans cet exemple, nous utilisons le contrôleur droit comme beamHandle.

Exemple de projet @ code.qt.io

Voir aussi 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.