Udostępnij za pośrednictwem


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 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.supportsTouchpadco 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/Rotationprzekazując InteractionSourceNode.Pointer jako argument.

Zobacz też