Utilisation de Leap Motion et Ultraleap — MRTK2

Un contrôleur Leap Motion est requis pour utiliser ce fournisseur de données.

Le Leap Motion Fournisseur de données permet le suivi de main articulé pour la réalité virtuelle et peut être utile pour le prototypage rapide dans l’éditeur. Le fournisseur de données peut être configuré pour utiliser le contrôleur Leap Motion monté sur un casque ou placé sur un visage de bureau.

LeapMotionIntroGif

Ce fournisseur peut être utilisé dans l’éditeur et sur l’appareil lors de la plateforme autonome. Il peut également être utilisé dans l’éditeur lors de la plateforme UWP, mais PAS dans une build UWP.

MRTK Version Versions des modules Leap Motion Unity prises en charge
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 (voir la note ci-dessous)

Notes

Les modules Unity 4.9.1 nécessitent le service de suivi Gemini 5.2 ou une version ultérieure. Le plug-in Unity V4.9.1 est officiellement pris en charge sur Unity 2019. Consultez les notes de publication pour la version 4.9.1.

Les modules Unity ont été renommés le plug-in Unity dans V5.0.0.

MRTK Version Versions de plug-in Ultraleap Unity prises en charge
2.8.0 5.3.0 (voir la note ci-dessous)

Notes

Les versions du plug-in Unity 5.0.0, 5.1.0 et 5.2.0 ne sont prises en charge dans aucune version de MRTK. Les utilisateurs sont recommandés pour effectuer une mise à niveau vers la version 5.3.0. Unity Plug-5.3.0 nécessite le service de suivi Gemini 5.2 ou une version ultérieure.

