2011-09-18 15 views
5

私は過去数ヶ月、さまざまなソフトウェア音楽シンセサイザー用のKinectベースのマルチタッチインターフェイスの開発を検討してきました。NUI/touchインターフェイスに関する一般的な考慮事項

私が思いついた全体的な戦略は、プログラマチックに、または(可能であれば)ソフトシンセのさまざまなコントロールを表すためにアルゴリズムでオブジェクトを作成することです。これらは持っているはずです。

  • X位置
  • Y位置
  • MIDI出力チャンネル
  • MIDIデータスケーラ(MIDI値にXY COORDS変換)

2戦略I agorithmic creationのために考えられているのは、XMLの記述です。 (つまり、実行中のプログラムがあれば、すべてのコントロールのxycoordsを見つける)。私はそのような特定の技術的な言葉でそれを表現している理由は、その2番目のものについてどうやって行くのか分かりません。私はいくつかの中間的な解決策をとることができます。マウスのクリックをコントロールのコーナーで使用してxmlファイルを生成することができます。私ができることは、フラッシュアプ​​リケーションで頻繁に見てきたことですが、画面サイズを変数に入れ、数学を使ってすべてのインターフェイスオブジェクトを画面サイズで作成することです。オブジェクトを画面上のコントロールと同じサイズにすること、またはすべてのオンスクリーンオブジェクトを表示することは厳密には必要ではないことに注意してください(対話型コントロールではなく、単なるインジケータ)。

その他の考慮事項。

入力(左右の手)として2組のX/Yコードを与えられた場合、それらを使用するための最良の選択肢は何ですか?私の最初の本能は、ある種のフォーカステストを作成することでした.x/y座標がインターフェイスオブジェクトの境界内にある場合、そのオブジェクトはアクティブになり、ある一定期間他の小さな境界の外にある場合は非アクティブになります。私が見つけた安い解決策は、左手をポインタ/セレクタ、右をコントローラとして使用することでしたが、もっと手を加えることができるようです。私はいくつかの身振りのソリューション(隠れマルコフチェーン)を持っています。彼らは仕事に慣れるのは簡単ではないが、十分なインセンティブを与えて自分が見ることができるものである。したがって

、要約すると、問題は、(デフォルトのインターフェイスは常にマウスの入力を受け取るために必要な)

  • インターフェイスを表している
  • 制御
  • を選択X/Yの二組を使用して操作(回転/連続コントローラ)、またはスイッチの場合、好ましくは、フォーカスを与えずにスイッチを切り替えるためにジェスチャを使用します。

コメントは、特にマルチタッチio/NUIで働いている/働いている人からのコメントです。既存のプロジェクトや良い読書資料(書籍、サイトなど)へのリンクは大きな助けになります。

+0

この問題についてのメタ・ディスカッションは起こっている/起こっている:http://meta.stackexchange.com/q/106720/146495 –

答えて

2

ここにたくさんのものがあります。私はマイクロソフトの私の中で多くのNUIのものに取り組んだので、私たちができることを見てみましょう...

まず、私はこのペットピーブを途中から抜け出す必要があります: "Kinectベースのマルチタッチ"と言います。それは間違っている。 Kinectは本質的にタッチとは何の関係もありません(これが「コントロールを選択」の課題です)。タッチ、ボディトラッキング、マウスに必要なUIの考慮事項のタイプは全く異なります。たとえば、タッチUIでは、画面のサイズ/解像度/ DPIに基づいてサイズを変更することに非常に注意する必要があります。画面に関係なく、指は常に同じ物理サイズであり、人々は物理的精度と同じ程度ですあなたのボタンと同様のコントロールは、常にほぼ同じ物理的なサイズになります。調査によると、タッチスクリーンボタンのスイートスポットとして3/4インチが見つかった。これはKinectの関心事ではありませんが、何かに直接触れているわけではありません。正確さは指の大きさではなく、センサの精度とユーザーが細かいバーチャルカーソルを正確に制御する能力によって左右されます。

Kinectゲームで遊ぶのに時間を費やすと、4つのインタラクションのパラダイムがあることがすぐに分かります。 1)ポーズベースのコマンド。ユーザーはストライクして、アプリケーション全体またはコマンドを呼び出すためのポーズを保持します(通常はメニューを表示します)。 2)ホバーボタン。ユーザーは仮想カーソルをボタンの上に移動し、一定時間ボタンを押し続ける。 3)スワイプベースのナビゲーションと選択。ユーザーがスクロールしてリストを選択し、リストから選択する方向に手を振る 4)音声コマンド。ユーザーはコマンドを話すだけです。

趣味主義者が試みたような他のアイデアがありますが(実際のゲームでは見られませんでしたが)、1つの手でカーソルを使用し、もう1つの手でカーソルを2)手のz座標を使用して「クリックする」かどうかを判断する

既存のマウスウィジェットをKinectと連携させる方法を尋ねているかどうかは分かりません。もしそうなら、Kinect入力でマウスを制御する方法を教えてくれるWeb上のプロジェクトがいくつかありますが、それは不自由なものです。それは超クールに聞こえるかもしれませんが、あなたは本当にデバイスが最高のものを利用しているわけではありません。

もし私が音楽シンセサイザーを作っていたら、私はアプローチ#3にスワイプします。 Dance Centralのようなもの。画面の左側には、MIDIコントローラのリストが表示され、ステータスが少しずつ視覚的に示されます。このリストからコントローラをスクロールして選択するには、左手をスワイプさせます。画面の右側には、身体の前のある飛行機内でユーザーの右手をどのように追跡しているかが示されています。今では、両手を同時に使用できるようにして、それぞれの手がどのように解釈されているかをすぐに視覚的にフィードバックし、超精密にする必要はありません。

ps ...私はまた、ジョシュブレイクの最新のNUIの本に叫びたいと思います。それは良いものです。 http://www.manning.com/blake/

+0

ロバート - ありがとうあなたの答えのための束、元の元気な男を見るのは良いです。まず、マルチタッチとのキネクト。私はいろいろなブロブトラッキングソリューションを使用していましたが、照明条件が想像できる最小のマージンで変わったときにシステムの応答が遅くなってしまったので、私は諦めました。内部でブロブトラッキングを処理し、1つ以上のx/yカーソル座標を出力するので、私はkinectに入った。私は、ディスプレイ解像度とインターフェイスサイズが異なるため、あなたが言及している解像度問題(同じことについて話している場合)はまだkinectを取得していることが分かりました。 – jamesson

+0

Reマウス、私が使用しているミドルウェア(primesense nite)は基本的にジェスチャーベースのクリックだけでなく、ハンドモードで2つのカーソルを出力します(画面に向かって手を押しています)。もし私が選択すれば、私はそれがまだ気に入らなかったので、私はすべての関節を使用することができます(それは10、またはそれ以上の膝、腰などを出力します)。あなたのスワイプ、それは私が実際に自分自身で思い付くことができる最高です。私は他の人にもっと良いアイデアがあることを願っています。 – jamesson

+0

ここに私が「より良い」と考えるものの例があります - http://anythinghonest.com/amos/。それは直感的な方法で新しい技術(この場合はipad)の利用可能なすべての機能を使用しながら、深い制御を提供します。私は自分のためにその部分を盗むかもしれない。あなたの助けをもう一度ありがとう。ジョー – jamesson

関連する問題