Przewodnik przenoszenia danych wejściowych dla aparatu Unity
Logikę wejściową można przenosić do Windows Mixed Reality przy użyciu jednego z dwóch podejść:
- Ogólne interfejsy API Input.GetButton lub Input.GetAxis aparatu Unity obejmujące wiele platform.
- Interfejsy API Aparatu UnityEngine.XRModule , które oferują bogatsze dane przeznaczone specjalnie dla kontrolerów ruchu i rąk HoloLens.
Ogólne interfejsy API Input.GetButton i Input.GetAxis
Aparat Unity używa obecnie ogólnych Input.GetButton
interfejsów API i Input.GetAxis
interfejsów API do uwidocznienia danych wejściowych dla zestawu Oculus SDK i zestawu OpenVR SDK. Jeśli aplikacje używają już tych interfejsów API do danych wejściowych, te interfejsy API są najłatwiejszą ścieżką do obsługi kontrolerów ruchu w Windows Mixed Reality. Wystarczy ponownie zamapować przyciski i osie w Menedżerze danych wejściowych.
Aby uzyskać więcej informacji, zobacz tabelę mapowania przycisków/osi aparatu Unity oraz omówienie interfejsów API common Unity.
Ważne
Jeśli używasz kontrolerów HP Reverb G2, zobacz HP Reverb G2 Controllers in Unity (Kontrolery HP Reverb G2 w środowisku Unity), aby uzyskać dalsze instrukcje dotyczące mapowania danych wejściowych.
Interfejsy API wejściowe XR
Wydania aparatu Unity zostały wycofane z XR. Interfejsy API usługi WSA na rzecz zestawu SDK XR. W przypadku nowych projektów najlepiej używać interfejsów API wejściowych XR od początku. Aby uzyskać więcej informacji, zobacz Dane wejściowe aparatu Unity XR.
Jeśli aplikacja już tworzy niestandardową logikę wprowadzania danych wejściowych dla każdej platformy, możesz użyć interfejsów API wejściowych specyficznych dla systemu Windows w przestrzeni nazw UnityEngine.InputSystem.XR . Te interfejsy API umożliwiają dostęp do większej liczby informacji, takich jak dokładność położenia lub rodzaj źródła, aby przekazać instrukcje i kontrolery na urządzeniu HoloLens.
Uwaga
Jeśli używasz kontrolerów HP Reverb G2, wszystkie wejściowe interfejsy API nadal działają z wyjątkiem , InteractionSource.supportsTouchpad
co zwraca wartość false bez danych touchpad.
Pozowanie uchwytu i pozowanie wskaźnika
Windows Mixed Reality obsługuje kontrolery ruchu w różnych czynnikach form. Projekt każdego kontrolera różni się w zależności od położenia użytkownika i naturalnego kierunku do przodu używanego przez aplikacje do wskazywania podczas renderowania kontrolera.
Aby lepiej reprezentować te kontrolery, można zbadać dwa rodzaje pozy dla każdego źródła interakcji, uścisk pozy i wskaźnik. Wyrażasz wszystkie współrzędne w współrzędnych świata aparatu Unity.
Pozy uchwytu
Położenie uchwytu reprezentuje lokalizację dłoni wykrytej przez urządzenie HoloLens lub palmę trzymającą kontroler ruchu. Na immersyjnych zestawach słuchawkowych użyj tej pozycji, aby renderować rękę użytkownika lub obiekt trzymany w ręku użytkownika, taki jak miecz lub pistolet.
- Położenie uchwytu jest centroid palmowy podczas trzymania kontrolera naturalnie, skorygowany w lewo lub w prawo, aby wyśrodkować położenie w uchwyt.
- Oś prawej orientacji uchwytu jest promieniem normalnym dla dłoni, do przodu z lewej dłoni, do tyłu z prawej dłoni, gdy całkowicie otworzysz rękę, aby utworzyć płaską pięcio palec pozować.
- Oś uchwytu jest promieniem, który wskazuje do przodu przez rurkę utworzoną przez palce inne niż kciuk, gdy zamkniesz rękę częściowo, jakby trzymał kontroler.
- Oś uchwycenia jest osią w górę dorozumianą przez definicje prawej i do przodu.
Uzyskaj dostęp do chwytu za pośrednictwem XR aparatu Unity. Interfejsy API InputTracking.GetNodeStates , takie jak XRNodeState.TryGetPosition lub XRNodeState.TryGetRotation.
Pozowanie wskaźnika
Wskaźnik stanowi końcówkę kontrolera wskazującego do przodu. To pozowanie jest najlepiej używane do rzutowania promieni wskazującego na interfejs użytkownika podczas renderowania samego modelu kontrolera.
Pozycja wskaźnika jest dostępna w środowisku Unity tylko za pośrednictwem interfejsu API specyficznego dla języka MR systemu Windows, sourceState.sourcePose.TryGetPosition/Rotation
przekazując InteractionSourceNode.Pointer
jako argument.