體感軟體開發的注意事項


本文主要參考 OpenNI Arena介紹)的《NI Apps Guidelines》(PDF 檔)。這份文件,算是 OpenNI 提出來,給 OpenNI 開發者的一些建議、導引,算是要寫一個能放到 OpenNI Arena 的程式的注意事項。它裡面共分六個章節,依序是:

  1. Introduction(簡介)
  2. The NI App Format(NI App 的格式)
  3. User Experience Recommendations(使用者體驗的建議)
  4. Checklist before NI App Submission(提交 NI App 前的注意事項)
  5. Publish a NI App(發布 NI App)
  6. NI App Review Process(NI App 審閱流程)

雖然其中大部分的內容都是針對 OpenNI Arena 的,但是第三章的《User Experience Recommendations》則算是對於一般性的 NI 程式開發都有相當地幫助~下面就是《NI Apps Guidelines》這份文件所提供的建議,Heresy 自己根據意思、很不精準地翻譯了一下,並且加入了一些自己的想法:

使用動作或姿勢來結束程式

建議定義一個結束應用程式用的姿勢、用來離開應用程式,而不要使用 Esc 鍵,或是其他鍵盤、滑鼠等輸入。因為實際上如果還要用鍵盤或滑鼠等其他裝置來做停止的動作的話,一個是不方便,另外更重要在某些狀況下,可能會在這過程中造成其他事件/動作的誤觸發。

而 OpenNI 建議的結束姿勢,則是「手交叉」這個動作(右圖)。他們發現這個動作不容易不小心就被觸發到。不過比較討厭的是,NITE 所提供的姿勢辨識,還是只有「Psi」一個…

可視區域指示

在程式執行時,最好可以告訴使用者,站到最佳位置上、並且當在使用者快要到活動區域的邊緣時、做出適當的警告,避免使用者沒有發現自己已經沒辦法被偵測到了。

而一個讓使用者知道自己已經在可視區域外的方法,就是把可是區域顯示出來。
(註:這邊的「可視區域」的原文是「Field of View」、也就是 FOV。)

操作指示

由於沒有實體的操作裝置,而使用者有無限多種可能用來操作程式的動作、姿勢,所以最好在程式中告訴使用者該如何操作;同時使用者也會期望在正確操作時、能夠得到一些回饋。

另外,如果牽涉到多個使用者時,想辦法提供目前是哪個使用者在操作,也是非常有用的。

使用現實事件的概念

在真實世界的既有知識上建立互動,會比較合適。例如往前推來按下按鈕、揮手來引起注意,這類大部分已經習慣的概念,會讓使用者覺得比較直覺,同時更容易學會如何操作這個程式。

充分的回饋

因為體感操作缺少了實際上接觸的回饋,所以連續性的回饋是相當重要的;使用大量的視覺、聲音上的回饋,都可以強化所需操作。

明確地定義影響

各種行為可能產生的影響,都需要明確地定義;同時,可能的選擇也要盡量減少,避免使用者混淆。

讓使用者可以恢復非預期的動作

由於動作追蹤、分析都有一定程度的不準確性,所以或多或少都有可能產生使用者預期以外的動作或影響;也因此,讓使用者可以順利地取消這些預期以外的動作或影像,是相當重要的一件事!

防止物理上的不適

要確定就算經過長施間的使用,這個程式也不會造成使用者的不舒適。同時,也應該適時地鼓勵使用者休息,而且程式不會因為這個休息產生問題(如果是遊戲的話,也不應該因為休息而扣分)。

考慮可能的動作序列

妥善地計畫可能產生的動作序列,確定某個動作不應該造成下一個動作的不確定性;同時也要考慮由於前一個可能動作的不同,這個動作可能會由不同的狀態開始。

強化使用者

只允許做他們在現實世界希望做的事,同時給使用者好的(讓使用者高興的)回應、並且讓他們比在現實世界中、有更多的選擇、和更多的能力。

確定互動的動作是安全的

很多動作遊戲需要迅速的手腳移動,而這些很有可能會打到其他東西、或是其他人。所以如果一個程式有可能會因此傷害到自己或其他人時,應該要在程式開始前、做出適當的警告,提醒使用者清空活動區域、並注意有沒有人忽然進入這個區域,以避免受傷。


另外,之前的《Kinect for Windows 開發社群大會課程內容》一文裡,也有一些圖形介面的設計建議:

  • 按鈕設計
    • 由於使用手掌做「按一下」的動作並不容易正確辨識
    • 因此一般都是設計成將手掌放在按鈕上不動,經過數秒後表示按到該按鈕
    • 可以使用動畫讓使用者了解到,手掌已經正確的放在按鈕上
  • 介面設計準則
    • 手掌在按鈕上停留的時間要大於兩秒以上才算按到按鈕
    • 按鈕在畫面上最好是手掌兩倍以上的大小
    • 按鈕的間隔至少要大於一個按鈕的大小
    • 由於使用者有可能誤按了按鈕,因此要設計回上一頁的按鈕功能
    • 按鈕最好放在畫面的兩側,不要放在畫面正中間,以免骨架無法判斷手部的位置

這篇大概就寫到這了。基本上,這邊都不是程式設計的東西,主要都是設計概念上的東西,但是在體感操作這個新領域上,這些注意事項的確是要特別注意一下的~


OpenNI / Kinect 相關文章目錄

廣告

關於 Heresy
https://kheresy.wordpress.com

3 Responses to 體感軟體開發的注意事項

  1. 引用通告: Kinect for Windows SDK 1.5 推出! « Heresy's Space

  2. ea9006271 says:

    您好:
    目前利用 OpenNI + Unity 開發一個專案
    想要玩家可以手持道具做動作,類似最近 kinect 的星際大戰,玩家可以手持光劍
    但是發現 OpenNI 會把手持物視為骨架的延伸,造成骨架的誤判
    microsoft kinect sdk 則不會,大概就是老師那天上課提到 microsoft kinect sdk 多了那4個節點…

    想請問在 OpenNI 上可有什麼解決之道??

    喜歡

    • Heresy says:

      這部分與其說是差在那幾個關節點,倒不如說是因為演算法核心的部分處理方法完全不同了…
      而由於 NITE 不是開放原始碼的專案,所以也沒辦法自己去修改他的演算法,所以除了向 PrimeSense 反映、等他們修改演算法外,在這方面可以算是無解了。

      不過,如果只是希望可以在 OpenNI 環境下使用 Microsoft 的分析結果的話,或許可以試試看 kinect-mssdk-openni-bridge
      https://kheresy.wordpress.com/2011/07/01/using_kinect_via_microsoft_sdk/

      喜歡

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: