Guía de desarrollo de espacios Snapdragon (6)


5.4.2 Directrices QCHT

5.4.2.1 Descripción general del seguimiento manual

Por favor agregue una descripción de la imagen.
XR representa cómo la próxima generación interactúa con el mundo. La solución proporciona una plataforma de software de reconocimiento de gestos y seguimiento de manos independiente del hardware para impulsar soluciones inmersivas XR de última generación.

El propósito del seguimiento manual es:

  • Proporciona un seguimiento manual POV en primera persona preciso y de baja latencia
  • Reconocer un conjunto de gestos comunes
  • Integre directamente con cámaras y sensores integrados
  • Soporte para diferentes hardware y sistemas operativos.

El componente de seguimiento manual dentro del complemento Snapdragon Spaces proporciona las siguientes características:

  • Detección y seguimiento de manos
  • Reconocimiento de gestos (agarrar, pellizcar, abrir)

El paquete personalizado Qualcomm Hand Tracking Interaction (QCHTI) en el paquete para desarrolladores proporciona la siguiente funcionalidad adicional:

  • Visualiza la malla de la mano.
  • Manejo de interacciones (raycasting, chasquido, retroalimentación de fuerza virtual)
  • Interacción avanzada con retroalimentación háptica automática compensada (focalización, selección, manipulación)

5.4.2.2 Generalidades

Las funciones de seguimiento manual, como el montaje de mallas manuales y componentes de interacción, no están incluidas en el paquete principal de Snapdragon Spaces, pero se incluyen como archivos tarball en paquetes separados. Se puede importar de la misma manera que el paquete principal, como se describe en la documentación de Unity .

Primero, instale el paquete Snapdragon Spaces (que se explica aquí). La versión mínima requerida para el seguimiento manual es 0.6.0. Luego, importe el siguiente paquete, que se encuentra en la misma carpeta que el paquete principal de Snapdragon Spaces.

ADVERTENCIA
Los permisos de la cámara para la aplicación Spaces Services deben estar habilitados como se describe aquí para que el seguimiento manual funcione correctamente.

QCHT Unity Interacción 4 (Versión 4.0.0)

Este paquete gestiona el subsistema de seguimiento manual, las conexiones OpenXR y los eventos del ciclo de vida. También incluye dispositivos portátiles e interacciones específicas basadas en XRIT, como lejos y cerca.

Puede explorar la escena de ejemplo de Hand Tracking haciendo clic en el botón Importar en el Administrador de paquetes y buscando archivos que se agregarán directamente a la carpeta Activos.

Configuración básica de la escena

Sesión AR y origen de la sesión AR
Si lo desea, el seguimiento manual también admite la sesión AR y el origen de la sesión AR de AR Foundation 4.X, como se describe aquí.

origen XR

Primero, cree un origen XR en su escena como se describe aquí (se abre en una ventana nueva).

Después de crear el objeto del juego XR Origin, expanda su jerarquía para ver el controlador izquierdo y el controlador derecho.

Por favor agregue una descripción de la imagen.

Cada uno de estos dos objetos del juego contiene un componente de controlador XR, que de forma predeterminada no está asignado a ninguna acción de entrada. Estos dos componentes se pueden quitar en este punto ya que no se están utilizando.

Luego, agregue el componente XR Hand Tracking Manager en el objeto de juego XR Origin (o AR Session Origin).

Por favor agregue una descripción de la imagen.

Administrador de seguimiento manual XR

SUGERENCIA
Se puede crear una instancia de XR Hand Tracking Manager mediante código utilizando la API pública estática de la clase. Consulte API de XR Hand Tracking Manager. Administrador de seguimiento manual GetOrCreateXR

Este componente es necesario para gestionar el subsistema de seguimiento manual. Actualiza los datos de seguimiento de la mano en tiempo de ejecución y rastrea la mano del usuario en XR Origin al que está conectado el componente (es compatible con XR Origin y AR Session Origin). En tiempo de ejecución, el administrador de seguimiento de manos creará una instancia de los prefabricados de la mano izquierda y derecha, habilitando y deshabilitando instancias en las que la capa de seguimiento de manos Open XR rastrea o elimina el seguimiento de la mano.

Agregue un Administrador de seguimiento de manos a la escena haciendo clic derecho en la jerarquía de la escena y seleccionando QCHT > Administrador de seguimiento de manos.

Por favor agregue una descripción de la imagen.

