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