System podstawowy — MRTK2

W centrum systemu wejściowego jest system InputSystem, który jest usługą odpowiedzialną za inicjowanie i obsługę wszystkich powiązanych funkcji wejściowych skojarzonych z zestawem NARZĘDZI MRTK.

Uwaga

Zakłada się, że czytelnicy już czytają i mają podstawową wiedzę na temat sekcji terminologii .

Ta usługa jest odpowiedzialna za:

  • Odczytywanie profilu systemu wejściowego
  • Uruchamianie skonfigurowanych dostawców danych (na przykład Windows Mixed Reality Device Manager i OpenVR Device Manager).
  • Wystąpienie elementu GazeProvider, który jest składnikiem odpowiedzialnym za dostarczanie informacji o spojrzeniu głowy w stylu holoLens (1. generacja) oprócz informacji o spojrzeniu na oko w stylu HoloLens 2.
  • Wystąpienie obiektu FocusProvider, który jest składnikiem odpowiedzialnym za określanie obiektów, które mają fokus. Opisano to bardziej szczegółowo w sekcji wskaźników i fokusu dokumentacji.
  • Podawanie punktów rejestracji dla wszystkich zdarzeń wejściowych (jako odbiorników globalnych).
  • Zapewnianie możliwości wysyłania zdarzeń dla tych zdarzeń wejściowych.

Zdarzenia wejściowe

Zdarzenia wejściowe są zwykle wyzwalane na dwóch różnych kanałach:

Obiekty w fokusie

Zdarzenia można wysyłać bezpośrednio do obiektu GameObject, który ma fokus. Na przykład obiekt może mieć skrypt implementujący IMixedRealityTouchHandlerelement . Ten obiekt będzie dotykać zdarzeń, gdy koncentruje się na ręku, który znajduje się w pobliżu. Te typy zdarzeń przechodzą w górę w hierarchii GameObject, dopóki nie znajdzie obiektu GameObject, który może obsługiwać zdarzenie.

Odbywa się to przy użyciu funkcji ExecuteHierarchy z poziomu domyślnej implementacji systemu wejściowego.

Odbiorniki globalne

Zdarzenia można wysyłać do odbiorników globalnych. Można zarejestrować wszystkie zdarzenia wejściowe przy użyciu interfejsu systemu wejściowego IMixedRealityEventSystem . Zaleca się użycie metody RegisterHandler do rejestrowania w przypadku zdarzeń globalnych — przestarzała Register funkcja spowoduje, że odbiorniki będą otrzymywać powiadomienia o wszystkich zdarzeniach wejściowych, a nie tylko wejściowe zdarzenia określonego typu (gdzie typ jest definiowany przez interfejs zdarzenia).

Należy pamiętać, że odbiorniki rezerwowe są innym typem odbiorników globalnych, które są również zniechęcone, ponieważ będą otrzymywać każde pojedyncze zdarzenie wejściowe, które nie zostało obsłużone w innym miejscu sceny.

Kolejność wysyłania zdarzeń

Zazwyczaj zdarzenia są wysyłane do odbiorników w następujący sposób. Należy pamiętać, że jeśli którykolwiek z poniższych kroków oznacza zdarzenie jako obsługiwane, proces wysyłania zdarzeń zostanie zatrzymany.

  1. Zdarzenie jest wysyłane do odbiorników globalnych.
  2. Zdarzenie jest wysyłane do modalnych okien dialogowych obiektu skoncentrowanego.
  3. Zdarzenie jest wysyłane do obiektu ukierunkowanego.
  4. Zdarzenie jest wysyłane do odbiorników rezerwowych.

Menedżerowie urządzeń i dostawcy danych

Te jednostki są odpowiedzialne za współdziałanie z interfejsami API niższego poziomu (takimi jak interfejsy API Windows Mixed Reality lub interfejsy API OpenVR) oraz tłumaczenie danych z tych systemów na te, które pasują do abstrakcji danych wejściowych wyższego poziomu zestawu narzędzi MRTK. Są one odpowiedzialne za wykrywanie, tworzenie i zarządzanie okresem istnienia kontrolerów.

Podstawowy przepływ menedżera urządzeń obejmuje:

  1. Menedżer urządzeń jest tworzone przez usługę systemu wejściowego.
  2. Menedżer urządzeń rejestruje się w systemie bazowym (na przykład menedżer urządzeń Windows Mixed Reality zarejestruje się pod kątem zdarzeń wejściowych i gestów.
  3. Tworzy kontrolery, które odnajduje z systemu bazowego (na przykład dostawca może wykryć obecność przegubowych rąk)
  4. W pętli Update() wywołaj metodę UpdateController(), aby sondować nowy stan podstawowego systemu i zaktualizować jej reprezentację kontrolera.