En el emulador del editor.

Habilite el simulador de dispositivo XR Interaction Toolkit (se abre en una ventana nueva) Para la simulación, habilite el subsistema de simulación en la sección Simulación de seguimiento manual de la configuración del proyecto de Unity.

Por favor agregue una descripción de la imagen.
Luego, habilite Usar XR Device Simulator en su escena en la sección XR Interaction Toolkit de la configuración del proyecto.

Advertencia
Esta configuración debe desactivarse antes de que la aplicación pueda compilarse en la plataforma de destino.

Por favor agregue una descripción de la imagen.

Para aprender a utilizar el emulador, consulte la documentación del emulador de dispositivo XR Interaction Toolkit (se abre en una ventana nueva).

Consejo
No olvide desactivar "Usar el emulador de dispositivo XR en escena" antes de crear el proyecto en la plataforma de destino.
Al reproducir una escena en el editor, puedes cambiar rápidamente de la cabeza a la mano izquierda/derecha presionando la tecla Tab del teclado.

Por favor agregue una descripción de la imagen.
API del administrador de seguimiento manual XR

estacionario describir
GameObject predeterminadoLeftHandPrefab Se refiere a la casa prefabricada para zurdos predeterminada en la carpeta de activos. Paquetes > Prefabricados > Recursos > QualcommHandLeft
GameObject DefaultRightHandPrefab Se refiere a la casa prefabricada derecha predeterminada en la carpeta de recursos. Paquetes > Prefabricados > Recursos > QualcommHandRight
XRHandTrackingManager InstanciarHandTrackingManager() Crear una instancia del administrador de seguimiento de manos con la prefabricación de manos predeterminada
XRHandTrackingManager GetOrCreate(GameObject leftHandPrefab, GameObject rightHandPrefab) Obtenga un administrador de seguimiento de manos existente o cree un administrador de seguimiento de manos si la casa prefabricada proporcionada en el parámetro no existe
void Destroy (administrador de XRHandTrackingManager) Destruye la instancia del administrador de seguimiento de manos dada o intenta encontrar una para destruirla si existe.
no estático describir
GameObject LeftHandPrefab El objeto prefabricado izquierdo del que se creará una instancia.
GameObject RightHandPrefabricado La casa prefabricada adecuada que será instanciada
void ActualizarManoIzquierda() Si la casa prefabricada ha cambiado, regenera el objeto izquierdo.
anular ActualizarManoDerecha() Regenera el objeto correcto si la casa prefabricada ha cambiado.
void ToggleLeftHand(bool visible) Alternar visibilidad de la mano izquierda
void ToggleRightHand(bool visible) alternar visibilidad a la derecha
void SetLeftHandSkin (piel de piel de mano) Si el objeto de la mano se puede personalizar, configure el diseño de la mano izquierda
void SetRightHandSkin (piel de piel de mano) Establece la apariencia de la mano derecha si el objeto de la mano se puede personalizar
anular StartHandTracking() Inicie el subsistema de seguimiento manual manualmente, si está presente en el administrador del subsistema.
anular StopHandTracking() Detenga manualmente el subsistema de seguimiento de manos si existe en el administrador del subsistema.

Subsistema de seguimiento manual XR

estacionario describir
XRHandTrackingSubsystem GetSubsystemInManager() Devuelve la primera instancia del subsistema de seguimiento manual XR en el administrador del subsistema (si existe)
no estático describir
Estado de seguimiento manual Obtenga el estado del backend de seguimiento manual. Puede estar inactivo, en ejecución o con error
Mano Izquierda datos de la mano izquierda
Mano Derecha datos de la mano derecha
Mano GetHand(XrHandedness handedness) Adquirir datos de la mano dominante
acción del evento OnHandTracked Si ya se ha seguido una mano para este cuadro, levante
evento Acción OnHandUntracked Si no se sigue la mano para este cuadro, levante
acción del evento OnHandsUpdated Aumenta cuando se actualizan los datos de ambas manos.

estructura de la mano

no estático describir
XrDalidadDalidad Acostúmbrate con las manos. Puede ser XR_HAND_LEFT o XR_HAND_RIGHT
Espacio XrSpace Espacio para almacenar datos federados. Puede ser XR_HAND_LOCAL o XR_HAND_WORLD (en XR Origin)
bool está rastreado Verdadero si la mano está siendo rastreada actualmente
Gesto XrHandGesture Gesto detectado por el backend de seguimiento manual
flotador FlipRatio Cuando la dirección de la palma es opuesta o orientada hacia la posición del HMD, la relación de giro de la mano -1f es 1f respectivamente
escala flotante 手秤从.5f到1.6f
Pose Root 手根姿势(相当于XR Origin中的手腕中心姿势)
Pose[] Joints 手部关节姿势

