Compartir a través de


Uso de Leap Motion y Ultraleap : MRTK2

Se requiere un controlador de movimiento leap para usar este proveedor de datos.

El proveedor de datos Leap Motion permite el seguimiento manual articulado para VR y podría ser útil para crear prototipos rápidamente en el editor. El proveedor de datos se puede configurar para usar el controlador de movimiento Leap montado en un auricular o colocado en un escritorio boca arriba.

LeapMotionIntroGif

Este proveedor se puede usar en el editor y en el dispositivo mientras se encuentra en la plataforma independiente. También se puede usar en el editor mientras se encuentra en la plataforma para UWP, pero NO en una compilación de UWP.

Versión de MRTK Versiones admitidas de los módulos de Leap Motion Unity
2.6.x 4.5.0, 4.5.1
2.7.0 - 2.7.2 4.5.0, 4.5.1, 4.6.0, 4.7.0, 4.7.1, 4.8.0
2.7.3 4.5.0, 4.5.1, 4.6.0, 4.7.0, 4.7.1, 4.8.0, 4.9.1 (vea la nota a continuación)

Nota:

Los módulos de Unity 4.9.1 requieren el servicio de seguimiento de Gemini 5.2 o superior. El complemento de Unity V4.9.1 solo se admite oficialmente en Unity 2019. Consulte las notas de la versión para la versión 4.9.1.

Se cambió el nombre de los módulos de Unity al complemento de Unity en V5.0.0.

Versión de MRTK Versiones de complementos de Ultraleap Unity admitidas
2.8.0 5.3.0 (véase la nota siguiente)

Nota:

Las versiones 5.0.0, 5.1.0 y 5.2.0 del complemento de Unity no se admiten en ninguna versión de MRTK. Se recomienda a los usuarios actualizar a la versión 5.3.0. Unity Plugin 5.3.0 requiere el servicio de seguimiento de Gemini 5.2 o superior.

