Nawigacja obsługiwana przez oko w narzędziu MRTK — MRTK2

MRTK

Wyobraź sobie, że czytasz informacje o łupkach, a po osiągnięciu końca wyświetlanego tekstu tekst tekst automatycznie przewija się w górę, aby wyświetlić więcej zawartości. Możesz też płynnie powiększać miejsce, w którym patrzysz. Mapa automatycznie dostosowuje również zawartość, aby zachować zainteresowanie w twoim polu widoku. Inną interesującą aplikacją jest praktyczne obserwacje hologramów 3D przez automatyczne wprowadzenie części hologramu, które patrzysz na front. Oto niektóre z przykładów opisanych na tej stronie w kontekście nawigacji obsługiwanej przez oko.

W poniższych opisach założono, że wiesz już, jak skonfigurować śledzenie oczu w scenie MRTK oraz podstawowe informacje na temat uzyskiwania dostępu do danych śledzenia oczu w środowisku MRTK Unity. Przykłady omówione w poniższych tematach są częścią EyeTrackingDemo-03-Navigation sceny (Assets/MRTK/Examples/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation).

Krótki opis: Automatyczne przewijanie tekstu, przesuwanie wzroku i powiększanie wirtualnej mapy, dwukierunkowe obracanie 3D.

Automatyczne przewijanie

Automatyczne przewijanie umożliwia użytkownikowi przewijanie tekstu bez podnoszenia palca. Po prostu kontynuuj czytanie, a tekst automatycznie przewija się w górę lub w dół w zależności od tego, gdzie szuka użytkownik. Możesz rozpocząć od przykładu podanego w artykule EyeTrackingDemo-03-Navigation (Assets/MRTK/Examples/Demos/EyeTracking/Scenes). W tym przykładzie użyto składnika TextMesh , aby umożliwić elastyczne ładowanie i formatowanie nowego tekstu. Aby włączyć automatyczne przewijanie, wystarczy dodać dwa następujące skrypty do składnika zderzaczego pola tekstowego:

ScrollRectTransf

Aby przewinąć element TextMesh lub ogólnie rzecz biorąc składnik RectTransform , możesz użyć skryptu ScrollRectTransf . Jeśli chcesz przewijać teksturę zamiast funkcji RectTransform, użyj funkcji ScrollTexture zamiast ScrollRectTransf. Poniżej przedstawiono bardziej szczegółowo parametry funkcji ScrollRectTransf dostępne w edytorze aparatu Unity:

Parametry Opis
LimitPanning Jeśli ta opcja jest włączona, zatrzyma zawartość z możliwością przewijania na jej granicy.
RectTransfToNavigate Odwołanie do funkcji RectTransform w celu przewinięcia.
RefToViewport Odwołanie do nadrzędnego elementu RectTransform zawartości z możliwością przewijania w celu określenia poprawnego przesunięcia i granicy.
AutoGazeScrollIsActive Jeśli ta opcja jest włączona, tekst zostanie automatycznie przewijany, jeśli użytkownik patrzy na aktywny region (np. górną i dolną część panelu przewijania, jeśli prędkość przewijania w pionie nie jest równa zero).
ScrollSpeed_x Jeśli ustawiono wartość nierówną do zera, przewijanie poziome zostanie włączone. Wartości ujemne oznaczają zmianę kierunku przewijania: od lewej do prawej i od prawej do lewej.
ScrollSpeed_y Jeśli ustawiono wartość nierówną do zera, przewijanie w pionie zostanie włączone. Wartości ujemne oznaczają zmianę kierunku przewijania: w górę do dołu i w dół do góry.
MinDistFromCenterForAutoScroll Znormalizowana minimalna odległość w x i y z środka pola trafienia celu (0, 0), aby przewinąć. W związku z tym wartości muszą wahać się od 0 (zawsze przewiń) do 0,5 (bez przewijania).
UseSkimProofing Jeśli to ustawienie jest włączone, zapobiega nagłym ruchom przewijania podczas szybkiego rozglądnięcia. Może to sprawić, że przewijanie będzie czuć się mniej dynamiczne. Można go dostroić z wartością SkimProofUpdateSpeed .
SkimProofUpdateSpeed Im niższa wartość, tym wolniejsze przewijanie przyspieszy po odtłuszeniu. Zalecana wartość: 5.

