這是我設計和開發一款 AR 籃球應用的經歷

分類:實用技巧 時間:2017-10-03

【9 月 22 日更新】AR Solo Basketball 終於上線 App Store 了。

最近利用 ARKit 和 Unity 開發的一個小項目 AR 籃球 Solo Shooting App,而且很榮幸,經過篩選,這個小 demo 被 ARKitweekly 官方 Twitter 和 Facebook 推薦了!

但由於和他們運營人員有些地方談不攏,就沒放在 MadeWithARKit 這個大賬號上面了。現在給大家分享幾點小感悟。由於作者是設計師不是專業開發者,所以內容偏設計多一點。

先預覽一下項目視頻。

鏈接: ARKit Basketball Solo Shooting

ARKit 能夠實時識別和跟蹤三維空間中鏡頭的位置,能夠感受光線的位置和強度,並附加在虛擬模型上。在 Unity 插件中也提供了能接受陰影的透明地板材質讓模型看起來更加融入場景,以及附帶粒子系統用來作為檢測平面過程的視覺反饋。局限的地方在於 ARKit 本身是利用手持智能設備為載體,交互操作的輸入非常的有限,同樣輸出設備為手持設備的屏幕,屏幕的大小直接決定了觀察範圍的大小。還特別燒電,Xcode 的分析中接近一半電量都被 GPU 所占去。

首次引導系統設計 壹

我身邊的人在利用 ARKit 設計時最頭疼就是首次引導系統的設計,因為要得到一個貼合環境的效果,ARKit 需要用戶首先主動去拍攝和尋找平面,然後等待系統尋找鏡頭內的平面。因為系統尚未成熟,不能瞬間辨別平面,所以就需要用戶完成額外一系列操作去輔助系統。

另外由於能顯示的範圍只有手持設備的屏幕那麽大,如果使用的模型很大,就得經歷「低頭找平面」到「擡頭看模型」的過程。在 AR 世界裏,360 度全是可被利用的環境,而且運用第一人稱視角進行設計,就要讓用戶不迷失在「找模型」和「找信息」的困境裏,就得最好用戶的註意力引導工作。

到底什麽樣的平面能夠被快速識別呢?開發者們給的建議是環境光源充足,紋理越復雜越好檢測。(算法上有個名詞叫特征點,紋理越復雜,特征點越多。此外圖案越不規則,重復紋理越少,也越好定位。)相反,幹幹凈凈的素色平面,會大大地降低識別速度。

所以在設計首次引導系統時,新手用戶在 AR 鏡頭裏,默認是沒有任何指引,不知道要怎麽做。第一關難題就需要讓用戶快速找到平面作為籃球場的基面。那麽引導信息就要考慮用「屏幕型信息」還是「環境型信息」。屏幕型信息是指不隨環境改變,一直在屏幕某個地方顯示的信息;環境型信息是指以環境中的物體為載體顯示的信息。在 ARKit 中,想要得到環境型信息,首先你得讓系統「看到」環境,所以第一步打開 app 後,就得使用屏幕型信息來告知用戶現在需要找一個平面。我的首版設計非常的簡單,在屏幕頂有指引文字「當你看到藍色方塊,點擊它。如果還看不見,靠近一點地面。」

當檢測一段時間,就會出現了藍色方塊。

我在藍色方塊上加了「點擊」字樣,這個使用的是環境型信息了,因為此時用戶註意力完全在突然出現的藍色方塊上,此時需要用戶點擊藍色方塊作為地板基面,所以直接在藍色方塊上顯示引導信息是最有效的。

不過首次可用性測試中得到的反饋基本都是「為什麽我什麽都沒看見」和「那些光色的小點是什麽,藍色的框又是什麽」。 原因是使用者不具備以上所說的識別技術知識,連第一步的需要「拍什麽」都沒有被成功引導到,更何談看到小光點和藍色方塊和理解他們。

於是我在第二版中在打開 app 後添加了一個引導頁,通過圖文告訴用戶應該把鏡頭對著哪裏,看到的小光點和藍色方塊又是什麽。

第二次可用性測試中得到的反饋是用戶在看到引導後,稍微粗略掃了一眼就關掉,他們得知的是需要像圖中的角度那樣拍攝一個帶明顯紋理的平面,也知道看到藍色方塊就點擊。但同樣的問題是檢測成功率很低,因為像圖示中的角度根本無法快速讓系統檢測到平面,很多用戶會 360 度轉身周圍拍,尋找圖示中的小光點。

