7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

測域センサでインタラクティブ!(3)

Last updated at Posted at 2019-02-08

測域センサでインタラクティブ!(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であることが分かります。
1.jpg

Step2 円の座標とhokuyoChop座標の取得

ここで、TouchDesignerの画面上の座標はX,YhokuyoChopで取得する座標はx,yとします。
画面中心(X,Y)=(0,0)の時の(x,y)を前回作成したconstantChopの値で確認します。
実際に円の位置も合わせて、指をさして確認してみて下さい。
3.jpg
あとは、(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つの散布図をかいてみて下さい。できたら、近似直線を表示します。
3.jpg
要は、xとX、yとYの対応関係を定式化して、x,yから計算してX,Yを出せるようにしようと言うことです。(式をX=ax+b,Y=cy+dとかにして、それぞれ2か所の値を代入して連立方程式を解くとかでも良いです。)
そうすると式が出ていますので、これでX,Yを計算するコードをPythonで書きます。先のtextDatに書いたPythonコードに追加してみましょう。
1.jpg

(参考)Python(numpy)で近似式を計算する場合のコード例(Jupyter Notebookを使用)
1.JPG
2.JPG

Step4 X,Y座標の表示

X,Yも先のconstantChopに追加しましょう。
1.jpg
name2Xvalue0me.mod.text1.calpos()[2]
name3Yvalue1me.mod.text1.calpos()[3]
これで、X,Y座標を得ることができました。(赤いのは指をさしていない時であり、さすと表示される。)
実際にcircleTopCenterにこのX,Yを図のようにして入れてみましょう。
1.jpg
これで概ね、指の動きに追従して、円が動くかと思います。

続く...

ここまでくればもうあとはコンテンツですね。
次は、1回目で簡単に紹介したインタラクティブコンテンツを解説したいと思います。

<制作環境>
 TouchDesigner099 COMMERCIAL 64-Bit Build 2019.10700
 CPU Corei9 9900K
 GPU Geforce RTX 2080Ti
 Windows10

<∀RroWs>
 HomePage

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?