共用方式為


MRTK 中的眼睛輔助導航 — MRTK2

MRTK

想像你正在閱讀一張板上的資訊,當你讀到顯示文字的末尾時,文字會自動往上捲動,顯示更多內容。 或者你也可以流暢地放大你正在看的地方。 地圖也會自動調整內容,讓感興趣的事物保持在你的視野範圍內。 另一個有趣的應用是免持觀察3D全息影像,透過自動將你正在觀看的全息影像部分帶到前方。 以下是本頁在眼導導航脈絡中描述的一些範例。

以下說明假設你已經熟悉如何在 MRTK 場景中設定眼動追蹤 ,以及在 MRTK Unity 中存取眼動追蹤資料 的基本操作。 以下討論的範例皆屬於 EyeTrackingDemo-03-Navigation (資產/MRTK/範例/示範/眼動追蹤/場景/眼動追蹤示範-03-導航) 場景的一部分。

摘要: 文字自動捲動、支援眼睛凝視的虛擬地圖平移與縮放、免持凝視導向 3D 旋轉。

自動捲軸

自動捲動讓使用者能在不費吹灰之力的情況下瀏覽文字。 只要繼續閱讀,文字會根據使用者的視線位置自動向上或向下捲動。 你可以從 (Assets/MRTK/Examples/Demo/EyeTracking/Scenes) 裡提供的 EyeTrackingDemo-03-Navigation 範例開始。 此範例使用 TextMesh 元件,允許靈活載入與格式化新文字。 要啟用自動捲動,只需在文字框的碰撞器元件中加入以下兩個腳本:

ScrollRectTransf 捲卷

要捲動 TextMesh 或更一般的 RectTransform 元件,可以使用 ScrollRectTransf 腳本。 如果你想捲動材質而非 RectTransform,請使用 ScrollTexture 代替 ScrollRectTransf。 以下將更詳細說明 Unity 編輯器中可用的 ScrollRectTransf 參數:

參數 描述
極限平移 啟用時,會在邊界停止可捲動的內容。
RectTransfToNavigate 參考 RectTransform 來捲動。
RefToViewport 參考可捲動內容的父 RectTransform 以判斷正確的偏移量與邊界。
AutoGazeScrollIsActive 啟用後,當使用者看到 活躍區域 時,文字會自動捲動, (例如捲動面板的上下區域,且垂直捲動速度) 為零。
ScrollSpeed_x 若設定為不等於零的值,則會啟用水平捲動。 負值表示滾動方向改變:從左到右,對比從右到左。
ScrollSpeed_y 若設定為不等於零的值,垂直捲動會被啟用。 負值表示捲動方向改變:向上到下,而不是下到上。
MinDistCenterForAutoScroll 從目標碰撞盒中心以 x 和 y 標準化的最小距離 (0、0) 捲動。 因此,數值必須介於 0 (永遠捲動) 到 0.5 (無捲動) 之間。
使用SkiProofing 啟用後,它能防止快速環顧時突然捲動。 不過這可能會讓滑動感覺不夠靈敏。 它可以用 SkimProofUpdateSpeed 值來調整。
SkimProof更新速度 數值越低,瀏覽後滾動速度越慢。 建議價值:5。

Unity 中的眼睛支援捲軸設定

EyeTrackingTarget

附加 EyeTrackingTarget 元件後,能靈活處理與眼球凝視相關的事件。 捲動範例展示了從使用者 面板開始、 移開 視線時停止的捲動文字。 Unity 中的眼睛支援捲軸設定:EyeTrackingTarget

凝視支援的平移與變焦

誰沒用過虛擬地圖來尋找家園或探索全新地點呢? 眼動追蹤讓你能直接進入你感興趣的區域,放大後,你就能順暢地沿著街道探索你的社區! 這不僅有助於探索地理地圖,也能用來檢視照片、資料視覺化,甚至是即時串流的醫療影像細節。 在你的應用程式中使用這項功能非常簡單! 對於渲染成 紋理 (的內容,例如照片、串流資料) ,只需加入 PanZoomTexture 腳本即可。 對於 RectTransform ,請使用 PanZoomRectTransf。 透過擴展 自動捲動 功能,我們基本上能同時垂直與水平捲動,並將內容放大到使用者當前焦點周圍。