Uso del seguimiento de manos de Leap Motion (by Ultraleap) en MRTK

  1. Importación de MRTK y los módulos de Leap Motion Unity o el complemento unity

    • Instale el software leap motion tracking más reciente para obtener el servicio de seguimiento si aún no está instalado.
    • Importe el paquete Microsoft.MixedReality.Toolkit.Foundation en el proyecto de Unity.
    • Descargue e importe la versión más reciente del complemento Leap Motion Unity Modules /Unity en el proyecto.
      • Para módulos de Unity: solo importe el paquete principal dentro del proyecto.
      • Para el complemento de Unity: solo importa el paquete de seguimiento dentro del proyecto. Por ahora solo se admiten .unitypackages.

    Importante

    SelectionMode.OnlyUserModifiable en desuso de Unity después de Unity 2019.4.19, lo que da como resultado el siguiente error procedente del script ultraleap Hotkeys.cs: Assets\Plugins\LeapMotion\Core\Editor\Hotkeys.cs(24,91): error CS0619: "SelectionMode.OnlyUserModifiable" está obsoleto: "OnlyUserModifiable" está obsoleto. En su lugar, use "Editable". (UnityUpgradeable) -> Editable'.

    Para resolver los problemas, cambie SelectionMode.OnlyUserModifiable a SelectionMode.Editable en el script de Hotkeys.cs ubicado en Plugins/LeapMotion/Core/Editor/Hotkeys.cs.

  2. Integración del complemento Leap Motion Unity Modules /Unity con MRTK

    • Una vez que los módulos de Unity o el complemento unity estén en el proyecto, vaya a Mixed Reality>Toolkit>Utilities>Leap Motion>Integrate Leap Motion Unity Modules (Integrar módulos de Leap Motion Unity).

    Nota:

    La integración de los módulos de Unity en MRTK agrega 10 definiciones de ensamblado al proyecto y agrega referencias a la definición de ensamblado Microsoft.MixedReality.Toolkit.Providers.LeapMotion . Asegúrese de que Visual Studio está cerrado.

    LeapMotionIntegration

  3. Adición del proveedor de datos leap motion

    • Creación de una nueva escena de Unity
    • Agregue MRTK a la escena; para ello, vaya a Mixed Reality Toolkit>Add to Scene and Configure
    • Seleccione el objeto de juego MixedRealityToolkit en la jerarquía y seleccione Copiar y personalizar para clonar el perfil de realidad mixta predeterminado.

    LeapMotionProfileClone

    • Seleccione el perfil de configuración de entrada .

    Perfil de configuración de entrada 1

    • Seleccione Clonar en el perfil del sistema de entrada para habilitar la modificación.

    LeapMotionInputProfileClone

    • Abra la sección Proveedores de datos de entrada , seleccione Agregar proveedor de datos en la parte superior y se agregará un nuevo proveedor de datos al final de la lista. Abra el nuevo proveedor de datos y establezca Type en Microsoft.MixedReality.Toolkit.LeapMotion.Input > LeapMotionDeviceManager.

    Leap Add Data Provider

    • Seleccione Clonar para cambiar la configuración predeterminada de Leap Motion.

    LeapDataProviderPreClone

    • El proveedor de datos leap motion contiene la LeapControllerOrientation propiedad que es la ubicación del controlador de movimiento leap. LeapControllerOrientation.Headset indica que el controlador está montado en un auricular. LeapControllerOrientation.Desk indica que el controlador se coloca plano en el escritorio. El valor predeterminado se establece en LeapControllerOrientation.Headset.

    • Cada orientación del controlador contiene propiedades de desplazamiento:

      • Las propiedades de desplazamiento de orientación de auriculares reflejan las propiedades de desplazamiento en el componente LeapXRServiceProvider. LeapVRDeviceOffsetMode tiene tres opciones: Predeterminado, Desplazamiento manual de la cabeza y Transformación. Si el modo de desplazamiento es Predeterminado, no se aplicará un desplazamiento al controlador de movimiento leap. El modo Desplazamiento manual del cabezal permite la modificación de tres propiedades: LeapVRDeviceOffsetYy LeapVRDeviceTiltXLeapVRDeviceOffsetZ . A continuación, los valores de propiedad de desplazamiento del eje se aplican a la ubicación predeterminada del controlador. El modo de desplazamiento transformar contiene la LeapVRDeviceOrigin propiedad Transform que especifica un nuevo origen para el controlador de movimiento Leap.

      • La orientación del escritorio contiene la LeapControllerOffset propiedad que define la posición de anclaje del salto de manos del escritorio. El desplazamiento se calcula en relación con la posición principal de la cámara y el valor predeterminado es (0,-0,2, 0,35) para asegurarse de que las manos aparecen delante y a la vista de la cámara.

        Nota:

        Las propiedades de desplazamiento del perfil se aplican una vez cuando se inicia la aplicación. Para modificar los valores durante el tiempo de ejecución, obtenga el proveedor de servicios Leap Motion del Administrador de dispositivos Leap Motion:

        LeapMotionDeviceManager leapMotionDeviceManager = CoreServices.GetInputSystemDataProvider<LeapMotionDeviceManager>();
        LeapXRServiceProvider leapXRServiceProvider = leapMotionDeviceManager.LeapMotionServiceProvider as LeapXRServiceProvider; 
        
    • EnterPinchDistance y ExitPinchDistance son los umbrales de distancia para la detección de gestos de pinchazo/pulsación de aire. El gesto de pellizcar se calcula midiendo la distancia entre la punta del dedo índice y la punta del pulgar. Para generar un evento on input down, el valor predeterminado EnterPinchDistance se establece en 0.02. Para generar un evento de entrada hacia arriba (que sale del pellizco), la distancia predeterminada entre la punta del dedo índice y la punta del pulgar es 0,05.

    LeapControllerOrientation: Auriculares (valor predeterminado)

    LeapHeadsetGif

    LeapHeadsetInspector

    LeapControllerOrientation:Escritorio

    LeapDeskGif

    LeapDeskInspector

  4. Prueba del proveedor de datos Leap Motion

    • Una vez agregado el proveedor de datos leap motion al perfil del sistema de entrada, pulse reproducir, mueva la mano delante del controlador de movimiento leap y verá la representación conjunta de la mano.
  5. Creación del proyecto

Obtener las articulaciones de las manos

La obtención de juntas mediante el proveedor de datos leap motion es idéntica a la recuperación de la articulación manual para una mano articulada MRTK. Para obtener más información, consulte Seguimiento de manos.

Con MRTK en una escena de Unity y el proveedor de datos leap motion agregado como proveedor de datos de entrada en el perfil del sistema de entrada, cree un objeto de juego vacío y adjunte el siguiente script de ejemplo.

Este script es un ejemplo sencillo de cómo recuperar la posición de la articulación de la palma en una mano leap motion. Una esfera sigue la mano de Leap izquierda mientras un cubo sigue a la derecha leap hand.

using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;
using Microsoft.MixedReality.Toolkit.Utilities;
using System.Collections.Generic;
using UnityEngine;

public class LeapHandJoints : MonoBehaviour, IMixedRealityHandJointHandler
{
    private GameObject leftHandSphere;
    private GameObject rightHandCube;

