Share via


A Leap Motion és az Ultraleap használata – MRTK2

Az adatszolgáltató használatához ugrási mozgásvezérlőre van szükség.

A Leap Motion Data Provider lehetővé teszi a VR-hez tartozó csuklós kézkövetést, és hasznos lehet a gyors prototípus-követéshez a szerkesztőben. Az adatszolgáltató konfigurálható úgy, hogy a mikrofonos fejhallgatóhoz csatlakoztatott leap mozgásvezérlőt használja, vagy felfelé egy asztalra helyezze.

LeapMotionIntroGif

Ez a szolgáltató használható a szerkesztőben és az eszközön az önálló platformon. A szerkesztőben is használható az UWP platformon, de NEM UWP-buildben.

MRTK-verzió A Leap Motion Unity-modulok támogatott verziói
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 (lásd az alábbi megjegyzést)

Megjegyzés

A Unity Modules 4.9.1-hez a Gemini 5.2 nyomkövetési szolgáltatásra van szükség. A Unity 4.9.1 beépülő modul csak hivatalosan támogatott a Unity 2019-ben. Lásd a 4.9.1 kiadási megjegyzéseit.

A Unity-modulokat átnevezték a Unity beépülő modulra az 5.0.0-s verzióban.

MRTK-verzió Ultraleap Unity beépülő modul támogatott verziói
2.8.0 5.3.0 (lásd az alábbi megjegyzést)

Megjegyzés

Az MRTK egyik verziójában sem támogatott a Unity beépülő modul 5.0.0-s, 5.1.0-s és 5.2.0-s verziója. A felhasználóknak javasoljuk, hogy frissítsenek az 5.3.0-ra. A Unity Beépülő modul 5.3.0-s verziójához a Gemini 5.2 nyomkövetési szolgáltatásra vagy újabb verzióra van szükség.

