LoginSignup
7
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-02-08

測域センサでインタラクティブ!(1)の続きになります。
前回で、測域センサの値をhokuyoChopで取得できたかと思います。次は、そのデータを用いて、指さした座標を取得するところまでを紹介したいと思います。
前回同様に、まずは測域センサをPCに接続し、壁際の下部に設置し、hokuyoChopの設定まで進めて下さい。
1.jpg

Step1 ty Channelの取得

hokuyoChopではtx,tyの値が表示されていますが、まずは実際に映像を投影してください。
1.jpg
この映像の投影されたエリア内で指を動かして、hokuyoChopの値の変化を確認してみてください。
1.jpg
そうすると、tyのchannelだけでtyの値が下がったところの横軸のindex番号がxで、下がったtyの値をyとすれば座標が取れそうです。(tyが平らなエリアはtxが一次関数的に下がっており、indexとxが1対1で対応が取れるので、この領域を使用するのが簡単です。tyが平らなので、後に示す閾値も決めやすいです。今回、映像はちょうどtyが平らな領域におさまるように表示しています。)
2.jpg
なので、hokuyoChopselectChopをつなぎ、Channel Namesの欄のtyを入力し、tyだけ取得します。
キャプチャ.JPG

Step2 位置取得関数の作成

次に、前回もやりましたが、chopToDatを接続し、そこにselectChopをドラッグ&ドロップします。
1.jpg
そうすると表形式でデータが表示されます。このデータをpythonで処理して、指さした位置を検知できるようにしてみましょう。
textDatを追加して下さい。いくつか方法が考えられますが、基本的なpythonの知識で作成できる例を紹介します。以下のコードをtextDatに入力します。
キャプチャ.JPG
解説すると、pythonで指さして、tyの値が下がった座標を計算する関数を作成しています。
一行目は関数を定義しており、位置(position)を計算する(caluculate)意味で名前は付けています。

今回、リストとfor分を用いて、座標を取得します。
まず、空のリストを2つ用意します。これを元にx,y座標を求めるので、x_list, y_listとしました。

次に、for文を回しますが、x軸の左端から右端まで回したいので、投影した映像の右端と左端のindexを事前に確認して下さい。指さした時のchopToDatの値を読めば、indexの値が分かると思います。今回は320から475でした。

次に、指をさすとtyの値が局所的に下がると思いますが、その下がったと判断する閾値を決めます。

ty(指さしエリアの最大値) < 閾値 < ty(range区間における指をさしていない時の最小値)

これを満たす必要がありますが、ここでは2.0としました。

この閾値を下回ったindexを取得すれば、指をさしたx座標を求めることができます。
そこで、for文でrangeの区間で閾値を下回った場合に、x_listにindex番号を追加していくようにしています。
ただし、指さした箇所は幅を持つため、リストに複数の値が返ってくることが想定されます。
そこで、最初に閾値を下回ったindexと最後に下回ったindexの中心が指をさしたx座標としました。
yを計算するのにxは整数である必要があるので、intを付けています。
yはchopToDatの表からindexがxの時の値、つまりop('chopto1')[x,0]で求めます。

これで、この関数を用いてx,yを取得することができます。

Step3 位置の取得

この関数を用いて得たx,yを表示するためconstantChopを用意します。
キャプチャ.JPG
name0xvalue0me.mod.text1.calpos()[0]
name1yvalue1me.mod.text1.calpos()[1]
とすれば、指をさした時だけ、値が表示されると思います。
これでとりあえず、座標は取れました!
1.jpg

続く...

ただし、この値はhokuyoChopにおける値のままですよね。
あとはこれを座標変換して、実際のTouchDesigner上の座標に合わせ込む必要があります。
それはまた次回ということで。

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

<制作環境>
 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