    private void Start()
    {
        // Register the HandJointHandler as a global listener
        CoreServices.InputSystem.RegisterHandler<IMixedRealityHandJointHandler>(this);

        // Create a sphere to follow the left hand palm position
        leftHandSphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
        leftHandSphere.transform.localScale = Vector3.one * 0.03f;

        // Create a cube to follow the right hand palm position
        rightHandCube = GameObject.CreatePrimitive(PrimitiveType.Cube);
        rightHandCube.transform.localScale = Vector3.one * 0.03f;
    }

    public void OnHandJointsUpdated(InputEventData<IDictionary<TrackedHandJoint, MixedRealityPose>> eventData)
    {
        if (eventData.Handedness == Handedness.Left)
        {
            Vector3 leftHandPalmPosition = eventData.InputData[TrackedHandJoint.Palm].Position;
            leftHandSphere.transform.position = leftHandPalmPosition;
        }

        if (eventData.Handedness == Handedness.Right)
        {
            Vector3 rightHandPalmPosition = eventData.InputData[TrackedHandJoint.Palm].Position;
            rightHandCube.transform.position = rightHandPalmPosition;
        }
    }
}

Sugerencia de flujo de trabajo del editor de Unity

El uso del proveedor de datos leap motion no requiere un casco de realidad virtual. Los cambios en una aplicación MRTK se pueden probar en el editor con las manos Leap sin auriculares.

Las manos leap motion aparecerán en el editor, sin un casco vr conectado. Si se establece en LeapControllerOrientationCasco, el controlador Leap Motion tendrá que ser sostenido por una mano con la cámara hacia delante.

Nota:

Si la cámara se mueve con las teclas WASD en el editor y es LeapControllerOrientationHeadset, las manos no seguirán a la cámara. Las manos solo seguirán el movimiento de la cámara si un casco vr está conectado mientras LeapControllerOrientation el auricular está configurado. Las manos leap seguirán el movimiento de la cámara en el editor si LeapControllerOrientation está establecido en Escritorio.

Eliminación de Leap Motion del proyecto

  1. Vaya a losmódulos de Leap Motion> Separados de Leap Motion Unity del kit de herramientas >de Mixed Reality
    • Deje que Unity se actualice como referencias en el archivo Microsoft.MixedReality.Toolkit.Providers.LeapMotion.asmdef en este paso.
  2. Cerrar Unity
  3. Cierre Visual Studio, si está abierto
  4. Abra Explorador de archivos y vaya a la raíz del proyecto de MRTK Unity.
    • Eliminar el directorio UnityProjectName/Library
    • Eliminar el directorio UnityProjectName/Assets/Plugins/LeapMotion
    • Eliminar el archivo UnityProjectName/Assets/Plugins/LeapMotion.meta
  5. Volver a abrir Unity

En Unity 2018.4, es posible que observe que los errores todavía permanecen en la consola después de eliminar la biblioteca y los recursos principales de Leap Motion. Si se registran errores después de volver a abrir, reinicie Unity de nuevo.

Errores comunes

Leap Motion no se ha integrado con MRTK

Para probar si los módulos de Leap Motion Unity se han integrado con MRTK:

  • Vaya a Mixed Reality Toolkit > Utilities > Leap Motion > Check Integration Status
    • Se mostrará una ventana emergente con un mensaje sobre si los módulos de Leap Motion Unity se han integrado con MRTK.
  • Si el mensaje indica que los recursos no se han integrado:
    • Asegúrese de que los módulos de Leap Motion Unity están en el proyecto.
    • Asegúrese de que se admite la versión agregada, consulte la tabla de la parte superior de la página para ver las versiones admitidas.
    • Pruebe Mixed Reality Toolkit > Utilities > Leap Motion > Integrate Leap Motion Unity Modules

Error al copiar HLAPI multijugador del ensamblado

Al importar los recursos principales de Leap Motion Unity, este error podría registrarse:

Copying assembly from 'Temp/com.unity.multiplayer-hlapi.Runtime.dll' to 'Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Runtime.dll' failed

Solución

  • Una solución a corto plazo es reiniciar Unity. Consulte el problema 7761 para obtener más información.

Escena de ejemplo de leap motion

La escena de ejemplo usa el perfil DefaultLeapMotionConfiguration y determina si el proyecto de Unity se ha configurado correctamente para usar el proveedor de datos Leap Motion.

La escena de ejemplo se encuentra en el paquete Microsoft.MixedReality.Toolkit.Examples del directorio MRTK/Examples/Demos/HandTracking/ .

Vea también