參數 描述
極限平移 啟用時,會在邊界停止可捲動的內容。
HandZoomEnabledOnStartup 表示是否會自動啟用手勢以執行縮放手勢。 你可能一開始想關閉它,避免不小心觸發縮放動作。
RendererOfTextureToBeNavigated 要導航的貼圖參考渲染器。
Zoom_Acceleration Zoom 加速度定義了邏輯速度函數映射的陡峭性。
Zoom_SpeedMax 最大變焦速度。
Zoom_MinScale 貼圖的最小縮放比例——例如,0.5f (原始尺寸的一半) 。
Zoom_MaxScale 縮放時貼圖的最大縮放比例——例如,1 f(1 f) (原始尺寸) ,或 2.0f (是原始尺寸) 的兩倍。
Zoom_TimeInSecToZoom 定時縮放:一旦觸發,會進行一次放大/縮小,持續時間(秒數)。
Zoom_Gesture 用來放大縮小的手勢類型。
--- ---
Pan_AutoScrollIsActive 啟用後,當使用者看到 活躍區域 時,文字會自動捲動, (例如捲動面板的上下區域,且垂直捲動速度) 為零。
Pan_Speed_x 若設定為不等於零的值,則會啟用水平捲動。 負值表示滾動方向改變:從左到右,對比從右到左。
Pan_Speed_y 若設定為不等於零的值,垂直捲動會被啟用。 負值表示捲動方向改變:向上到下,而不是下到上。
Pan_MinDistFromCenter 從目標碰撞盒中心以 x 和 y 標準化的最小距離 (0、0) 捲動。 因此,數值必須介於 0 (永遠捲動) 到 0.5 (無捲動) 之間。
使用SkiProofing 啟用後,它能防止快速環顧時突然捲動。 不過這可能會讓滑動感覺不夠靈敏。 它可以用 SkimProofUpdateSpeed 值來調整。
SkimProof更新速度 數值越低,瀏覽後滾動速度越慢。 建議價值:5。

Unity 中的眼睛支援平移與縮放設定

基於注意力的三維旋轉

想像一下,看一個三維物體,你想看得更清楚的部分突然神奇地轉向你——彷彿系統能讀懂你的心思,知道該把物品轉向你! 這就是基於注意力的3D旋轉的理念,讓你能在不費吹灰之力的情況下調查全息影像的各個方向。 要啟用此行為,只需在遊戲物件中有碰撞器元件的部分加入 OnLookAtRotateByEyeGaze 腳本即可。 你可以調整以下列出的幾個參數,限制全息影像轉動的速度和方向。

你可以想像,這種行為在擁擠的場景中隨時持續存在,很快就會變得相當分心。 這就是為什麼你可能想先關閉這個行為,然後用語音指令快速啟用。 另外,我們在 (Assets/MRTK/Examples/Demos/EyeTracking/Scenes) 加入範例EyeTrackingDemo-03-Navigation,使用 TargetMoveToCamera 可以選擇聚焦目標,目標會飛到你前面——只要說「Come to me」。

一旦進入近距離模式,自動旋轉模式會自動啟用。 在那個模式下,你可以從各個角度觀察它,無論是單純往後靠著看、繞著它走,或伸手抓住並用手旋轉它。 當你 (&) 關閉目標或說 「送回去」 ,它會回到原本位置,並停止遠距離對你的反應。

參數 描述
SpeedX 水平旋轉速度。
SpeedY 垂直旋轉速度。
InverseX 以反轉水平旋轉方向。
反向 Y 將垂直旋轉方向反轉。
旋轉 三度 如果「凝視目標」與「鏡頭對目標」之間的角度小於此值,則不要操作。 這是為了防止輕微的抖動旋轉......
《我的反擊》系列 最小水平旋轉角。 這是為了限制旋轉方向的不同方向。
MaxRotX 最大水平旋轉角度。 這是為了限制旋轉方向的不同方向。
MinRotY 最小的垂直旋轉角度以限制繞 x 軸的旋轉。
MaxRotY 最大垂直旋轉角度以限制繞 y 軸旋轉。

Unity 中眼睛支援的 3D 旋轉設定

總結來說,上述腳本應該能讓你開始使用眼視操作來執行各種輸入導航任務,例如捲動文字、縮放與平移貼圖,以及旋轉調查的 3D 全息影像。

另請參閱


回到「混合現實工具包中的眼動追蹤」