2011-09-18 53 views
5

在過去的幾個月中,我一直在研究爲各種軟件音樂合成器開發基於Kinect的多點觸控界面。NUI/touch界面的一般注意事項

我想出的總體策略是以編程方式或(如果可能的話)算法地創建對象來表示軟合成器的各種控制。這些應該有;

  • X位置
  • Y位置
  • 身高
  • 寬度
  • MIDI輸出通道
  • MIDI數據定標器(轉換的xy COORDS到MIDI值)

2策略我已經考慮過用於創建農業科學的是XML描述,並以某種方式將東西拉開e屏幕(即給出一個正在運行的程序,找到所有控件的xycoords)。我不知道如何去解決第二個問題,這就是爲什麼我用這種特定的技術語言表達的原因;)。我可以做一些中間解決方案,比如在控件的角落點擊鼠標來生成一個xml文件。我可以做的另一件事,我經常在Flash應用程序中看到的是,將屏幕大小放入一個變量中,並使用數學來構建屏幕大小的所有界面對象。請注意,並非嚴格必須使對象與屏幕控件的大小相同,或者表示所有屏幕對象(某些只是指示器,而不是交互式控件)

其他注意事項;

給出(現在)兩組X/Y座標作爲輸入(左手和右手),使用它們的最佳選擇是什麼?我的第一本能是創建某種焦點測試,其中如果x/y座標落在界面對象的邊界內,則該對象變爲活動的,然後如果它們在一段時間內落在其他一些較小範圍之外則變爲非活動狀態。我找到的廉價解決方案是使用左手作爲指針/選擇器,右手作爲控制器,但似乎我可以做更多。我有幾個手勢解決方案(隱藏的馬爾可夫鏈),我可以擰緊。並不是說他們很容易上班,但是我可以看到自己在給予足夠激勵的情況下進行工作。

因此,要總結,問題是

  • 表示接口(必要的,因爲默認接口總是期望鼠標輸入)
  • 選擇使用兩組x/y的一個控制
  • 操縱它座標(旋轉/連續控制器),或者在開關的情況下,優選地使用手勢來切換它而不給予/取得焦點。

任何意見,尤其是從工作/正在多點觸控io/NUI工作的人,都非常感謝。鏈接到現有的項目和/或一些好的閱讀材料(書籍,網站等)將是一個很大的幫助。

+0

關於這個問題的元討論正在發生/已經發生:http://meta.stackexchange.com/q/106720/146495 –

回答

2

哇這裏很多東西。我在微軟工作期間曾在NUI工作過很多次,所以我們來看看我們可以做些什麼......

但首先,我需要避開這個寵物狗:您說「基於Kinect的多點觸控」。這是錯誤的。 Kinect本質上與觸摸無關(這就是爲什麼你有「選擇控制」挑戰)。觸摸,身體跟蹤和鼠標所需的UI考慮類型完全不同。例如,在觸摸界面中,您必須非常小心地根據屏幕尺寸/分辨率/ DPI來調整尺寸......無論屏幕如何,手指始終具有相同的物理尺寸,並且人們具有相同的物理精度,因此您需要你的按鈕和類似的控件總是大致相同的物理尺寸。研究發現3/4英寸是觸摸屏按鍵的最佳位置。 Kinect雖然沒有直接接觸任何東西,但這並不是什麼大問題 - 準確度不是由手指大小決定的,而是由傳感器準確度和用戶精確控制虛擬遊標滯後的能力決定的。

如果你花時間玩Kinect遊戲,很快就會明白有4種交互範式。 1)基於姿勢的命令。用戶敲擊並保持一個姿勢來調用某個應用程序範圍或命令(通常是菜單) 2)懸停按鈕。用戶在一個按鈕上移動虛擬光標並保持一段時間,以選擇按鈕。3)基於滑動的導航和選擇。用戶在一個方向上揮手,滾動並列出,另一個方向從列表中選擇 4)聲控命令。用戶只是說一個命令。

愛好者已經嘗試過其他類似老鼠的想法(在實際遊戲中沒有看到過這些),但坦率地說它們吸引人:1)用一隻手做光標,另一隻手做光標所在的地方「點擊」或2)使用手的z座標來決定是否「點擊」

我不清楚你是否在問如何使一些現有的鼠標小部件與Kinect一起工作。如果是這樣,網上有一些項目會告訴你如何用Kinect輸入控制鼠標,但這是跛腳。這聽起來可能超級酷,但你根本沒有充分利用該設備最擅長的功能。

如果我正在構建一個音樂合成器,我會專注於方法3 - 輕掃。像Dance Central一樣。屏幕左側顯示您的MIDI控制器列表,並帶有一些視覺狀態的小圖標。讓用戶滑動左手滾動並從此列表中選擇一個控制器。屏幕右側顯示您如何在身體前方的某個飛機內跟蹤用戶右手。現在你讓他們同時使用雙手,立即提供視覺反饋,說明每隻手的解讀方式,而不要求它們超精確。

ps ...我也想給Josh Blake的Ncom高調書叫一聲。這是好東西。如果你真的想掌握這個領域,去訂購一份:) http://www.manning.com/blake/

+0

羅伯特 - 謝謝一堆爲您的答案,很高興看到一個前微軟的傢伙。首先,重新研究多點觸控。一開始我開始使用各種blob跟蹤解決方案,但放棄了,因爲當照明條件改變了可以想象到的最小余量時,系統響應速度變慢了。我進入了kinect,因爲它在內部處理斑點跟蹤並輸出一個或多個x/y光標座標。我發現你提到的分辨率問題(如果我們在談論同樣的事情)仍然可以獲得kinect,因爲顯示分辨率和接口大小不同。 – jamesson

+0

鼠標,我使用的中間件(primesense nite)基本上以手勢模式輸出2個遊標以及基於手勢的點擊(「推」你的手朝向屏幕)。如果我願意,我可以使用所有的關節(輸出10左右,膝蓋,臀部等),但我還沒有感覺到它。重新刷一下,這是我可以自己實現的最好的。我希望別人有更好的想法。 – jamesson

+0

以下是我認爲「更好」的示例 - http://anythinghonest.com/amos/。它以直觀的方式使用新技術(ipad在這種情況下)的所有可用功能,同時提供深度控制。我可能會爲了我的東西偷取部分內容。再次感謝你的幫助。 Joe – jamesson