Auf dieser Seite

Qt Quick 3D - Beispiel für freie Teleportation in XR

Zeigt, wie man einfache Fortbewegung in „ Qt Quick 3D “ (XR) implementiert.

Rasterraum mit grünem Teleportationsbogen und Zielmarkierung

Übersicht

Dieses Beispiel zeigt, wie man sich mithilfe eines einfachen Freeform-Teleportationssystems – einer nicht-kontinuierlichen Bewegungsform – an Orte in der virtuellen Umgebung bewegen kann.

Steuerung

Verwenden Sie zur Navigation den Daumenstick am rechten Controller:

  • Drücke den Stick nach vorne, um zu zielen, und lasse ihn los, um dich zu teleportieren.
  • Bewegen Sie den Stick seitwärts, um zu drehen.

Implementierung

Die Teleportationslogik ist in der Komponente „ FreeformTeleporter “ implementiert.

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
                  }
}

Die „FreeformTeleporter“-Komponente verfügt über die folgenden Eigenschaften, die festgelegt werden müssen:

QtObject xrView

Die Eigenschaft „ xrView “ ermöglicht den Zugriff auf die in „ XrView “ integrierte Ray-Picking-Funktion. Sie können jedes Objekt verwenden, das die Methode „ rayPick “ implementiert. Beispielsweise kann ein „ View3D “ für die Prototypenentwicklung nützlich sein.

Node originNode

Die Eigenschaft „ originNode “ gibt den Knoten an, den der Freeform-Teleporter manipulieren soll. In XR erfolgt die künstliche Fortbewegung durch die Bewegung des XrOrigin. Wir verwenden daher den xrOrigin unseres XrView als originNode.

Node cameraNode

Die Eigenschaft „ cameraNode “ gibt die Position der Kamera an. Bei Drehungen definiert sie den Drehpunkt. Beim Teleportieren definiert sie die Position, die über den ausgewählten Ort gesetzt wird. In diesem Beispiel verwenden wir den zuvor erstellten, getrackten „ XrCamera “.

Hinweis: In XR definiert die „ XrOrigin “ die Beziehung zwischen der Szene und dem Referenzraum des Benutzers. Dieser Referenzraum ist in der Regel am physischen Raum um den Benutzer herum verankert. Eine Änderung der Position des „ XrOrigin “ verändert die Art und Weise, wie physische Orte auf Szenenkoordinaten abgebildet werden. Der „ XrCamera “ verfolgt die Position des Kopfes des Benutzers. Wenn sich der Benutzer physisch bewegt, ändern sich Position und Ausrichtung des „ XrCamera “ relativ zum „ XrOrigin “.

Node beamHandle

Die Eigenschaft „ beamHandle “ ist der Knoten, der als Startpunkt des Teleportationsstrahls verwendet wird. In diesem Beispiel verwenden wir den rechten Controller als „beamHandle“.

Beispielprojekt @ code.qt.io

Siehe auch „Fortbewegung“in „ 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.