?
HoloLens有三種溝通的技巧:視線(Gaze)、手勢(Gesture)、語音(Voice)。語音可能是所有與HoloLens溝通的方式中,最直觀好用的一種,但是有很多不確定因素,例如:身處在比較嘈雜的環境中時;音準不正確等,所以設計出一套用視線和手勢可以方便操作的用戶界面(UI)是很有必要的。
我們的視線是不穩定的。我們所謂的視線實際上是一條以我們頭部為起點,向兩眼正前方前延伸的直線,我們頭部任何微小轉動都會被放大成為視線點的飄移,視線目標距離越遠,飄移越明顯。
我們的脖子是人體上非常靈活的關節,因此視線的飄移會向各個方向進行,這就是為什么上面的按鈕總是不適合用視線操作——如果向左右飄移還問題不大,但如果上下飄移,就會很容易滑出按鈕的范圍,此時點擊就會無效,甚至會點擊到其他按鈕。
怎樣才能減小視線飄移的影響呢?
最簡單的做法,就是讓按鈕變成正方形——這樣視線飄移時,就不會輕易脫出按鈕范圍;
![讓按鈕變成正方形](/sites/default/files/inline-images/%E8%AE%A9%E6%8C%89%E9%92%AE%E5%8F%98%E6%88%90%E6%AD%A3%E6%96%B9%E5%BD%A2.jpg)
然而,如果UI做成上面那樣,仍然會有問題:如果我們把目光從最左邊的按鈕轉移到最右邊的按鈕,我們的頭部需要旋轉一個很大的角度。這就是VR/AR設備UI的另一個問題:我們頭部的運動成本,遠比手上的鼠標要高。
為了解決這個問題,我們需要控制按鈕出現的位置和數量。首先,我們可以讓所有按鈕以用戶視線為中心向外展開;其次,我們減少按鈕的數量,直到所有按鈕都能擺放在和用戶視線距離相等的位置上(非官方建議,方形按鈕每次只顯示4個)。這樣得到的UI,大概是下面的樣子:
![所有按鈕都能擺放在和用戶視線距離相等的位置上](/sites/default/files/inline-images/%E6%89%80%E6%9C%89%E6%8C%89%E9%92%AE%E9%83%BD%E8%83%BD%E6%91%86%E6%94%BE%E5%9C%A8%E5%92%8C%E7%94%A8%E6%88%B7%E8%A7%86%E7%BA%BF%E8%B7%9D%E7%A6%BB%E7%9B%B8%E7%AD%89%E7%9A%84%E4%BD%8D%E7%BD%AE%E4%B8%8A.jpg)
這樣的話,使用者不管想點擊哪個按鈕,視線都只需要移動很小的范圍就可以達到目的,而且每個按鈕有90度的容錯范圍,也就沒那么容易點錯了。
4個按鈕不夠用,該怎么設計?
按鈕不夠用時,可以使用層級菜單。具體的說,當用戶把視線移動到某個按鈕之后,我們可以在這個按鈕周圍,再打開幾個新的按鈕,作為上一個按鈕的子按鈕,如圖:
![HoloLens層級菜單](/sites/default/files/inline-images/HoloLens%E5%B1%82%E7%BA%A7%E8%8F%9C%E5%8D%95.jpg)
子菜單還可以再打開孫菜單。然而,不論菜單有多少層,對使用者來說,可以一直保證:
-
每次移動視線距離都在一個按鈕的距離之內
-
每次關注到的按鈕(包括當前視線所在按鈕)一直不超過4個
因此,使用者的體驗會保持在一個比較好的范圍之內,不會被大量的按鈕沖昏頭腦,也不會因為要大幅度移動頭部而苦惱。
當然,為了保證干凈,當用戶的視線離開當前按鈕時,應當把用戶不再關注的子按鈕、孫按鈕都關閉,以保證視野盡量干凈,只保留當前注視按鈕所在的一支。
如何將面板顯示出來?
最初的面板應當從用戶視線向周圍展開,這也就意味著面板的位置應該是:
-
以用戶視線方向作射線,將面板放在這條射線上距離用戶雙眼一定的距離(推薦2~3米)的位置
-
使面板面向用戶,以便用戶能夠看清
![HoloLens面板顯示](/sites/default/files/inline-images/HoloLens%E9%9D%A2%E6%9D%BF%E6%98%BE%E7%A4%BA.jpg)
?
這是一種最簡單的做法,不管用戶朝向任何方向,都能立刻看到清晰的菜單。但是,作為混合現實設備,這樣來顯示可能會直接把面板插入到物體里面——真實感立刻會打折扣。因此,我們需要修正一下:
-
以用戶視線方向作射線,先與空間映射模型(Spatial Mapping)做一次碰撞
-
如果有碰撞,則把面板放在碰撞點上,也許可以稍稍再靠近用戶一些,以確保不會被遮擋
-
如果沒有碰撞,那就放心的把面板放在距離用戶2~3米的地方
-
使面板面向用戶
這樣,面板總算可以比較好的飄在真實世界里了。然而,如果用戶距離面板太近,打開時可能會被巨大的按鈕嚇到,因此我們還應當根據面板與用戶的距離,對面板的尺寸進行調整,使面板適合使用者的視野,不會太大也不會太小。
無論何時,不能讓面板立刻跟隨用戶的視線!
面板直接跟隨用戶視線,會變得什么也不能點,而且在用戶面前永遠晃著一大片東西,在混合現實中是一種非常不舒服的體驗。
如果真的希望面板能跟隨用戶,可以考慮在面板移出用戶視野范圍的時候,讓面板悄悄留在用戶的視野范圍邊緣上,這樣可以盡量不要干擾到用戶想看的主體,而需要找回面板的時候,它永遠在邊緣上。
另外,面板的移動最好要做一些延遲和平滑,不要移動的太激烈,感覺上讓面板像小狗一樣來追用戶,而不是像膏藥一樣貼在視野里面。