Qt Quick 3D - XR Freeform Teleportation Beispiel

Zeigt, wie man eine einfache Fortbewegung in Qt Quick 3D XR implementiert.

Überblick

Dieses Beispiel zeigt, wie man sich mit Hilfe eines einfachen Freiform-Teleportationssystems, einer nicht-kontinuierlichen Form der Bewegung, zu Orten in der virtuellen Umgebung bewegen kann.

Steuerelemente

Verwenden Sie zur Navigation den Thumbstick auf dem rechten Controller:

  • Drücken Sie den Stick nach vorne, um zu zielen, und lassen Sie ihn los, um sich zu teleportieren.
  • Bewegen Sie den Stick seitwärts, um sich zu drehen.

Umsetzung

Die Teleportationslogik ist in der Komponente FreeformTeleporter implementiert. Diese befindet sich in dem separaten Unterprojekt xr_shared, so dass Sie sie leicht in anderen Projekten wiederverwenden können.

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 hat die folgenden Eigenschaften, die eingestellt werden müssen:

QtObject xrView

Die Eigenschaft xrView ermöglicht den Zugriff auf die eingebaute Strahlenauslese von XrView. Sie können jedes Objekt verwenden, das eine rayPick Methode implementiert. Zum Beispiel kann ein View3D für das Prototyping nützlich sein.

Node originNode

Die Eigenschaft originNode gibt den Knoten an, den der Freeform-Teleporter manipulieren wird. In XR wird die künstliche Fortbewegung durch das Verschieben des XrOrigin durchgeführt. Wir werden daher den xrOrigin unseres XrView als originNode verwenden.

Node cameraNode

Die Eigenschaft cameraNode gibt die Position der Kamera an. Beim Drehen definiert sie das Zentrum der Drehung. Beim Teleportieren definiert sie die Position, die über dem ausgewählten Ort platziert wird. In diesem Beispiel verwenden wir die verfolgte XrCamera, die wir zuvor erstellt haben.

Hinweis: In XR definiert die XrOrigin die Beziehung zwischen der Szene und dem Referenzraum des Benutzers. Dieser Referenzraum ist normalerweise im physischen Raum um den Benutzer herum verankert. Wenn Sie die Position von XrOrigin ändern, ändert sich die Zuordnung von physischen Orten zu Szenenkoordinaten. Die XrCamera verfolgt die Position des Kopfes des Benutzers. Wenn sich der Benutzer physisch bewegt, ändern sich die Position und die Ausrichtung von XrCamera relativ zu XrOrigin.

Node beamHandle

Die Eigenschaft beamHandle ist der Knoten, der als Startpunkt für den Teleportationsstrahl verwendet wird. In diesem Beispiel verwenden wir den rechten Controller als beamHandle.

Beispielprojekt @ code.qt.io

Siehe auch Locomotion in Qt Quick 3D Xr.

© 2025 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.