Używanie funkcji Leap Motion i Ultraleap — MRTK2
Kontroler ruchu skokowego jest wymagany do korzystania z tego dostawcy danych.
Dostawca danych Leap Motion umożliwia przegubowe śledzenie rąk dla vr i może być przydatne do szybkiego tworzenia prototypów w edytorze. Dostawca danych można skonfigurować do używania kontrolera Leap Motion Controller zainstalowanego na zestawie słuchawkowym lub umieszczonym na biurku w górę.
Ten dostawca może być używany w edytorze i na urządzeniu na platformie autonomicznej. Można go również używać w edytorze na platformie UWP, ale nie w kompilacji platformy UWP.
Wersja zestawu narzędzi MRTK | Obsługiwane wersje modułów Aparatu Unity Leap Motion |
---|---|
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 (patrz uwaga poniżej) |
Uwaga
Moduły aparatu Unity w wersji 4.9.1 wymagają usługi śledzenia Gemini 5.2 lub nowszej. Wtyczka aparatu Unity w wersji 4.9.1 jest oficjalnie obsługiwana tylko w środowisku Unity 2019. Zobacz informacje o wersji dla wersji 4.9.1.
Nazwa modułów Aparatu Unity została zmieniona na Wtyczkę aparatu Unity w wersji 5.0.0.
Wersja zestawu narzędzi MRTK | Obsługiwane wersje wtyczki Ultraleap Unity |
---|---|
2.8.0 | 5.3.0 (patrz uwaga poniżej) |
Uwaga
Wtyczka aparatu Unity w wersji 5.0.0, 5.1.0 i 5.2.0 nie jest obsługiwana w żadnej wersji zestawu NARZĘDZI MRTK. Zaleca się uaktualnienie użytkowników do wersji 5.3.0. Wtyczka Aparatu Unity w wersji 5.3.0 wymaga usługi śledzenia Gemini 5.2 lub nowszej.
Używanie funkcji Leap Motion (by Ultraleap) śledzenia rąk w narzędziu MRTK
Importowanie zestawu NARZĘDZI MRTK i modułów aparatu Unity Leap Motion / wtyczki aparatu Unity
- Zainstaluj najnowsze oprogramowanie Leap Motion Tracking, aby pobrać usługę śledzenia, jeśli nie została jeszcze zainstalowana
- Zaimportuj pakiet Microsoft.MixedReality.Toolkit.Foundation do projektu Aparatu Unity.
- Pobierz i zaimportuj najnowszą wersję modułów Leap Motion Unity / wtyczki Aparatu Unity do projektu
- W przypadku modułów aparatu Unity: zaimportuj tylko pakiet Core w projekcie
- W przypadku wtyczki aparatu Unity: zaimportuj tylko pakiet Tracking w projekcie. Obecnie obsługiwane są tylko pakiety unitypackage.
Ważne
Aparat Unity przestarzały SelectionMode.OnlyUserModifiable po unity 2019.4.19, co powoduje następujący błąd pochodzący z skryptu Ultraleap Hotkeys.cs: Assets\Plugins\LeapMotion\Core\Editor\Hotkeys.cs(24,91): błąd CS0619: 'SelectionMode.OnlyUserModifiable' jest przestarzały: "OnlyUserModifiable" jest przestarzały. Zamiast tego użyj opcji "Edytowalne". (UnityUpgradeable) —> edytowalne".
Aby rozwiązać problemy, zmień element SelectionMode.OnlyUserModifiable na SelectionMode.Editable w skrypcie Hotkeys.cs znajdującym się w pliku Plugins/LeapMotion/Core/Editor/Hotkeys.cs.
Integrowanie modułów aparatu Unity Leap Motion / wtyczki Aparatu Unity z zestawem NARZĘDZI MRTK
- Gdy moduły aparatu Unity /wtyczka aparatu Unity znajdują się w projekcie, przejdź do pozycji Mixed Reality>Toolkit>Utilities>Leap MotionIntegrate Leap Motion Unity Modules (Integrowanie modułów aparatu Leap Motion> Unity).
Uwaga
Zintegrowanie modułów aparatu Unity z zestawem MRTK dodaje do projektu 10 definicji zestawów i dodaje odwołania do definicji zestawu Microsoft.MixedReality.Toolkit.Providers.LeapMotion . Upewnij się, że program Visual Studio jest zamknięty.
Dodawanie dostawcy danych leap motion
- Tworzenie nowej sceny aparatu Unity
- Dodaj zestaw narzędzi MRTK do sceny, przechodząc do Mixed Reality Toolkit>Dodaj do sceny i Konfiguruj
- Wybierz obiekt gry MixedRealityToolkit w hierarchii i wybierz pozycję Kopiuj i dostosuj , aby sklonować domyślny profil rzeczywistości mieszanej.
- Wybierz profil konfiguracji danych wejściowych
- Wybierz pozycję Clone (Klonuj ) w profilu systemu wejściowego, aby włączyć modyfikację.
- Otwórz sekcję Dostawcy danych wejściowych , wybierz pozycję Dodaj dostawcę danych u góry, a na końcu listy zostanie dodany nowy dostawca danych. Otwórz nowego dostawcę danych i ustaw typ naMicrosoft.MixedReality.Toolkit.LeapMotion.Input > LeapMotionDeviceManager
- Wybierz pozycję Klonuj , aby zmienić domyślne ustawienia ruchu skokowego.
Dostawca danych Leap Motion zawiera
LeapControllerOrientation
właściwość, która jest lokalizacją kontrolera ruchu leap.LeapControllerOrientation.Headset
wskazuje, że kontroler jest zainstalowany na zestawie słuchawkowym.LeapControllerOrientation.Desk
wskazuje, że kontroler jest umieszczony płasko na biurku. Wartość domyślna jest ustawiona naLeapControllerOrientation.Headset
wartość .Każda orientacja kontrolera zawiera właściwości przesunięcia:
Właściwości przesunięcia orientacji zestawu słuchawkowego odzwierciedlają właściwości przesunięcia w składniku LeapXRServiceProvider. Dostępne
LeapVRDeviceOffsetMode
są trzy opcje: Domyślne, Ręczne przesunięcie głowy i przekształcenie. Jeśli tryb przesunięcia ma wartość Domyślna, przesunięcie nie zostanie zastosowane do kontrolera ruchu przestępnego. Tryb przesunięcia ręcznego głowy umożliwia modyfikację trzech właściwości:LeapVRDeviceOffsetY
,LeapVRDeviceOffsetZ
iLeapVRDeviceTiltX
. Wartości właściwości przesunięcia osi są następnie stosowane do domyślnego umieszczania kontrolera. Tryb przesunięcia Przekształć zawieraLeapVRDeviceOrigin
właściwość Transform, która określa nowe źródło dla kontrolera ruchu skokowego.Orientacja biurka zawiera
LeapControllerOffset
właściwość definiującą położenie kotwicy dłoni skokowych biurka. Przesunięcie jest obliczane względem pozycji kamery głównej, a wartość domyślna to (0,-0,2, 0,35), aby upewnić się, że ręce pojawiają się przed kamerą i w widoku aparatu.Uwaga
Właściwości przesunięcia w profilu są stosowane raz po uruchomieniu aplikacji. Aby zmodyfikować wartości podczas wykonywania, pobierz dostawcę usługi Leap Motion z Menedżer urządzeń Leap Motion:
LeapMotionDeviceManager leapMotionDeviceManager = CoreServices.GetInputSystemDataProvider<LeapMotionDeviceManager>(); LeapXRServiceProvider leapXRServiceProvider = leapMotionDeviceManager.LeapMotionServiceProvider as LeapXRServiceProvider;
EnterPinchDistance
iExitPinchDistance
są progami odległości wykrywania gestów szczypnięcia/naciśnięcia powietrza. Gest szczypty jest obliczany przez pomiar odległości między wskazówką palca indeksu a końcówką palca. Aby zgłosić zdarzenie w dół danych wejściowych, wartość domyślnaEnterPinchDistance
to 0,02. Aby podnieść zdarzenie wejściowe (zamykanie szczypty), domyślna odległość między wskazówką palca indeksu a końcówką kciuka wynosi 0,05.
LeapControllerOrientation
: Zestaw słuchawkowy (ustawienie domyślne)LeapControllerOrientation
:BiurkoTestowanie dostawcy danych leap motion
- Po dodaniu dostawcy danych Leap Motion do profilu systemu wejściowego naciśnij klawisz Play, przenieś rękę przed kontrolerem Leap Motion i powinna zostać wyświetlona wspólna reprezentacja ręki.
Kompilowanie projektu
- Przejdź do ustawień kompilacji pliku >
- Tylko autonomiczne kompilacje są obsługiwane w przypadku korzystania z dostawcy danych Leap Motion.
- Aby uzyskać instrukcje dotyczące używania zestawu nagłownego Windows Mixed Reality dla kompilacji autonomicznych, zobacz Tworzenie i wdrażanie zestawu słuchawkowego MRTK w zestawach słuchawkowych WMR (autonomiczna).
Pobieranie stawów ręcznych
Pobieranie stawów przy użyciu dostawcy danych Leap Motion jest identyczne z pobieraniem stawu ręcznego dla ręki przegubowej MRTK. Aby uzyskać więcej informacji, zobacz Śledzenie rąk.
Za pomocą zestawu NARZĘDZI MRTK w scenie aparatu unity i dostawcy danych leap motion dodany jako dostawca danych wejściowych w profilu systemu wejściowego utwórz pusty obiekt gry i dołącz następujący przykładowy skrypt.
Ten skrypt jest prostym przykładem sposobu pobierania pozy stawu palmowego w skokowym ruchu. Sfera podąża za lewą ręką Leap, podczas gdy kostka podąża za prawą ręką 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;
}
}
}
Porada dotycząca przepływu pracy edytora aparatu Unity
Korzystanie z dostawcy danych Leap Motion nie wymaga zestawu słuchawkowego VR. Zmiany w aplikacji MRTK można przetestować w edytorze z rękami Leap bez zestawu słuchawkowego.
Leap Motion Hands pojawi się w edytorze, bez podłączonych zestawów słuchawkowych VR. Jeśli jest LeapControllerOrientation
ustawiony na zestaw słuchawkowy, kontroler Leap Motion będzie musiał być trzymany za jedną ręką z aparatem skierowanym do przodu.
Uwaga
Jeśli aparat zostanie przeniesiony przy użyciu kluczy WASD w edytorze i LeapControllerOrientation
jest zestaw słuchawkowy, ręce nie będą podążać za aparatem. Ręce będą podążać za ruchem kamery tylko wtedy, gdy zestaw słuchawkowy VR jest podłączony, podczas gdy LeapControllerOrientation
jest ustawiony zestaw słuchawkowy. Ręce Leap będą podążać za ruchem aparatu w edytorze, jeśli LeapControllerOrientation
ustawiono wartość Desk.
Usuwanie ruchu skokowego z projektu
- Przejdź do modułów Mixed Reality Toolkit>Leap Motion>Separate Leap Motion Unity
- Odświeżanie aparatu Unity jako odwołań w pliku Microsoft.MixedReality.Toolkit.Providers.LeapMotion.asmdef jest modyfikowane w tym kroku
- Zamknij aparat Unity
- Zamknij program Visual Studio, jeśli jest otwarty
- Otwórz Eksplorator plików i przejdź do katalogu głównego projektu APARATU MRTK Unity
- Usuwanie katalogu UnityProjectName/Library
- Usuwanie katalogu UnityProjectName/Assets/Plugins/LeapMotion
- Usuwanie pliku UnityProjectName/Assets/Plugins/LeapMotion.meta
- Otwórz ponownie aparat Unity
W środowisku Unity 2018.4 można zauważyć, że błędy nadal pozostają w konsoli po usunięciu biblioteki i zasobów Leap Motion Core. Jeśli błędy są rejestrowane po ponownym otwarciu, uruchom ponownie środowisko Unity.
Typowe błędy
Funkcja Leap Motion nie została zintegrowana z zestawem NARZĘDZI MRTK
Aby sprawdzić, czy moduły aparatu Unity Leap Motion zostały zintegrowane z zestawem NARZĘDZI MRTK:
- Przejdź do pozycji Mixed Reality Toolkit > Utilities > Leap Motion > Check Status integracji
- Spowoduje to wyświetlenie wyskakującego okna z komunikatem o tym, czy moduły aparatu Leap Motion Unity zostały zintegrowane z zestawem NARZĘDZI MRTK.
- Jeśli komunikat informuje, że zasoby nie zostały zintegrowane:
- Upewnij się, że moduły aparatu Leap Motion Unity znajdują się w projekcie
- Upewnij się, że dodana wersja jest obsługiwana, zobacz tabelę w górnej części strony dla obsługiwanych wersji.
- Wypróbuj Mixed Reality Toolkit > Utilities > Leap Motion > Integrate Leap Motion Unity Modules
Kopiowanie zestawu wieloosobowego HLAPI nie powiodło się
Podczas importowania zasobów platformy Leap Motion Unity Core ten błąd może zostać zarejestrowany:
Copying assembly from 'Temp/com.unity.multiplayer-hlapi.Runtime.dll' to 'Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Runtime.dll' failed
Rozwiązanie
- Krótkoterminowe rozwiązanie polega na ponownym uruchomieniu aparatu Unity. Aby uzyskać więcej informacji, zobacz Problem 7761 .
Przykładowa scena skoku ruchu
Przykładowa scena używa profilu DefaultLeapMotionConfiguration i określa, czy projekt aparatu Unity został poprawnie skonfigurowany do używania dostawcy danych Leap Motion.
Przykładowa scena znajduje się w pakiecie Microsoft.MixedReality.Toolkit.Examples w katalogu MRTK/Examples/Demos/HandTracking/ .