於是我在研究了一下如何最快最有把握地檢測到平面後,發現了只要出現了幾個小光點後,讓相機更加靠近平面表面,小光點數量會瞬間暴漲並且出現藍色框框。於是在第三版中,與其告知用戶小光點是什麽,藍色框框又是什麽,倒不如直切用戶最終目標:用最快最有把握的方法找到基面。我把圖示改成了如下。

效果大大改善。在第三次測試中,用戶看到簡練的的文字信息引導,就跟著圖示的角度去拍攝(這個就是測出來的最快最有把握的角度),這時候很快就能出現檢測成功的藍色方塊。點擊就會看到球場的地板。這次雖然用戶不知道他們看到的小光點和藍框是什麽,但目標快速地達到了。這也是我自己首次作為獨立開發者陷入的典型困境,因為花了很長很長的時間去弄清楚原理,代碼等技術因素,就想把我理解的技術原理塞給用戶,卻忽略了用戶的最根本目標。

點擊檢測成功的藍色方塊,這時候就會以這個為基面出現球場了。於是引出了接下來要說的第二個設計了。

首次引導系統設計 貳

這也是在用 ARKit 設計時的一個經典問題:由於整個周邊環境都是 AR 顯示範圍,但用戶在特定場景特定任務的特定環節的註意力卻只在一個很小的範圍。在這個時候,我選擇了使用從地底到地表浮出的動效方式引出球場地板。

原因一是因為此時用戶的角度完全是俯視地板,註意力也完全集中在地上,順勢利用此註意力範圍,提供一個生動的反饋:噢,球場出來了!

原因二是因為第一版我只是做了個球場突然出現,在測試中有用戶在看到球場,卻不知道要擡頭看,還在拼命地點擊藍色框,以為還有更多的東西出現。所以第二版我設計的是從下而上的一個動效,引導用戶的註意力往上走:擡頭看才能看見籃框和球架。

由於模型比較大,用戶低著頭是看不到籃框和架子的,所以這時候需要引導用戶去擡頭。

此時屏幕上的引導信息也變成了「擡頭看」。我在這裏選擇的是屏幕型信息,而非環境型信息,但我更希望的是使用後者,因為也是用戶註意力在出現的球場地板上,直接在地板上的鏡頭內顯示「擡頭看」更有效。但由於技術有限,在這只暫且使用屏幕型信息。如果再退一步說,等 ARKit 改進到不用低頭也能快速檢測到地板,一切會更加簡單。

此時只要順勢擡頭看,就能看到球場的生成動畫。

首次引導系統設計 叁

此時屏幕型信息變成了接下來的動作提示「上劃投球」。由於投擲類遊戲的操作很多都是上劃,所以在測試中用戶本能反應就是上劃拋出去,這樣我就不用花過多精力教育用戶了。第一版的信息是在屏幕底部,在測試中幾乎沒有人看得到,原因是屏幕底部被手指擋住,再者用戶的註意力是在球和球的上方空間(因為目標籃框高於視線,底部容易被忽略)。於是第二版改成了屏幕上方,測試反饋是用戶能看到指引了。不過欠缺了考慮在室外時白色字體容易和天空融在一起導致信息被淹沒。下一版時會改進成更具可讀性的字體,並添加上劃手勢 icon 來增強直觀性。

首次引導系統設計 肆

當用戶投出去後,用戶的註意力一定會高度集中在球的飛行方向和落地後的方位,此時新接觸的用戶不知道是可以移動腳步去撿球的,站在原地拼命點屏幕上的球。這時候就需要最後一步的信息引導了。屏幕的文字變成了「請移腳步去撿球」。同樣的,最佳效果並不是只使用屏幕文字,而是同時在地板上顯示腳印連接鏡頭位置和籃球位置,隱喻可以走過去撿球。這也是 ARKit 的好玩之處,可以在空間裏走動。(可惜技術不過關還沒學會怎麽在鏡頭和落點間實時生成腳印軌跡。)

撿到球之後就是回到投球動作了,反復循環。用戶只需帶一次即可上手。

總體來說,ARKit 雖然很強大,但還比較局限。如果只是一個展示型的 AR 項目,那麽只要引導完成低頭找平面,找到就直接看模型就好了。如果是工具性 AR 項目,那麽找到平面之後的一系列交互操作和內容展示非常值得去思考。

延伸閱讀,這個是 Apple 定義的一份  ARKit Human interface Guidelines 。


Tags: 系統 ARKit 設計 平面 手持 設備

文章來源:


ads
ads

相關文章
ads

相關文章

ad