Utilisation du suivi des mains Leap Motion (par Ultraleap) dans MRTK

  1. Importation de MRTK et des modules Unity Leap Motion / Plug-in Unity

    • Installez le dernier logiciel Leap Motion Tracking pour obtenir le service de suivi s’il n’est pas déjà installé
    • Importez le package Microsoft.MixedReality.Toolkit.Foundation dans le projet Unity.
    • Téléchargez et importez la dernière version des modules Unity Leap Motion / Plug-in Unity dans le projet
      • Pour les modules Unity : importez uniquement le package Core dans le projet
      • Pour le plug-in Unity : importez uniquement le package de suivi dans le projet. Seuls les .unitypackages sont pris en charge pour l’instant.

    Important

    SelectionMode.OnlyUserModifiable de SelectionMode.OnlyUserModifiable après Unity 2019.4.19 qui entraîne l’erreur suivante provenant du script Ultraleap Hotkeys.cs : Assets\Plugins\LeapMotion\Core\Editor\Hotkeys.cs(24,91): erreur CS0619 : 'SelectionMode.OnlyUserModifiable' est obsolète : ''OnlyUserModifiable' est obsolète. Utilisez plutôt « Modifiable ». (UnityUpgradeable) -> Modifiable'.

    Pour résoudre les problèmes, remplacez SelectionMode.OnlyUserModifiable par SelectionMode.Editable dans le script Hotkeys.cs situé dans Plugins/LeapMotion/Core/Editor/Hotkeys.cs.

  2. Intégrer les modules Leap Motion Unity / Plug-in Unity à MRTK

    • Une fois que les modules Unity / plug-in Unity se trouvent dans le projet, accédez à Mixed Reality>Toolkit>Utilities>Leap MotionIntegrate Leap Motion> Modules Unity.

    Notes

    L’intégration des modules Unity à MRTK ajoute 10 définitions d’assembly au projet et ajoute des références à la définition d’assembly Microsoft.MixedReality.Toolkit.Providers.LeapMotion . Vérifiez que Visual Studio est fermé.

    LeapMotionIntegration

  3. Ajout de la Fournisseur de données Leap Motion

    • Créer une scène Unity
    • Ajouter MRTK à la scène en accédant à Mixed Reality Kit de ressources>Ajouter à la scène et configurer
    • Sélectionnez l’objet de jeu MixedRealityToolkit dans la hiérarchie, puis sélectionnez Copier et Personnaliser pour cloner le profil de réalité mixte par défaut.

    LeapMotionProfileClone

    • Sélectionner le profil de configuration d’entrée

    Input Configuration Profile 1

    • Sélectionnez Cloner dans le profil système d’entrée pour activer la modification.

    LeapMotionInputProfileClone

    • Ouvrez la section Fournisseurs de données d’entrée, sélectionnez Ajouter Fournisseur de données en haut, un nouveau fournisseur de données sera ajouté à la fin de la liste. Ouvrez le nouveau fournisseur de données et définissez le type sur Microsoft.MixedReality.Toolkit.LeapMotion.Input > LeapMotionDeviceManager

    Leap Add Data Provider

    • Sélectionnez Cloner pour modifier les paramètres Leap Motion par défaut.

    LeapDataProviderPreClone

    • La Fournisseur de données Leap Motion contient la LeapControllerOrientation propriété qui est l’emplacement du contrôleur de mouvement Leap. LeapControllerOrientation.Headset indique que le contrôleur est monté sur un casque. LeapControllerOrientation.Desk indique que le contrôleur est placé à plat sur le bureau. La valeur par défaut est définie sur LeapControllerOrientation.Headset.

    • Chaque orientation du contrôleur contient les propriétés de décalage :

      • Les propriétés de décalage d’orientation du casque reflètent les propriétés de décalage dans le composant LeapXRServiceProvider. Il LeapVRDeviceOffsetMode dispose de trois options : Par défaut, décalage manuel et transformation de tête. Si le mode de décalage est par défaut, un décalage n’est pas appliqué au contrôleur Leap Motion. Le mode Décalage de tête manuel permet la modification de trois propriétés : LeapVRDeviceOffsetYet LeapVRDeviceOffsetZLeapVRDeviceTiltX. Les valeurs de propriété offset de l’axe sont ensuite appliquées au placement du contrôleur par défaut. Le mode Décalage de transformation contient la LeapVRDeviceOrigin propriété Transform qui spécifie une nouvelle origine pour le contrôleur de mouvement Leap.

      • L’orientation du bureau contient la LeapControllerOffset propriété qui définit la position d’ancrage des mains de saut de bureau. Le décalage est calculé par rapport à la position principale de la caméra et la valeur par défaut est (0,-0.2, 0,35) pour vous assurer que les mains apparaissent devant et en vue de la caméra.

        Notes

        Les propriétés de décalage du profil sont appliquées une fois que l’application démarre. Pour modifier les valeurs pendant l’exécution, obtenez le fournisseur de services Leap Motion à partir du Gestionnaire de périphériques Leap Motion :

        LeapMotionDeviceManager leapMotionDeviceManager = CoreServices.GetInputSystemDataProvider<LeapMotionDeviceManager>();
        LeapXRServiceProvider leapXRServiceProvider = leapMotionDeviceManager.LeapMotionServiceProvider as LeapXRServiceProvider; 
        
    • EnterPinchDistance et ExitPinchDistance sont les seuils de distance pour la détection des mouvements de pincement/air. Le mouvement de pincement est calculé en mesurant la distance entre l’extrémité du doigt d’index et la pointe du pouce. Pour déclencher un événement d’entrée vers le bas, la valeur par défaut EnterPinchDistance est 0.02. Pour déclencher un événement d’entrée (sortie du pincement), la distance par défaut entre la pointe du doigt d’index et l’extrémité du pouce est de 0,05.

    LeapControllerOrientation: Casque (par défaut)

    LeapHeadsetGif

    LeapHeadsetInspector

    LeapControllerOrientation: Bureau

    LeapDeskGif

    LeapDeskInspector

  4. Test de la Fournisseur de données Leap Motion

    • Après que Leap Motion Fournisseur de données a été ajouté au profil système d’entrée, appuyez sur la lecture, déplacez votre main devant le contrôleur Leap Motion et vous devez voir la représentation conjointe de la main.
  5. Création de votre projet

    • Accédez à Fichiers > Paramètres de génération
    • Seules les builds autonomes sont prises en charge si vous utilisez le Fournisseur de données Leap Motion.
    • Pour obtenir des instructions sur l’utilisation d’un casque Windows Mixed Reality pour les builds autonomes, consultez Création et déploiement de MRTK sur des casques WMR (autonome).

