召喚和超能力:VR 遠距離交互設計
在 VR/AR 世界,有些時候物體會出現在雙手夠不到的地方,或超出用戶的直接操控范圍。這時該怎么辦呢?
Leap Motion 一貫秉持的設計理念是:最自然、最直覺化的交互一定是直接且物理的。用手直接操控物體順應了我們長久以來習慣的本能,省去了學習新交互方法的時間。不過在 VR/AR 世界,有些時候物體會出現在雙手夠不到的地方,或超出用戶的直接操控范圍。這時該怎么辦呢?我們可以讓用戶走到物體旁邊,又或者,我們可以賦予用戶超能力!
我們最新的交互設計實驗開發出了三種把遠處物體召喚到臂展范圍內的原型:第一種是簡單的動畫召喚技術,適用于與單個物體的交互,第二種賦予用戶 “意念移物”的體驗,第三種直接增強了用戶手臂在虛擬世界中的能力。
實驗一:動畫召喚
第一種方案可以有效地選取遙遠的單一靜物,并將其直接召喚至你手中。一旦完成查看和交互后,你還可以把它送回原處。這就像從架子上選中一個物體,把它召喚到手邊再讓它原路返回,這一用例適用于各類游戲、教育和數據可視化應用等。
這種方法需要調動四種交互過程:選取、召喚、抓握/交互以及歸位。
1. 選取
許多 VR 開發者常常會掉入一個陷阱,認為我們的雙手和手柄的使用機制類似,并以此為基礎進行交互設計。選取遠處物體需要對目標精確瞄準,這種情況下很適合使用射線(raycasting)。不過,讓手指或整只手懸空瞄準某個方位是很難的,特別是當你需要依靠瞄準觸發動作時。
與其從手部直接發射射線,我們的做法是將頭部/頭顯位置作為參考位置,通過添加偏移量估算出肩膀位置,再從肩膀處發出射線,經過手掌位置兩點成線直達目標。
這種方法可以大大提升射線投射的穩定性,當射線擊中物體的碰撞器時,線渲染器和物體周圍的高亮光圈會示意使用者。
除了確保射線的穩定投射,我們還為遠處物體添加了范圍更大的代理碰撞器,有助于增加目標物面積,提高命中率。此外,我們還為代理碰撞器添加了邏輯程序, 一旦目標射線擊中遠處物體的代理碰撞器,線渲染器會被直接吸附到物體的中心點。這一結果相當于切斷目標物周圍區域外的線渲染器,使得這些物體能夠被精確命中。
在確定了選取的運作機制后,我們還要確定何時激活這個動作,因為一旦物體移至使用者雙手可及之處,使用者就要從“選取模式”返回常規的直接操作模式。
由于從手部發射射線擊中遠處目標的交互太過抽象化,我們考慮用相關物理隱喻來指向這一動作。如果一個小孩想要去拿他夠不著的東西,他會本能地張開五指伸手去抓來表達他的愿望。
于是我們決定用這一動作來激活選取模式。當你在距離頭部一定位置處張開五指,我們就開始向可能的目標物發射射線。
為了完成這一選取交互,我們還要一個確認指令,以確定懸浮物體就是我們想要選取的物體。我們再一次借鑒了小孩想抓取遠處物體的做法,如果你對著懸浮物體彎曲手指做出一個抓取的動作,就能選中該物體。隨著你手指繼續彎曲,懸浮物體和它周圍的高亮光圈會縮小,模擬一種被握住的狀態。當你的五指全部攥緊,物體就會回到原來的大小,高亮光圈的顏色也會變化,說明選取成功。
2. 召喚
現在,遠處的物體已被選中,接下來,我們想讓它移至可直接操作的范圍內。我們又一次借鑒了現實生活中的手勢。試想當我們想讓某些物體靠近時,我們通常會手掌朝上,快速勾勾手指。
在選取動作的最后,我們五指攥緊,手掌朝向目標物。因此,我們決定召喚動作的第一步是要保證手掌(在一定距離內)朝上。一旦這個動作到位后,我們會讓物體按手指彎曲度比例向手部移動。一旦你的手指全部攥緊,你會發現目標物已經到了你的手中,并處在被抓取的狀態。
在測試階段,我們還發現許多使用者在選取物體后,手臂伸直,手掌朝向目標物,手指攥成抓取動作,但是他們隨后會把攥緊的拳頭往回收來實現抓取,好像在把目標物往自己身上拉。而我們設置的激活召喚動作是手掌朝上,并根據手指彎曲度召喚物體,這一動作才把物體立即召喚至使用者手中。
將選取和召喚指令合二為一會比兩套分開的動作效率高很多,但分開的動作可以提升控制力。不過,我們的激活方式非常靈活,這兩種選取召喚的動作可以并存,使用者可以自己決定他們想要的交互方式。
3. 抓握和交互
一旦物體到了你手中,所有額外的召喚邏輯就失效了?,F在,你已經得到了一個交互物體(InteractionObject)!你可以把它從左手傳到右手,放在虛擬世界中某個位置,并進行交互(如果物體有 UI 組件)。只要物體處在使用者觸手可及的范圍內,它就不能被再次召喚。
4. 歸位
好了,現在你用完了這個東西,接下來該如何做呢?如果你抓住這個物體并伸直手臂 (超過以你頭部位置為圓心的預設半徑范圍外),線渲染圈會出現并給出物體返回原來位置的路線。一旦你在路線可見的情況下放開物體,物體會自動回到錨位。
總的來說,這一執行能夠準確完成任務,且并不費力。它可以輕松地驅動整套基本召喚流程,完成對單一靜物的選取、召喚和歸位。但是,它缺乏物理感,過度依賴手勢,且物體只能在規定的兩個位置間按照既定路線移動。
基于這個因素,該方法較適合在召喚 UI 類非實體物,或當使用者物理移動空間有限,需要精準的點對點召喚的情況下使用。
實驗二:賦予“意念力”
我們在第一個實驗中成功通過既定路線召喚并送回靜態物,不過,我們還想進一步探索如何才能召喚動態的物體。我們能否將物體發射到使用者所在的位置,讓物體落在使用者手中或落在使用者直接操控范圍內呢?這一實驗的靈感來自于《星球大戰》中的原力,《X 戰警》中萬磁王把槍從敵人手中抽回來的一幕,以及巫師互相解除詛咒等。
在這個實驗中,可以被召喚的物體是處于物理啟動狀態下的(physics-enabled)。也就是說,大多數情況下這些物體都在地上,而不像在架子上那樣處于和我們視線平行的位置。為了讓召喚過程更加輕松,我們決定改變下選取模式中的手勢,也就是從手掌面向目標物張開這一姿勢變成一種手掌張開,自然朝上,手指指向目標物的姿勢。
為了迅速完成召喚,我們決定把懸浮和選取動作合二為一。我們保留了原先的射線選取方式,只不過取消了選取手勢。我們保留了彎曲手指的召喚手勢,使用者只需手掌向上張開并指向目標物,彎曲手指就能快速選取并召喚物體。
起初,我們想把使用者的手作為目標,讓召喚物自動向手部發射。雖然聽起來很有意思,不過,讓物體自己精準地落入手中,這離物理原則有點遠。為了解決這一問題,我們把目標從你的手部偏移到了你的前方,并在物體中加入隨機的微小扭矩來模擬爆炸式發射。我們還在發射點加入沖擊波和光點,并按照每個物體的當下速度進行發射,完成爆炸效果。
這樣交互過程就被極大簡化了,也就是說,你可以快速連續召喚不同物體,甚至在前一個物體尚未到達時就召喚下一個!
一旦你熟練掌握這個本領,你可以對著正向你飛來的召喚物進行再召喚。
相比實驗一的動畫召喚,實驗二在動態連貫性方面更為出色,更加符合物理定律。這一交互過程也更為輕松,物理的附加變量也讓這一召喚過程更有樂趣。不過這一變化也存在一個小問題,物體可能會突然降落在你的觸及范圍之外,不過只需再召喚一次,便可輕松解決這一問題。盡管這類召喚仍然基于手勢,卻比之前的方法運用了更多的物理特性。
實驗三:延伸臂!
我們第三個實驗也是我們最后一個實驗,這一次,我們嘗試反過來看問題。與其通過手勢命令遙遠的物體來到我們跟前,何不延長手臂來抓取遠處的物體呢。
這種想法需要向遠處物體發射潛在的 “交互手 ”(InteractionHands),通過交互引擎(Interaction Engine)進行抓取。一旦使用者抓住物體后,就能對物體實行完全操控,不但可以把物體抓到手邊,還能完成物體換位、釋放等操作。
這種方法涉及了一些神經科學的概念,如身體圖式和近體空間。我們的大腦通過處理收到的信號不斷調整身體和身體各部位在空間中的姿勢,以便我們在周圍空間中采取立即行動。當我們使用工具時,我們的身體圖式得到了擴展,把工具也包括在內,使得近體空間也相應外擴至工具可以觸及的范圍。當我們使用耙子或開車時,大腦會把這些工具當作我們身體的一部分。
圖解來自 Sandra Blakeslee 和 Matthew Blakeslee 的聯合著作《The Body Has a Mind of Its?Own》。
我們可以把身體圖式看作一種適應力很強的心智模型,隨著模型的不斷進化,它已經適應了人類使用的各種物理工具。因此,我們相信通過虛擬手段來擴展我們的身體圖式是最自然的方式。
對這次的實驗來說,方法的核心理念是把我們雙臂可觸及范圍重新映射成等比例放大的投射空間,這樣可以有效地把我們的手臂延長到目標物所在的地方。這一次的交互分三部分:選取/懸浮、抓取以及握住。
1.選取/懸浮
在選取物體時,我們再次參照前兩次實驗的邏輯,讓射線通過肩膀和手掌擊中比目標物更大的代理碰撞器。一旦射線擊中該代理碰撞器,我們向物體位置再射出一個新的藍色手的圖像和潛在的交互手(InteractionHand),交互手的物理碰撞器會完成真正的抓取動作。我們采用與前兩個執行命令類似的吸附邏輯,當物體懸浮時,藍色的發射手會吸附到物體前面一點的位置,并準備好抓取物體。
向遠處物體的代理碰撞器發射射線,同時射出一只手,讓手直接吸附在物體正前方位置,準備好抓取物體。
我們還考慮了另一種替代方式,不需吸附就能讓遠處物體懸浮并射出一只綠手,同時,使用者可以完全保留對手的操控權。這種想法能讓交互引擎(Leap Motion Interaction Engine)對遠處物體實現全自由操控,如軟接觸等。
要完成這一動作,我們將雙手可觸及區域重新映射出一個預設的投射空間,這個投射空間范圍大到足夠將最遠的物體都包含在內。一旦射線擊中了物體的代理碰撞器,我們會將發射手送到空間內的相應位置,只要你的射線仍打在代理碰撞器上,發射手就能自由移動。這一操作會在物體上產生氣泡,用發射手就能實現物體的自由懸浮。
讓遠處物體自由懸浮可以實現對物體的軟接觸
這一動作聽起來很有意思,但我們最后發現控制難度太大。一般情況下,虛擬物體的軟接觸交互需要一個適應過程,因為對游戲引擎來說,雙手是具有不可阻擋力量的固定物體。在放大的投射空間里的進行手部操作會進一步加劇這一現象。發射手射出的距離越遠,你真實手部的微小動作也會等比例放大。很多時候我們只想讓手靠近遠處的物體,卻發現力量太大,反而把物體拍走了。經過一系列的測試后,我們放棄了自由懸浮的方式,繼續采用吸附懸浮的方式。
2. 抓取
對這個執行來說,抓取動作和用交互引擎抓取任何虛擬物體一樣容易。我們已經讓藍色發射手直接吸附在遠處物體前方的位置上,就只剩下直接抓取這個動作了。一旦握住了物體,我們會進入下一個投射空間抓握行為(projective space held behavior),也是這次執行的核心。
3. 握住
一旦你抓取了遠處的物體,你和物體之間的距離就形成一個投射空間,你實際的觸及區域也被重新映射放大了。在這個投射空間中,你手部的運動弧線會對應形成發射手的運動弧線。
不過,如果你漸漸把手收回,你的投射空間范圍也會進行動態調整。隨著你真實手部和參考肩部位置的距離縮小為零,投射空間也會慢慢縮小成你真實手部的可觸及區域。
這樣一來,隨著你的手部慢慢回到離身體最近的位置,投射空間也會縮小至你真實手部的可觸及范圍,此時,你的發射手和你的真實手部融合,你就能直接握住該物體。
雖然這種能夠動態調整的投射空間抓握行為背后的邏輯聽起來非常復雜,但在實際操作中,這一動作會讓你覺得和伸手一樣自然。
只要稍加練習,這對延伸臂用起來和雙手一樣自然,而且它還能擴大雙手的觸及范圍。有了延伸臂,你可以拋擲物體、接住物體并調換物體位置,同時,這些動作會變得趣味十足!
延伸臂就是這么神奇。你只需花幾分鐘適應動作的激活模式,就能切實感受到你的近體空間完全覆蓋了整個區域。那些之前夠不到的物體,你的發射手只要一秒就能夠到它。相比之前兩種執行方式,這一方法能夠真正增強你的能力。隨著技術發展把身體圖式推向極致并為其注入真正的超能力,我們有理由期待更多新作品問世。
圖片來自 Leap Motion、picturesby
作者:Leap Motion 首席VR交互工程師 Barrett Fox、VR設計師 Martin Schubert
來源:https://www.leiphone.com/news/201801/slGSTCM5qR0TO8pW.html
本文來源于人人都是產品經理合作媒體@雷鋒網,作者@Leap Motion、Martin Schubert
題圖來自PEXELS,基于CC0協議
- 目前還沒評論,等你發揮!