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.
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
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.
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.
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.
- Válassza ki a bemeneti konfigurációs profilt
- A módosítás engedélyezéséhez válassza a Klónozás lehetőséget a bemeneti rendszerprofilban.
- 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.
- 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.
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
ésLeapVRDeviceTiltX
. 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 aLeapVRDeviceOrigin
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
ésExitPinchDistance
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értelmezettEnterPinchDistance
é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)LeapControllerOrientation
:AsztaliA 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.
A projekt létrehozása
- Navigáljon a fájl > buildelési beállításaihoz
- A Leap Motion Data Provider használata esetén csak az önálló buildek támogatottak.
- Az önálló buildekhez készült Windows Mixed Reality headset használatára vonatkozó útmutatásért lásd: MRTK létrehozása és üzembe helyezése WMR-fejhallgatókban (önálló).
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 LeapControllerOrientation
headset, 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 LeapControllerOrientation
headset be van állítva. A Leap kezek a szerkesztőben követik a kamera mozgását, ha az LeapControllerOrientation
Desk értékre van állítva.
Ugrási mozgás eltávolítása a projektből
- 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
- A Unity bezárása
- Zárja be a Visual Studiót, ha meg van nyitva
- 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
- 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.