MRTK 中支援眼睛的流覽 - MRTK2
假設您正在閱讀一個平板的資訊,而當您到達顯示文字的結尾時,文字會自動向上捲動以顯示更多內容。 或者,您可以流暢地放大您正在查看的位置。 地圖也會自動調整內容,以在檢視欄位中保留感興趣的專案。 另一個有趣的應用程式是 3D 全像投影的免手觀察,方法是自動將您查看的全像投影部分帶入前端。 這些是此頁面上說明的一些範例,以眼部支援的導覽內容說明。
下列描述假設您已熟悉如何在 MRTK 場景中設定眼球追蹤,以及存取 MRTK Unity 中 眼球追蹤數據 的基本概念。
下列討論的範例全都是 (Assets/MRTK/Examples/Demos/EyeTracking/Scenes/EyeTrackingDemo-03-Navigation) 場景的一部分 EyeTrackingDemo-03-Navigation
。
總結: 自動捲動文字、眼球注視支援的移動瀏覽和虛擬地圖的縮放、免手注視導向 3D 旋轉。
自動捲動
自動捲動可讓使用者捲動文字,而不需要手指。
只要繼續閱讀,文字就會根據使用者正在查看的位置自動向上或向下捲動。
您可以從 (Assets/MRTK/Examples/Demos/EyeTracking/Scenes) 中 EyeTrackingDemo-03-Navigation
提供的範例開始。
此範例會使用 TextMesh 元件,以彈性載入和格式化新文字。
若要啟用自動捲動,只要將下列兩個腳本新增至文本框的碰撞器元件:
ScrollRectTransf
若要捲動 TextMesh 或更普遍的 RectTransform 元件,您可以使用 ScrollRectTransf 腳本。 如果您想要捲動紋理而非 RectTransform,請使用 ScrollTexture 而不是 ScrollRectTransf。 在下列情況下,Unity 編輯器中提供的 ScrollRectTransf 參數會更詳細地說明:
參數 | 描述 |
---|---|
LimitPanning | 如果啟用,將會在其界限停止可捲動的內容。 |
RectTransfToNavigate | 要捲動的 RectTransform 參考。 |
RefToViewport | 可捲動內容的父 RectTransform 參考,以判斷正確的位移和界限。 |
AutoGazeScrollIsActive | 如果啟用,如果使用者查看 使用中區域 (例如,如果垂直滾動速度不是零) ,則文字會自動捲動。 |
ScrollSpeed_x | 如果設定為值不相等為零,則會啟用水平捲動。 負值表示卷動方向的變更:從左至右與從右至左。 |
ScrollSpeed_y | 如果設定為值不相等為零,則會啟用垂直捲動。 負值表示卷動方向的變更:向上到向下和向下到向上。 |
MinDistFromCenterForAutoScroll | 從目標點擊方塊中央 (0、0) 卷動的 x 和 y 中正規化最小距離。 因此,值的範圍必須介於0 (一律捲動) 和0.5 (沒有捲動) 。 |
UseSkimProofing | 如果啟用,它會在快速查看時防止突然捲動移動。 不過,這可能會讓卷動感覺較不回應。 您可以使用 SkimProofUpdateSpeed 值進行調整。 |
SkimProofUpdateSpeed | 值越低,捲動速度越慢,會在略過之後加速。 建議的值:5。 |
EyeTrackingTarget
附加 EyeTrackingTarget 元件可讓您彈性地處理眼球注視相關事件。 卷動範例示範當使用者 查看 面板時啟動的卷動文字,並在使用者 離開 面板時停止。
注視支持的行動瀏覽和縮放
誰在搜尋首頁之前未使用虛擬地圖,或探索全新的位置? 眼球追蹤可讓您直接深入探討您感興趣的部分,一旦放大,您就可以順暢地遵循街道的課程來探索您的鄰近地區! 這不僅適用於探索地理地圖,也可用來查看相片、數據視覺效果或甚至即時串流醫療影像中的詳細數據。 若要在應用程式中使用這項功能很簡單! 針對轉譯至 紋理 (的內容,例如相片、串流數據) ,只需新增 PanZoomTexture 腳本即可。 針對 RectTransform ,請使用 PanZoomRectTransf。 延伸 自動捲 動功能,我們基本上能夠同時垂直和水平捲動,並直接放大使用者目前焦點點周圍的內容。
參數 | 描述 |
---|---|
LimitPanning | 如果啟用,將會在其界限停止可捲動的內容。 |
HandZoomEnabledOnStartup | 指出是否自動啟用手勢來執行縮放手勢。 您一開始可能會想要停用它,以避免意外觸發縮放動作。 |
RendererOfTextureToBeNavigated | 要巡覽之紋理的參考轉譯器。 |
Zoom_Acceleration | 縮放加速,定義羅吉斯速度函式對應的尖峰度。 |
Zoom_SpeedMax | 最大縮放速度。 |
Zoom_MinScale | 縮放的紋理大小下限 - 例如 0.5f (原始大小的一半) 。 |
Zoom_MaxScale | 縮小紋理的最大縮放比例-例如,1f (原始大小) 或 2.0f (原始大小) 倍。 |
Zoom_TimeInSecToZoom | 計時縮放:觸發後,將會針對指定的時間量,以秒為單位執行放大/縮小。 |
Zoom_Gesture | 用來放大/縮小的手勢類型。 |
--- | --- |
Pan_AutoScrollIsActive | 如果啟用,如果使用者查看 使用中區域 (例如,如果垂直滾動速度不是零) ,則文字會自動捲動。 |
Pan_Speed_x | 如果設定為值不相等為零,則會啟用水平捲動。 負值表示卷動方向的變更:從左至右與從右至左。 |
Pan_Speed_y | 如果設定為值不相等為零,則會啟用垂直捲動。 負值表示卷動方向的變更:向上到向下和向下到向上。 |
Pan_MinDistFromCenter | 從目標點擊方塊中央 (0、0) 卷動的 x 和 y 中正規化最小距離。 因此,值的範圍必須介於0 (一律捲動) 和0.5 (沒有捲動) 。 |
UseSkimProofing | 如果啟用,它會在快速查看時防止突然捲動移動。 不過,這可能會讓卷動感覺較不回應。 您可以使用 SkimProofUpdateSpeed 值進行調整。 |
SkimProofUpdateSpeed | 值越低,捲動速度越慢,會在略過之後加速。 建議的值:5。 |
以注意為基礎的 3D 旋轉
想像一下,查看 3D 物件和您想要更密切看到的部分會更接近您,就像系統會讀出您的心意並知道將項目轉向您一樣! 這是以注意力為基礎的 3D 旋轉概念,可讓您調查全像投影的所有側邊,而不需要手指。 若要啟用此行為,只要使用 Collider 元件將 OnLookAtRotateByEyeGaze 腳本新增至 GameObject 的一部分即可。 您可以調整以下所列的數個參數,以限制全像投影會旋轉的速度和方向。
如您所想像,讓此行為隨時都處於作用中狀態,可能會在密集的場景中變得相當令人分心。
這就是為什麼您可能想要從停用此行為開始,然後使用語音命令快速加以啟用的原因。
或者,我們在 (Assets/MRTK/Examples/Demos/EyeTracking/Scenes) 中新增了一個範例 EyeTrackingDemo-03-Navigation
,以使用 TargetMoveToCamera ,您可以選取焦點目標,並直接說 出「來我」。
在接近模式中之後,會自動啟用自動旋轉模式。 在該模式中,您可以從所有側邊觀察它,只要向下傾斜並查看它、四處走動,或觸達手邊來抓取並旋轉它。 當您關閉目標 (看起來 & 捏合或說 「傳回」) 時,它會返回其原始位置,並停止從遠方回應您。
參數 | 描述 |
---|---|
SpeedX | 水平旋轉速度。 |
迅速 | 垂直旋轉速度。 |
InverseX | 反轉水平旋轉方向。 |
反轉 | 反轉垂直旋轉方向。 |
RotationThreshInDegrees | 如果 「注視目標」和「相機到目標」之間的角度小於此值,則不執行任何動作。 這是為了防止小型的抖動旋轉。 |
MinRotX | 水平旋轉角度下限。 這是以不同方向限制旋轉。 |
MaxRotX | 水平旋轉角度上限。 這是以不同方向限制旋轉。 |
MinRotY | 最小垂直旋轉角度,以限制繞 x 軸的旋轉角度。 |
MaxRotY | 垂直旋轉角度上限,以限制繞 Y 軸的旋轉角度。 |
總而言之,上述腳本應該可讓您開始對各種輸入導覽工作使用眼球注視,例如捲動文字、縮放和移動流覽紋理,以及旋轉調查 3D 全像投影。