En esta página

Qt Quick 3D - XR Ejemplo de teletransporte de forma libre

Demuestra cómo implementar una locomoción sencilla en Qt Quick 3D XR.

Sala cuadriculada con arco de teletransporte verde y marcador de objetivo

Visión general

Este ejemplo muestra cómo moverse a lugares en el entorno virtual utilizando un sistema simple de teletransportación de forma libre, una forma no continua de movimiento.

Controles

Para la navegación, utiliza el joystick del mando derecho:

  • Empuja el stick hacia delante para apuntar y suéltalo para teletransportarte.
  • Mueve el stick hacia los lados para girar.

Implementación

La lógica de teletransporte se implementa en el componente FreeformTeleporter. Éste se encuentra en el subproyecto separado xr_shared, por lo que puedes reutilizarlo fácilmente en otros proyectos.

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

El componente FreeformTeleporter tiene las siguientes propiedades que necesitan ser establecidas:

QtObject xrView

La propiedad xrView da acceso a la selección de rayos incorporada en XrView. Puede utilizar cualquier objeto que implemente un método rayPick. Por ejemplo, un View3D puede ser útil para la creación de prototipos.

Node originNode

La propiedad originNode especifica el nodo que el teletransportador de forma libre manipulará. En XR, la locomoción artificial se realiza moviendo el XrOrigin. Por lo tanto, utilizaremos el xrOrigin de nuestro XrView como el originNode.

Node cameraNode

La propiedad cameraNode proporciona la posición de la cámara. Al rotar, define el centro de rotación. Al teletransportarse, define la posición que se situará sobre la ubicación seleccionada. En este ejemplo, utilizamos el tracked XrCamera que creamos anteriormente.

Nota: En XR, el XrOrigin define la relación entre la escena y el espacio de referencia del usuario. Este espacio de referencia suele estar anclado al espacio físico que rodea al usuario. Si se cambia la posición de XrOrigin, cambiará el modo en que las ubicaciones físicas se asignan a las coordenadas de la escena. XrCamera sigue la posición de la cabeza del usuario. Cuando el usuario se mueve físicamente, la posición y orientación de XrCamera cambian con respecto a XrOrigin.

Node beamHandle

La propiedad beamHandle es el nodo utilizado como punto de inicio del haz de teletransporte. En este ejemplo, utilizamos el controlador derecho como beamHandle.

Proyecto de ejemplo @ code.qt.io

Vea también Locomoción en 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.