TouchDesignerでLeap Motionを使う
今回はTD上でLeap Motionを扱う方法の解説をします。
まず、Leap Motionのドライバーが入っていることが前提ですので、その準備は事前に済ませてください
Leap MotionはLeap Motion CHOPを使うことで、手のトラッキングデータを簡単に取り出すことができます。
Leap MotionをPCに接続して、Leap motion CHOPを作成してください。 その状態で、Leapに手をかざせば、Leap motion CHOP上の値が変化していることがわかります。
TDとLeap motionを接続するという意味では、以上で完了です。 SDKを使って、手の座標を得るためにコードを書いたりという必要はありません。
少し、具体的にLeap motion CHOPの使い方の例を説明したいと思います。 Leap motionを使って、手の角度に同期し回転するBOXを作ってみたいと思います。
まず、Geo CMOPを作り、その中で、BOX SOPを作成します。 BOX SOP,Transfrom SOP, Null SOPの順で接続してください。
次に、先ほど作った、SOPをレンダリングします。 Render, Camera, Lightを作成し、レンダリングします。 それぞれのオペレーターのパラメーターは、デフォルト値で大丈夫です。
次に、Leap motionの値を、SOPへ代入します。 Leap Motion CHOPを作成し、そのパラメーターをご覧ください。
いくつかのパラメーターについて、説明します。 ・HMD Modde ::これは、HMDで使用する際にオンにしてください。 テーブルなど、手を下側からトラッキングする際はデフォルトのままで、大丈夫です。
・hands ::トラッキングする手の数の最大数を決めます。 場合によっては、1つの手のみのトラッキングで十分で、複数トラッキングしてしまうと 邪魔になってしまうこともあります。 その際は、1に設定しておきましょう。
そこから下のパラメーターは、より詳細な手のトラッキング情報です。 手の移動速度や、指のサイズなど.... 必要なデータのみ、ONにしましょう。
ONにしたものは、数値データとしてLeap Motion CHOP上に表示されます。
今回は、手の回転角度をSOPへ代入することで、手の動きと同期したBOXを作ります。
手の回転角度は、==としてCHOP上に表示されています。 Leap motion CHOP上には沢山のデータが表示されているため、非常に見にくい状態になっています。 ここから、必要なデータのみ取り出しましょう。
Leap motion CHOPの後ろにselect CHOPを繋ぎます。
パラメーターのChannel Namesに「hand0*r*」と入力してください。
select CHOPはチャンネル名の条件を入力し、その条件にあったチャンネルのみを取り出すCHOPです。
先ほど入力した「hand0*r*」は
hand0 :最初に認識した手
* :ワイルドカード(なんでもよいという意味です)
r :rotation(回転角度)
という意味になります。つまり、最初にトラッキングした手の回転角の値すべてが取り出されます。
取り出した値をSOPへ代入します。
hand0/palm:rx,ry,rzの3つのチャンネルをtransform SOPのRotateのパラメーターへ代入します。
これで、手を動かすとBOXが手の動きに合わせて回転します。
Leap Motionの使い方は以上です。
基本的にLeap Motion CHOPを作成して、値を代入していくという使い方です。
いろいろと試して、面白い使い方を見つけてみてください。
今回作成したプログラムは以下のリンクからダウンロードできます