Nawigacja obsługiwana przez oko w narzędziu MRTK — MRTK2
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. |
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.
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. |
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. |
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ż
- Podstawowa konfiguracja zestawu narzędzi MRTK do korzystania ze śledzenia oczu
- Wybór obiektu docelowego obsługiwanego przez oko