Obtention des articulations de la main

L’obtention de jointures à l’aide de l’Fournisseur de données Leap Motion est identique à celle d’une main articulée MRTK. Pour plus d’informations, consultez Suivi des mains.

Avec MRTK dans une scène unity et l’Fournisseur de données Leap Motion ajouté en tant que Fournisseur de données d’entrée dans le profil système d’entrée, créez un objet de jeu vide et joignez l’exemple de script suivant.

Ce script est un exemple simple de la façon de récupérer la pose de la jointure de paume dans une main Leap Motion. Une sphère suit la main Leap gauche alors qu’un cube suit la main droite Leap.

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

Conseil du flux de travail de l’éditeur Unity

L’utilisation du Fournisseur de données Leap Motion ne nécessite pas de casque VR. Les modifications apportées à une application MRTK peuvent être testées dans l’éditeur avec les mains Leap sans casque.

Les mains Leap Motion s’affichent dans l’éditeur, sans casque VR connecté. Si le LeapControllerOrientationcasque est défini, le contrôleur Leap Motion doit être maintenu d’une main avec l’appareil photo vers l’avant.

Notes

Si l’appareil photo est déplacé à l’aide de touches WASD dans l’éditeur et que le LeapControllerOrientationcasque est casque, les mains ne suivent pas l’appareil photo. Les mains suivent uniquement le mouvement de la caméra si un casque VR est connecté pendant que le LeapControllerOrientationcasque est défini. Les mains Leap suivent le mouvement de la caméra dans l’éditeur si celui-ci LeapControllerOrientation est défini sur Desk.

Suppression du mouvement Leap de la Project

  1. Accédez au Mixed Reality Kit de ressources>Leap Motion>, modules Unity distincts de saut de saut
    • Laissez Unity actualiser en tant que références dans le fichier Microsoft.MixedReality.Toolkit.Providers.LeapMotion.asmdef sont modifiés à cette étape
  2. Fermer Unity
  3. Fermez Visual Studio, s’il est ouvert
  4. Ouvrez Explorateur de fichiers et accédez à la racine du projet MRTK Unity
    • Supprimer le répertoire UnityProjectName/Library
    • Supprimer le répertoire UnityProjectName/Assets/Plugins/LeapMotion
    • Supprimer le fichier UnityProjectName/Assets/Plugins/LeapMotion.meta
  5. Rouvrir Unity

Dans Unity 2018.4, vous pouvez remarquer que les erreurs restent toujours dans la console après la suppression de la bibliothèque et des ressources Leap Motion Core. Si des erreurs sont enregistrées après la réouverture, redémarrez Unity à nouveau.

Erreurs courantes

Leap Motion n’a pas été intégré à MRTK

Pour tester si les modules Leap Motion Unity ont été intégrés à MRTK :

  • Accédez à Mixed Reality’état d’intégration de la vérification de l’intégration des utilitaires > du kit de ressources > Leap Motion >
    • Cela affiche une fenêtre contextuelle avec un message indiquant si les modules Leap Motion Unity ont été intégrés à MRTK.
  • Si le message indique que les ressources n’ont pas été intégrées :
    • Assurez-vous que les modules Leap Motion Unity se trouvent dans le projet
    • Vérifiez que la version ajoutée est prise en charge, consultez le tableau en haut de la page pour les versions prises en charge.
    • Essayez Mixed Reality Kit de ressources > Utilitaires > Leap Motion > Intégrer les modules Leap Motion Unity

Échec de la copie de l’assembly multijoueur HLAPI

Lors de l’importation des ressources Unity Core Leap Motion, cette erreur peut être journalisée :

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

Solution

  • Une solution à court terme consiste à redémarrer Unity. Pour plus d’informations, consultez le problème 7761 .

Scène d’exemple de mouvement Leap

L’exemple de scène utilise le profil DefaultLeapMotionConfiguration et détermine si le projet Unity a été configuré correctement pour utiliser l’Fournisseur de données Leap Motion.

L’exemple de scène est contenu dans le package Microsoft.MixedReality.Toolkit.Examples dans le répertoire MRTK/Examples/Demos/HandTracking/ .

Voir aussi