Leap Motion (Ultraleap által) kézi nyomkövetés használata az MRTK-ban

  1. AZ MRTK és a Leap Motion Unity-modulok importálása / Unity beépülő modul

    • Telepítse a legújabb Leap Mozgáskövető szoftvert a nyomkövetési szolgáltatás beszerzéséhez, ha még nincs telepítve
    • Importálja a Microsoft.MixedReality.Toolkit.Foundation csomagot a Unity projektbe.
    • Töltse le és importálja a Projektbe a Leap Motion Unity modulok / Unity beépülő modul legújabb verzióját
      • Unity-modulok esetén: csak a Core-csomag importálása a projekten belül
      • Unity beépülő modul esetén: csak a nyomkövetési csomagot importálja a projekten belül. Egyelőre csak a .unitypackages támogatott.

    Fontos

    Unity elavult SelectionMode.OnlyUserModifiable a Unity 2019.4.19 után, ami a következő hibát eredményezi az Ultraleap Hotkeys.cs szkriptből: Assets\Plugins\LeapMotion\Core\Editor\Hotkeys.cs(24,91): hiba: CS0619: 'SelectionMode.OnlyUserModifiable' elavult: ''OnlyUserModifiable' elavult. Használja helyette a "Szerkeszthető" parancsot. (UnityUpgradeable) –> Szerkeszthető".

    A problémák megoldásához módosítsa a SelectionMode.OnlyUserModifiable beállítást SelectionMode.Editable értékre a Beépülő modulok/LeapMotion/Core/Editor/Hotkeys.cs fájlban található Hotkeys.cs szkriptben.

  2. A Leap Motion Unity modulok /Unity beépülő modul integrálása az MRTK-val

    • Miután a Unity-modulok / Unity beépülő modul a projektben van, lépjen a Mixed Reality>Toolkit>Utilities>Leap MotionIntegrate Leap Motion> Unity-modulokhoz.

    Megjegyzés

    A Unity-modulok MRTK-ba való integrálása 10 szerelvénydefiníciót ad hozzá a projekthez, és hivatkozásokat ad a Microsoft.MixedReality.Toolkit.Providers.LeapMotion szerelvénydefinícióhoz. Győződjön meg arról, hogy a Visual Studio be van zárva.

    LeapMotionIntegration

  3. A Leap Motion Data Provider hozzáadása

    • Új Unity-jelenet létrehozása
    • MRTK hozzáadása a jelenethez a Mixed Reality Eszközkészlet>hozzáadása a jelenethez és konfigurálás elemre lépve
    • Válassza ki a MixedRealityToolkit játékobjektumot a hierarchiában, és válassza a Másolás és testreszabás lehetőséget az alapértelmezett vegyes valósági profil klónozásához.

    LeapMotionProfileClone

    • Válassza ki a bemeneti konfigurációs profilt

    Bemeneti konfigurációs profil 1

    • A módosítás engedélyezéséhez válassza a Klónozás lehetőséget a bemeneti rendszerprofilban.

    LeapMotionInputProfileClone

    • Nyissa meg a Bemeneti adatszolgáltatók szakaszt, válassza a felül található Adatszolgáltató hozzáadása lehetőséget, és a lista végén egy új adatszolgáltató lesz hozzáadva. Nyissa meg az új adatszolgáltatót, és állítsa a típusta Microsoft.MixedReality.Toolkit.LeapMotion.Input > LeapMotionDeviceManager értékre.

    Ugrás adatszolgáltató hozzáadása

    • Válassza a Klónozás lehetőséget az alapértelmezett Ugrási mozgás beállításainak módosításához.

    LeapDataProviderPreClone

    • A Leap Motion Data Provider tartalmazza a LeapControllerOrientation Leap Motion Controller helyét tartalmazó tulajdonságot. LeapControllerOrientation.Headset azt jelzi, hogy a vezérlő csatlakoztatva van egy headsethez. LeapControllerOrientation.Desk azt jelzi, hogy a vezérlő laposan van az asztalon. Az alapértelmezett érték a következőre van állítva: LeapControllerOrientation.Headset.

    • Minden vezérlő tájolása eltolástulajdonságokat tartalmaz:

      • A Headset tájolásának eltolás tulajdonságai a LeapXRServiceProvider összetevő eltolási tulajdonságait tükrözik. A LeapVRDeviceOffsetMode három lehetőség közül választhat: Alapértelmezett, Manuális fejeltolás és Átalakítás. Ha az eltolás mód Alapértelmezett, akkor a leap mozgásvezérlőre nem alkalmaz eltolást. A Manuális fejeltolás mód három tulajdonság módosítását teszi lehetővé: LeapVRDeviceOffsetY, LeapVRDeviceOffsetZ és LeapVRDeviceTiltX. A tengely eltolás tulajdonságértékei ezután az alapértelmezett vezérlő elhelyezésére lesznek alkalmazva. Az Átalakítás eltolás módja tartalmazza a LeapVRDeviceOrigin Transform tulajdonságot, amely a Leap Motion Controller új forrását adja meg.

      • Az Asztal tájolása tartalmazza azt a LeapControllerOffset tulajdonságot, amely meghatározza az asztali szökő kezek horgonypozícióját. Az eltolás a fő kamera helyzetéhez viszonyítva van kiszámítva, és az alapértelmezett érték (0,-0,2, 0,35) annak érdekében, hogy a kezek a kamera előtt és szem előtt jelenjenek meg.

        Megjegyzés

        A profil eltolástulajdonságai az alkalmazás indításakor egyszer lesznek alkalmazva. Az értékek futásidőben történő módosításához kérje le a Leap Motion Service Providert a Leap Motion Eszközkezelő:

        LeapMotionDeviceManager leapMotionDeviceManager = CoreServices.GetInputSystemDataProvider<LeapMotionDeviceManager>();
        LeapXRServiceProvider leapXRServiceProvider = leapMotionDeviceManager.LeapMotionServiceProvider as LeapXRServiceProvider; 
        
    • EnterPinchDistance és ExitPinchDistance a csippentés/levegő koppintás kézmozdulat észlelésének távolsági küszöbértékei. A csippentő kézmozdulat kiszámítása a mutatóujjhegy és a hüvelykujjhegy közötti távolság mérésével történik. Ha egy bemeneti eseményt szeretne létrehozni, az alapértelmezett EnterPinchDistance érték 0,02. A bemeneti esemény (a csippentésből való kilépés) felemeléséhez az indexujjhegy és a hüvelykujjhegy közötti alapértelmezett távolság 0,05.

    LeapControllerOrientation: Headset (alapértelmezett)

    LeapHeadsetGif

    LeapHeadsetInspector

    LeapControllerOrientation:Asztali

    LeapDeskGif

    LeapDeskInspector

  4. A Leap Motion Data Provider tesztelése

    • Miután a Leap Motion Data Provider hozzá lett adva a bemeneti rendszer profiljához, nyomja le a play billentyűt, mozgassa a kezét a Leap Motion Controller előtt, és látnia kell a kéz közös ábrázolását.
  5. A projekt létrehozása