Konfiguracja przewijania obsługiwana przez oko w środowisku Unity

EyeTrackingTarget

Dołączanie składnika EyeTrackingTarget umożliwia elastyczne obsługa zdarzeń związanych z spojrzeniem na oko. Przykład przewijania pokazuje tekst przewijania, który rozpoczyna się, gdy użytkownik patrzy na panel i zatrzymuje się, gdy użytkownik odejdzie od niego. Konfiguracja przewijania obsługiwanego przez oko w środowisku Unity: EyeTrackingTarget

Przesuwanie i powiększenie obsługiwane przez spojrzenie

Kto wcześniej nie użył mapy wirtualnej, aby wyszukać swój dom lub zbadać zupełnie nowe miejsca? Śledzenie oczu pozwala bezpośrednio zagłębić się w dokładnie części, które cię interesują i po powiększeniu, możesz płynnie śledzić przebieg ulicy, aby zbadać swoją dzielnicę! Jest to nie tylko przydatne do eksplorowania map geograficznych, ale także do sprawdzania szczegółów na zdjęciach, wizualizacjach danych, a nawet na żywo przesyłanych strumieniowo obrazów medycznych. Aby korzystać z tej możliwości w aplikacji, jest łatwa! W przypadku zawartości renderowanej na teksturze (np. zdjęcia, przesyłanych strumieniowo danych) wystarczy dodać skrypt PanZoomTexture . W przypadku elementu RectTransform użyj polecenia PanZoomRectTransf. Rozszerzenie możliwości automatycznego przewijania umożliwia przewijanie zarówno w pionie, jak i w poziomie w tym samym czasie i powiększanie zawartości w prawo wokół bieżącego punktu koncentracji uwagi użytkownika.

Parametry Opis
LimitPanning Jeśli ta opcja jest włączona, zatrzyma zawartość z możliwością przewijania na jej granicy.
HandZoomEnabledOnStartup Wskazuje, czy gesty dłoni są automatycznie włączone w celu wykonania gestu powiększenia. Możesz ją najpierw wyłączyć, aby uniknąć przypadkowego wyzwalania akcji powiększenia.
RendererOfTextureToBeNavigated Odwołano się do renderatora tekstury do nawigowania.
Zoom_Acceleration Przyspieszanie powiększania definiujące stromość mapowania funkcji prędkości logistycznej.
Zoom_SpeedMax Maksymalna szybkość powiększenia.
Zoom_MinScale Minimalna skala tekstury dla powiększania — np. 0,5f (połowa oryginalnego rozmiaru).
Zoom_MaxScale Maksymalna skala tekstury w celu powiększenia — np. 1f (oryginalny rozmiar) lub 2,0f (dwukrotnie rozmiar oryginalny).
Zoom_TimeInSecToZoom Powiększ czas: po wyzwoleniu powiększenia/powiększenia zostanie wykonane przez daną ilość czasu w sekundach.
Zoom_Gesture Typ gestu ręcznego, który ma być używany do powiększania/powiększenia.
--- ---
Pan_AutoScrollIsActive Jeśli ta opcja jest włączona, tekst zostanie automatycznie przewijany, jeśli użytkownik patrzy na aktywny region (np. górną i dolną część panelu przewijania, jeśli prędkość przewijania w pionie nie jest równa zero).
Pan_Speed_x Jeśli ustawiono wartość nierówną do zera, przewijanie poziome zostanie włączone. Wartości ujemne oznaczają zmianę kierunku przewijania: od lewej do prawej i od prawej do lewej.
Pan_Speed_y Jeśli ustawiono wartość nierówną do zera, przewijanie w pionie zostanie włączone. Wartości ujemne oznaczają zmianę kierunku przewijania: w górę do dołu i w dół do góry.
Pan_MinDistFromCenter Znormalizowana minimalna odległość w x i y z środka pola trafienia celu (0, 0), aby przewinąć. W związku z tym wartości muszą wahać się od 0 (zawsze przewiń) do 0,5 (bez przewijania).
UseSkimProofing Jeśli to ustawienie jest włączone, zapobiega nagłym ruchom przewijania podczas szybkiego rozglądnięcia. Może to sprawić, że przewijanie będzie czuć się mniej dynamiczne. Można go dostroić z wartością SkimProofUpdateSpeed .
SkimProofUpdateSpeed Im niższa wartość, tym wolniejsze przewijanie przyspieszy po odtłuszeniu. Zalecana wartość: 5.

