測域センサでインタラクティブ!(1)
測域センサでインタラクティブ!(2)の続きです。
前回までで、hokuyoChopで指をさした位置の座標を取得することができました。ただしこれは、hokuyoChopでの値なので、これをTouchDesignerの画面の-0.5<X<0.5, -0.5<Y<0.5の値に変換してあげる必要があります。
こういう時は、まずは実験的にデータを取ってみると良いです。
Step1 円の配置
まずは、投影した画面上の座標を正確に得るため、なんでも良いですが、分かりやすいのでcircleTopを表示します。
circleTopを作成し、映像を壁に投影してみて下さい。円の半径は0.02など小さめにすると良いです。
円の位置をずらせば、-0.5<X<0.5, -0.5<Y<0.5であることが分かります。
Step2 円の座標とhokuyoChop座標の取得
ここで、TouchDesignerの画面上の座標はX,Y、hokuyoChopで取得する座標はx,yとします。
画面中心(X,Y)=(0,0)の時の(x,y)を前回作成したconstantChopの値で確認します。
実際に円の位置も合わせて、指をさして確認してみて下さい。
あとは、(X,Y)=(0.4,0.4),(0.25,0.25),(-0.25,-0.25),(-0.4,-0.4)とかで、同様に(x,y)を指さして確認します。
Step3 x-Xとy-Yの散布図と近似直線作成
ここからはPythonでもいいですが、簡単にするため、ExcelでX,Y,x,yのデータを入力してx-Xとy-Yで2つの散布図をかいてみて下さい。できたら、近似直線を表示します。
要は、xとX、yとYの対応関係を定式化して、x,yから計算してX,Yを出せるようにしようと言うことです。(式をX=ax+b,Y=cy+dとかにして、それぞれ2か所の値を代入して連立方程式を解くとかでも良いです。)
そうすると式が出ていますので、これでX,Yを計算するコードをPythonで書きます。先のtextDatに書いたPythonコードに追加してみましょう。
(参考)Python(numpy)で近似式を計算する場合のコード例(Jupyter Notebookを使用)
Step4 X,Y座標の表示
X,Yも先のconstantChopに追加しましょう。
name2にX、value0にme.mod.text1.calpos()[2]
name3にY、value1にme.mod.text1.calpos()[3]
これで、X,Y座標を得ることができました。(赤いのは指をさしていない時であり、さすと表示される。)
実際にcircleTopのCenterにこのX,Yを図のようにして入れてみましょう。
これで概ね、指の動きに追従して、円が動くかと思います。
続く...
ここまでくればもうあとはコンテンツですね。
次は、1回目で簡単に紹介したインタラクティブコンテンツを解説したいと思います。
<制作環境>
TouchDesigner099 COMMERCIAL 64-Bit Build 2019.10700
CPU Corei9 9900K
GPU Geforce RTX 2080Ti
Windows10
<∀RroWs>
HomePage