A kéz ízületeinek lekérése

Az illesztések lekérése a Leap Motion Data Provider használatával megegyezik az MRTK csuklós kéz kéz általi lekérésével. További információ: Kézkövetés.

Ha az MRTK egy unity jelenetben van, és a Leap Motion Data Provider bemeneti adatszolgáltatóként van hozzáadva az input system profilban, hozzon létre egy üres játékobjektumot, és csatolja a következő példaszkriptet.

Ez a szkript egy egyszerű példa arra, hogyan lehet lekérni a póz a tenyér ízület a Leap Motion Hand. A gömb a bal leap kezét követi, míg a kocka a jobb leap kezét követi.

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

Unity-szerkesztő munkafolyamat-tippje

A Leap Motion Data Provider használatához nincs szükség VR headsetre. Az MRTK-alkalmazások módosításait a szerkesztőben tesztelheti a Leap kezekkel headset nélkül.

A Leap Motion Hands megjelenik a szerkesztőben, anélkül, hogy a VR headset csatlakoztatva van. Ha a LeapControllerOrientation headset értékre van állítva, akkor a Leap Motion vezérlőt egy kézzel kell feltartani, és a kamerának előre kell néznie.

Megjegyzés

Ha a kamera wasd billentyűkkel van áthelyezve a szerkesztőben, és a LeapControllerOrientationheadset, a kezek nem fogják követni a kamerát. A kezek csak akkor követik a kamera mozgását, ha egy VR headset be van dugva, miközben a LeapControllerOrientationheadset be van állítva. A Leap kezek a szerkesztőben követik a kamera mozgását, ha az LeapControllerOrientationDesk értékre van állítva.

Ugrási mozgás eltávolítása a projektből

  1. Navigáljon a Mixed Reality Toolkit>Leap Motion>Separate Leap Motion Unity modulhoz
    • Hagyja, hogy a Unity hivatkozásként frissüljön a Microsoft.MixedReality.Toolkit.Providers.LeapMotion.asmdef fájlban ebben a lépésben
  2. A Unity bezárása
  3. Zárja be a Visual Studiót, ha meg van nyitva
  4. Nyissa meg Fájlkezelő, és navigáljon az MRTK Unity-projekt gyökeréhez
    • A UnityProjectName/Library könyvtár törlése
    • Törölje a UnityProjectName/Assets/Plugins/LeapMotion könyvtárat
    • Törölje a UnityProjectName/Assets/Plugins/LeapMotion.meta fájlt
  5. A Unity újbóli megnyitása

A Unity 2018.4-ben észreveheti, hogy a kódtár és a Leap Motion Core Assets törlése után is hibák maradnak a konzolon. Ha a rendszer az újranyitás után naplózza a hibákat, indítsa újra újra a Unityt.

Gyakori hibák

A Leap Motion nem integrálva van az MRTK-val

Annak tesztelése, hogy a Leap Motion Unity modulok integrálva vannak-e az MRTK-val:

  • Lépjen Mixed Reality Toolkit > Utilities > Ugrás Mozgásellenőrzés > integrációs állapotához
    • Ekkor megjelenik egy előugró ablak, amely arról tájékoztatja, hogy a Leap Motion Unity modulok integrálva vannak-e az MRTK-val.
  • Ha az üzenet szerint az eszközök nincsenek integrálva:
    • Győződjön meg arról, hogy a Leap Motion Unity-modulok szerepelnek a projektben
    • Győződjön meg arról, hogy a hozzáadott verzió támogatott, tekintse meg a lap tetején található táblázatot a támogatott verziókhoz.
    • Próbálja ki Mixed Reality Toolkit > Utilities > Leap Motion > Integrate Leap Motion Unity-modulokat

A többszereplős HLAPI-szerelvény másolása sikertelen

A Leap Motion Unity Core-eszközök importálásakor ez a hiba naplózható:

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

Megoldás

  • Rövid távú megoldás a Unity újraindítása. További információért lásd a 7761-et .

Leap Motion Example Scene

A példajelenet a DefaultLeapMotionConfiguration profilt használja, és megállapítja, hogy a Unity-projekt megfelelően lett-e konfigurálva a Leap Motion Data Provider használatára.

A példajelenet a Microsoft.MixedReality.Toolkit.Examples csomagban található az MRTK/Examples/Demos/HandTracking/ könyvtárban.

Lásd még