HoloLens視線操作下的菜單設(shè)計(jì)有哪些技巧?

Jyadmin 提交于 周二, 04/21/2020 - 17:10

?

HoloLens有三種溝通的技巧:視線(Gaze)手勢(shì)(Gesture)語(yǔ)音(Voice)。語(yǔ)音可能是所有與HoloLens溝通的方式中,最直觀好用的一種,但是有很多不確定因素,例如:身處在比較嘈雜的環(huán)境中時(shí);音準(zhǔn)不正確等,所以設(shè)計(jì)出一套用視線和手勢(shì)可以方便操作的用戶界面(UI)是很有必要的。

我們的視線是不穩(wěn)定的。我們所謂的視線實(shí)際上是一條以我們頭部為起點(diǎn),向兩眼正前方前延伸的直線,我們頭部任何微小轉(zhuǎn)動(dòng)都會(huì)被放大成為視線點(diǎn)的飄移,視線目標(biāo)距離越遠(yuǎn),飄移越明顯。

我們的脖子是人體上非常靈活的關(guān)節(jié),因此視線的飄移會(huì)向各個(gè)方向進(jìn)行,這就是為什么上面的按鈕總是不適合用視線操作——如果向左右飄移還問(wèn)題不大,但如果上下飄移,就會(huì)很容易滑出按鈕的范圍,此時(shí)點(diǎn)擊就會(huì)無(wú)效,甚至?xí)c(diǎn)擊到其他按鈕。

怎樣才能減小視線飄移的影響呢?

最簡(jiǎn)單的做法,就是讓按鈕變成正方形——這樣視線飄移時(shí),就不會(huì)輕易脫出按鈕范圍;

讓按鈕變成正方形

然而,如果UI做成上面那樣,仍然會(huì)有問(wèn)題:如果我們把目光從最左邊的按鈕轉(zhuǎn)移到最右邊的按鈕,我們的頭部需要旋轉(zhuǎn)一個(gè)很大的角度。這就是VR/AR設(shè)備UI的另一個(gè)問(wèn)題:我們頭部的運(yùn)動(dòng)成本,遠(yuǎn)比手上的鼠標(biāo)要高。

為了解決這個(gè)問(wèn)題,我們需要控制按鈕出現(xiàn)的位置和數(shù)量。首先,我們可以讓所有按鈕以用戶視線為中心向外展開(kāi);其次,我們減少按鈕的數(shù)量,直到所有按鈕都能擺放在和用戶視線距離相等的位置上(非官方建議,方形按鈕每次只顯示4個(gè))。這樣得到的UI,大概是下面的樣子:

所有按鈕都能擺放在和用戶視線距離相等的位置上

這樣的話,使用者不管想點(diǎn)擊哪個(gè)按鈕,視線都只需要移動(dòng)很小的范圍就可以達(dá)到目的,而且每個(gè)按鈕有90度的容錯(cuò)范圍,也就沒(méi)那么容易點(diǎn)錯(cuò)了。

4個(gè)按鈕不夠用,該怎么設(shè)計(jì)?

按鈕不夠用時(shí),可以使用層級(jí)菜單。具體的說(shuō),當(dāng)用戶把視線移動(dòng)到某個(gè)按鈕之后,我們可以在這個(gè)按鈕周圍,再打開(kāi)幾個(gè)新的按鈕,作為上一個(gè)按鈕的子按鈕,如圖:

HoloLens層級(jí)菜單

子菜單還可以再打開(kāi)孫菜單。然而,不論菜單有多少層,對(duì)使用者來(lái)說(shuō),可以一直保證:

  • 每次移動(dòng)視線距離都在一個(gè)按鈕的距離之內(nèi)

  • 每次關(guān)注到的按鈕(包括當(dāng)前視線所在按鈕)一直不超過(guò)4個(gè)

因此,使用者的體驗(yàn)會(huì)保持在一個(gè)比較好的范圍之內(nèi),不會(huì)被大量的按鈕沖昏頭腦,也不會(huì)因?yàn)橐蠓纫苿?dòng)頭部而苦惱。

當(dāng)然,為了保證干凈,當(dāng)用戶的視線離開(kāi)當(dāng)前按鈕時(shí),應(yīng)當(dāng)把用戶不再關(guān)注的子按鈕、孫按鈕都關(guān)閉,以保證視野盡量干凈,只保留當(dāng)前注視按鈕所在的一支。

如何將面板顯示出來(lái)?

最初的面板應(yīng)當(dāng)從用戶視線向周圍展開(kāi),這也就意味著面板的位置應(yīng)該是:

  • 以用戶視線方向作射線,將面板放在這條射線上距離用戶雙眼一定的距離(推薦2~3米)的位置

  • 使面板面向用戶,以便用戶能夠看清

HoloLens面板顯示

?

這是一種最簡(jiǎn)單的做法,不管用戶朝向任何方向,都能立刻看到清晰的菜單。但是,作為混合現(xiàn)實(shí)設(shè)備,這樣來(lái)顯示可能會(huì)直接把面板插入到物體里面——真實(shí)感立刻會(huì)打折扣。因此,我們需要修正一下:

  • 以用戶視線方向作射線,先與空間映射模型(Spatial Mapping)做一次碰撞

  • 如果有碰撞,則把面板放在碰撞點(diǎn)上,也許可以稍稍再靠近用戶一些,以確保不會(huì)被遮擋

  • 如果沒(méi)有碰撞,那就放心的把面板放在距離用戶2~3米的地方

  • 使面板面向用戶

這樣,面板總算可以比較好的飄在真實(shí)世界里了。然而,如果用戶距離面板太近,打開(kāi)時(shí)可能會(huì)被巨大的按鈕嚇到,因此我們還應(yīng)當(dāng)根據(jù)面板與用戶的距離,對(duì)面板的尺寸進(jìn)行調(diào)整,使面板適合使用者的視野,不會(huì)太大也不會(huì)太小。

無(wú)論何時(shí),不能讓面板立刻跟隨用戶的視線!

面板直接跟隨用戶視線,會(huì)變得什么也不能點(diǎn),而且在用戶面前永遠(yuǎn)晃著一大片東西,在混合現(xiàn)實(shí)中是一種非常不舒服的體驗(yàn)。

如果真的希望面板能跟隨用戶,可以考慮在面板移出用戶視野范圍的時(shí)候,讓面板悄悄留在用戶的視野范圍邊緣上,這樣可以盡量不要干擾到用戶想看的主體,而需要找回面板的時(shí)候,它永遠(yuǎn)在邊緣上。

另外,面板的移動(dòng)最好要做一些延遲和平滑,不要移動(dòng)的太激烈,感覺(jué)上讓面板像小狗一樣來(lái)追用戶,而不是像膏藥一樣貼在視野里面。