手部追踪控制器

场景架构

创建后XR Hand Tracking Manager,会在左侧和右侧字段中自动设置两个预制件。这些预制件仅用于手动可视化目的。
手部游戏对象具有Hand Rigged Visualizer和Hand Driver组件,负责可视化手部网格并更新Skinned Mesh的手部关节变换。

为了实现远端交互和近端交互等交互,必须添加手部自定义 XRIT 控制器。

通过在场景的层次结构中右键单击并选择 QCHT > 手部跟踪控制器,将手部跟踪控制器游戏对象添加到场景中。Por favor agregue una descripción de la imagen.
手部跟踪控制器的两个实例会自动添加为XR Origin(或AR Session)的子级。

Por favor agregue una descripción de la imagen.

每个控制器都通过预定义的设置和输入操作绑定聚合了XR Ray Interactor、XR Poke Interactor和XR Direct Interactor组件。这些组件是高度可配置的。

XR 手持控制器

XR Hand Controller组件是XR Action Base Controller的自定义实现 (打开新窗口)来自 XR 交互工具包包。XR 手控制器负责处理来自直接映射到底层手部跟踪子系统的新 Unity 输入系统的输入操作。XR Action Base Controller的自定义实现定义了额外的抓取操作和控制器的用手习惯,这对于过滤交互非常有用。

Por favor agregue una descripción de la imagen.

5.4.2.3 互动方式

远端互动

Por favor agregue una descripción de la imagen.

要与远处(远端)物体交互,用户可以使用XRIT 的XR Ray Interactor组件。

要使用远端交互功能,用户必须将手放入耳机的视野中,并且会看到一条光线,使他们能够瞄准想要与之交互的对象。射线末端的十字线允许用户瞄准并提高交互的精度。捏合手势激活选择以操纵目标对象。

描述

首先,确保场景的手部跟踪初始设置已完成。

XR控制器指针

XRControllerPointerLeft和XRControllerPointerRight预制件位于 Packages > QCHT Unity Interactions > Prefabs > Interactions > Distal 文件夹中,应成为XR Origin GameObject中Camera Offset GameObject 的子级。

Por favor agregue una descripción de la imagen.

通过更改每只手的 XR 射线交互器组件来调整射线投射参数。请参阅 Unity 的文档以了解有关XR Interactor 的更多信息

默认情况下,XRController 控制每只手的脚本具有由 设定的位置pointerPosition和由 设定的旋转pointerRotation。这些由XRHandTrackingManager计算。默认情况下,“选择”和“UI 按下”操作设置为triggerPressed(即“捏合”手势)。

Por favor agregue una descripción de la imagen.
如本示例所示,第二个和第三个动作可以映射到另一个设备,作为手部跟踪的后备。由于新的输入系统兼容性,可以使用完全相同的代码轻松支持不同的输入模式。

捕捉音量

使用XR 可交互快照卷 XRIT 组件可提高光线投射精度和效率。

近端交互

Por favor agregue una descripción de la imagen.
近端交互是指与靠近手部的虚拟对象进行交互。

XR直接交互器
由于 QCHT Interactions 包基于 XRIT,因此XR Direct Interactor组件可用于对象操作。

XR直接交互器 负责触发任何可交互对象上的交互。它是 XRIT 的标准组件,并且具有高度可配置性。

Los prefabricados manuales HandMainLeftXRIT y HandMainRightXRIT preconfigurados con componentes XR Direct Interactor se pueden encontrar en la carpeta Paquetes > QCHT Unity Interactions > Prefabs > Hands.

XR Grab Interactables
XR Direct Interactables desencadena interacciones con XR Grab Interactables . Es un componente estándar de XRIT y es altamente configurable.

XR Poke Interactor
QCHT Interactions soporta el XR Poke Interactor mediante una posición de empuje colocada en la punta del dedo índice. Es un componente estándar de XRIT y es altamente configurable.

Supongo que te gusta

Origin blog.csdn.net/weixin_38498942/article/details/132458979
Recomendado
Clasificación