Konfiguracja przesuwania i powiększania w środowisku Unity obsługiwana przez oko

Rotacja 3D oparta na uwagi

Wyobraź sobie, że patrzysz na obiekt 3D i części, które chcesz zobaczyć bardziej magicznie odwrócić się do Ciebie - jakby system odczytał twój umysł i wiedział, aby odwrócić element w kierunku Ciebie! Jest to pomysł na rotacje 3D oparte na uwagi, które umożliwiają badanie wszystkich stron hologramu bez podnoszenia palca. Aby włączyć to zachowanie, wystarczy dodać skrypt OnLookAtRotateByEyeGaze do części obiektu GameObject ze składnikiem Collider . Możesz dostosować kilka parametrów wymienionych poniżej, aby ograniczyć szybkość i kierunek hologramu.

Jak można sobie wyobrazić, to zachowanie aktywne przez cały czas może szybko stać się dość rozpraszające w zatłoczonej scenie. Dlatego warto zacząć od wyłączenia tego zachowania, a następnie włączyć je szybko przy użyciu poleceń głosowych. Alternatywnie dodaliśmy przykład w EyeTrackingDemo-03-Navigation pliku (Assets/MRTK/Examples/Demos/EyeTracking/Scenes), aby użyć elementu TargetMoveToCamera, dla którego można wybrać fokus i leci przed tobą — po prostu powiedz "Come to me".

Po włączeniu trybu bliskiego tryb automatycznego obrotu jest automatycznie włączony. W tym trybie można obserwować go ze wszystkich stron albo po prostu pochylić się z powrotem i patrzeć na niego, chodzić wokół niego lub wyciągać rękę i obracać ją ręką. Po odrzuceniu celu (spójrz & szczypta lub powiedz "Wyślij z powrotem", powróci do jego oryginalnej lokalizacji i przestanie reagować na Ciebie z daleka.

Parametry Opis
SpeedX Prędkość obrotu w poziomie.
Szybkiego Prędkość obrotu w pionie.
Odwrotność X Aby przewracać kierunek obrotu w poziomie.
Odwrotność Aby przewracać kierunek obrotu w pionie.
RotationThreshInDegrees Jeśli kąt między "Spojrzenie na cel" i "Aparat do celu" jest mniejszy niż ta wartość, nie rób nic. Ma to na celu zapobieganie małym roztrzasaniu rotacji..
MinRotX Minimalny kąt obrotu w poziomie. Jest to ograniczenie obrotu w różnych kierunkach.
MaxRotX Maksymalny kąt obrotu w poziomie. Jest to ograniczenie obrotu w różnych kierunkach.
MinRotY Minimalny kąt obrotu w pionie, aby ograniczyć obrót wokół osi x.
MaxRotY Maksymalny kąt obrotu w pionie, aby ograniczyć obrót wokół osi y.

Konfiguracja rotacji 3D obsługiwana przez oko w środowisku Unity

Podsumowując, powyższe skrypty powinny umożliwić rozpoczęcie korzystania z wzroku w przypadku różnych zadań nawigacji wejściowych, takich jak przewijanie tekstów, powiększanie i przesuwanie tekstur, a także obracanie hologramów 3D.

Zobacz też


Powrót do "Śledzenie oczu w MixedRealityToolkit"