Augengestützte Navigation in MRTK — MRTK2
Stellen Sie sich vor, Sie lesen Informationen auf einer Schieferseite, und wenn Sie das Ende des angezeigten Texts erreichen, scrollt der Text automatisch nach oben, um mehr Inhalt anzuzeigen. Oder Sie können flüssig vergrößern, wo Sie sich ansehen. Die Karte passt auch automatisch den Inhalt an, um die interessanten Dinge in Ihrem Sichtfeld zu behalten. Eine weitere interessante Anwendung ist die freihändige Beobachtung von 3D-Hologrammen durch automatisches Bringen der Teile des Hologramms, die Sie betrachten, nach vorne. Dies sind einige der Beispiele, die auf dieser Seite im Kontext der augengestützten Navigation beschrieben werden.
In den folgenden Beschreibungen wird davon ausgegangen, dass Sie bereits mit der Einrichtung von Eye Tracking in Ihrer MRTK-Szene und mit den Grundlagen des Zugriffs auf Eye Tracking-Daten in MRTK Unity vertraut sind.
Die im Folgenden beschriebenen Beispiele sind alle Teil der EyeTrackingDemo-03-Navigation
Szene (Assets/MRTK/Examples/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation).
Zusammenfassung: Automatisches Scrollen von Text, Augen-Blick-unterstütztes Schwenken und Zoomen einer virtuellen Karte, freihändige 3D-gesteuerte 3D-Drehung.
Automatischer Bildlauf
Mit dem automatischen Scrollen kann der Benutzer durch Texte scrollen, ohne einen Finger zu heben.
Lesen Sie einfach weiter, und der Text scrollt automatisch nach oben oder unten, je nachdem, wohin der Benutzer sucht.
Sie können mit dem in EyeTrackingDemo-03-Navigation
bereitgestellten Beispiel beginnen (Assets/MRTK/Examples/Demos/EyeTracking/Scenes).
In diesem Beispiel wird eine TextMesh-Komponente verwendet, um das flexible Laden und Formatieren von neuem Text zu ermöglichen.
Um den automatischen Bildlauf zu aktivieren, fügen Sie einfach die folgenden beiden Skripts ihrer Colliderkomponente des Textfelds hinzu:
ScrollRectTransf
Zum Scrollen durch eine TextMesh - oder allgemeinere RectTransform-Komponente können Sie das ScrollRectTransf-Skript verwenden. Wenn Sie durch eine Textur anstelle von RectTransform scrollen möchten, verwenden Sie ScrollTexture anstelle von ScrollRectTransf. Im Folgenden werden die Parameter von ScrollRectTransf , die im Unity-Editor verfügbar sind, ausführlicher erläutert:
Parameter | BESCHREIBUNG |
---|---|
LimitPanning | Wenn diese Option aktiviert ist, wird der scrollbare Inhalt an seiner Grenze beendet. |
RectTransfToNavigate | Verweis auf die RectTransform zum Scrollen. |
RefToViewport | Verweis auf das übergeordnete RectTransform des scrollbaren Inhalts, um den richtigen Offset und die richtige Begrenzung zu bestimmen. |
AutoGazeScrollIsActive | Wenn dies aktiviert ist, wird der Text automatisch scrollen, wenn der Benutzer einen aktiven Bereich betrachtet (z. B. den oberen und unteren Teil des Bildlaufbereichs, wenn die vertikale Bildlaufgeschwindigkeit nicht null ist). |
ScrollSpeed_x | Wenn sie auf einen ungleichen Wert auf 0 festgelegt ist, wird der horizontale Bildlauf aktiviert. Negative Werte bedeuten eine Änderung der Bildlaufrichtung: Von links nach rechts und von rechts nach links. |
ScrollSpeed_y | Wenn sie auf einen ungleichen Wert auf 0 festgelegt ist, wird der vertikale Bildlauf aktiviert. Negative Werte bedeuten eine Änderung der Bildlaufrichtung: Nach unten und nach unten nach oben. |
MinDistFromCenterForAutoScroll | Normalisierter minimaler Abstand in x und y von der Mitte des Trefferfelds des Ziels (0, 0), um zu scrollen. Daher müssen die Werte zwischen 0 (immer scrollen) und 0,5 (kein Bildlauf) liegen. |
UseSkimProofing | Wenn es aktiviert ist, verhindert es plötzliche Scrollbewegungen beim schnellen Umschauen. Dies kann jedoch dazu führen, dass das Scrollen weniger reaktionsfähig ist. Sie kann mit dem Wert SkimProofUpdateSpeed optimiert werden. |
SkimProofUpdateSpeed | Je niedriger der Wert, desto langsamer beschleunigt sich das Scrollen nach dem Überspringen. Empfohlener Wert: 5. |
EyeTrackingTarget
Das Anfügen der EyeTrackingTarget-Komponente ermöglicht eine flexible Handhabung von Ereignissen im Zusammenhang mit dem Blick. Das Bildlaufbeispiel veranschaulicht den Bildlauftext, der beginnt, wenn der Benutzer den Bereich betrachtet und anhält, wenn der Benutzer davon wegschaut .
Schwenken und Zoomen unterstützt
Wer hat noch keine virtuelle Karte verwendet, um nach ihrem Zuhause zu suchen oder völlig neue Orte zu erkunden? Eye Tracking ermöglicht es Ihnen, direkt in die Teile einzutauchen, an denen Sie interessiert sind, und sobald Sie vergrößert sind, können Sie den Verlauf einer Straße reibungslos verfolgen, um Ihre Nachbarschaft zu erkunden! Dies ist nicht nur nützlich, um geografische Karten zu erkunden, sondern auch um Details in Fotos, Datenvisualisierungen oder sogar live gestreamten medizinischen Bildern zu überprüfen. Diese Funktion in Ihrer App zu verwenden ist einfach! Für Inhalte, die in eine Textur gerendert werden (z. B. ein Foto, gestreamte Daten), fügen Sie einfach das PanZoomTexture-Skript hinzu. Verwenden Sie für rectTransformPanZoomRectTransf. Durch die Erweiterung der Funktion Auto Scroll können Sie im Wesentlichen gleichzeitig vertikal und horizontal scrollen und Inhalte direkt um den aktuellen Fokuspunkt des Benutzers vergrößern.
Parameter | BESCHREIBUNG |
---|---|
LimitPanning | Wenn diese Option aktiviert ist, wird der scrollbare Inhalt an seiner Grenze beendet. |
HandZoomEnabledOnStartup | Gibt an, ob Handgesten automatisch aktiviert sind, um eine Zoomgeste auszuführen. Sie sollten es zunächst deaktivieren, um zu vermeiden, dass versehentlich Zoomaktionen ausgelöst werden. |
RendererOfTextureToBeNavigated | Referenzierter Renderer der zu navigierenden Textur. |
Zoom_Acceleration | Zoombeschleunigung, die die Steilheit der Zuordnung der logistischen Geschwindigkeitsfunktion definiert. |
Zoom_SpeedMax | Maximale Zoomgeschwindigkeit. |
Zoom_MinScale | Mindestmaßstab der Textur zum Vergrößern – z. B. 0,5f (die Hälfte der ursprünglichen Größe). |
Zoom_MaxScale | Maximale Skalierung der Textur zum Verkleineren – z. B. 1f (originale Größe) oder 2,0f (doppelt so groß wie ursprünglich). |
Zoom_TimeInSecToZoom | Zeitzoom: Nach dem Auslösen wird für die angegebene Zeit in Sekunden ein Zoom in/out ausgeführt. |
Zoom_Gesture | Art der Handgeste, die zum Vergrößern/Verkleineren verwendet werden soll. |
--- | --- |
Pan_AutoScrollIsActive | Wenn dies aktiviert ist, wird der Text automatisch scrollen, wenn der Benutzer einen aktiven Bereich betrachtet (z. B. den oberen und unteren Teil des Bildlaufbereichs, wenn die vertikale Bildlaufgeschwindigkeit nicht null ist). |
Pan_Speed_x | Wenn sie auf einen ungleichen Wert auf 0 festgelegt ist, wird der horizontale Bildlauf aktiviert. Negative Werte bedeuten eine Änderung der Bildlaufrichtung: Von links nach rechts und von rechts nach links. |
Pan_Speed_y | Wenn sie auf einen ungleichen Wert auf 0 festgelegt ist, wird der vertikale Bildlauf aktiviert. Negative Werte bedeuten eine Änderung der Bildlaufrichtung: Nach unten und nach unten nach oben. |
Pan_MinDistFromCenter | Normalisierter minimaler Abstand in x und y von der Mitte des Trefferfelds des Ziels (0, 0), um zu scrollen. Daher müssen die Werte zwischen 0 (immer scrollen) und 0,5 (kein Bildlauf) liegen. |
UseSkimProofing | Wenn es aktiviert ist, verhindert es plötzliche Scrollbewegungen beim schnellen Umschauen. Dies kann jedoch dazu führen, dass das Scrollen weniger reaktionsfähig ist. Sie kann mit dem Wert SkimProofUpdateSpeed optimiert werden. |
SkimProofUpdateSpeed | Je niedriger der Wert, desto langsamer beschleunigt sich das Scrollen nach dem Überspringen. Empfohlener Wert: 5. |
Aufmerksamkeitsbasierte 3D-Drehung
Stellen Sie sich vor, Sie betrachten ein 3D-Objekt und die Teile, die Sie genauer sehen möchten, drehen sich auf magische Weise auf Sie zu - als würde das System Ihren Geist lesen und wissen, dass es den Artikel auf Sie zu richten! Das ist die Idee für aufmerksamkeitsbasierte 3D-Drehungen, mit denen Sie alle Seiten eines Hologramms untersuchen können, ohne einen Finger zu heben. Um dieses Verhalten zu aktivieren, fügen Sie einfach das OnLookAtRotateByEyeGaze-Skript dem Teil Ihres GameObject mit einer Collider-Komponente hinzu. Sie können mehrere Parameter anpassen, die unten aufgeführt sind, um zu begrenzen, wie schnell und in welche Richtungen sich das Hologramm dreht.
Wie Sie sich vorstellen können, kann dieses Verhalten in einer überfüllten Szene schnell ziemlich abgelenkt werden.
Aus diesem Grund sollten Sie mit deaktiviertem Verhalten beginnen und es dann mithilfe von Sprachbefehlen schnell aktivieren.
Alternativ haben wir ein Beispiel in EyeTrackingDemo-03-Navigation
(Assets/MRTK/Examples/Demos/EyeTracking/Scenes) hinzugefügt, um TargetMoveToCamera zu verwenden, für das Sie ein fokussiertes Ziel auswählen können, und es fliegt Vor Ihnen vor sich her. Sagen Sie einfach "Komm zu mir".
Sobald sie sich im Nahmodus befinden, wird der Modus für die automatische Drehung automatisch aktiviert. In diesem Modus können Sie es von allen Seiten beobachten, wie sie sich entweder einfach zurücklehnen und betrachten, um sie herumlaufen oder es mit der Hand zu greifen und zu drehen. Wenn Sie das Ziel verwerfen (sehen Sie & an, oder sagen Sie "Zurück senden"), kehrt es an seinen ursprünglichen Speicherort zurück und reagiert nicht mehr aus der Ferne auf Sie.
Parameter | BESCHREIBUNG |
---|---|
SpeedX | Horizontale Drehgeschwindigkeit. |
Schnelle | Vertikale Drehgeschwindigkeit. |
InverseX | Um die horizontale Drehrichtung umzukehren. |
InverseY | Um die vertikale Drehrichtung umzukehren. |
RotationThreshInDegrees | Wenn der Winkel zwischen "Blick auf Ziel" und "Kamera zu Ziel" kleiner als dieser Wert ist, tun Sie nichts. Dies ist, um kleine Jittery-Rotationen zu verhindern.. |
MinRotX | Minimaler horizontaler Drehwinkel. Dies ist, um die Drehung in verschiedene Richtungen zu begrenzen. |
MaxRotX | Maximaler horizontaler Drehwinkel. Dies ist, um die Drehung in verschiedene Richtungen zu begrenzen. |
MinRotY | Minimaler vertikaler Drehwinkel, um die Drehung um die x-Achse zu begrenzen. |
MaxRotY | Maximaler vertikaler Drehwinkel, um die Drehung um die y-Achse zu begrenzen. |
Zusammenfassend sollten Die obigen Skripts ihnen den Einstieg in die Verwendung des Blicks für verschiedene Eingabenavigationsaufgaben wie das Scrollen von Texten, das Zoomen und Schwenken von Texturen sowie das Rotieren von 3D-Hologrammen ermöglichen.