TouchDesignerをつかってムービングライトをKinectで制御する

#はじめまして
簡単に自己紹介からはじめますね。福岡を拠点に、企画や演出の仕事をしています。コンテンツを作ることに興味がありプログラミングの勉強をはじめました。昨年はカレンダーに投稿できなかったので、今年こそはと思い、初心者ながらも投降した次第です。

#記事にした背景
およそ3か月前に、KinectとDMXの連携テストをはじめて、接続するところまでで終わっていました。この時の映像を見つつ、いつかこの続きを作りたいと思い今回に至りました。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">TouchDesigner, kinect to DMX <a href="https://t.co/kbYbXqXZ0B">https://t.co/kbYbXqXZ0B</a> <a href="https://twitter.com/YouTube?ref_src=twsrc%5Etfw">@YouTube</a>さんから</p>&mdash; Yusuke Matsumoto (@matsuyu1979) <a href="https://twitter.com/matsuyu1979/status/1075814870099025920?ref_src=twsrc%5Etfw">2018年12月20日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
#DMXは18日にまとまっています！
[@komakinex](https://qiita.com/komakinex)さんとDMXネタがかぶっただけでなく、とても分かりやすいので、そちらをご覧になられた後に、その続編としてKinect V2との連携についてまとめていきます。
[TouchDesigner Advent Calendar 2018 18日目
TouchDesignerでムービングヘッドライトをDMX制御する](https://qiita.com/komakinex/items/84f4d4c32fd7d62416d1)
#ところでKinect V2とは
Microsoftが発売し、昨年2017年に惜しまれつつ販売終了したDepthカメラです。このKinectを使うにはドライバが必要です。ドライバをWindows機種にインストールした後、TouchDesiner Windows版にて使うことが可能です。また、TouchDesignerでKinectを使うドライバーの要件については、[Kinect CHOP](https://www.derivative.ca/wiki088/index.php?title=Kinect_CHOP)をご覧いただいておくと安心です。
#今回の開発環境
- MacBookPro Bootcamp Windows 10 Home
Intel(R)Core(TM)i5-6267U CPU@2.9GHz
RAM 8GB
- TouchDesigner Windows版
- ENTEC DMX USB PRO
- Kinect V2
- ムービングライト2台

# 機器の接続を考える
機器の接続は、以下のようなイメージです。パソコンとKinectとDMXをつなぎます。DMXの先にはムービングライトをつないでいきます。
![IMG_0137.jpeg](https://qiita-image-store.s3.amazonaws.com/0/43422/5979b8c7-0b96-1302-1eb1-8be248f37745.jpeg)
今回はムービングライトを2個使いたいので連結させます。ただし、チャンネルは分けたいので、１~６チャンネルと、７~12チャンネルの２つを作ることにします。ムービングライトは機種によってチャンネルの内容がかわるため、購入された後は、マニュアルと違う場合や表示のLEDが反転している場合があるようで、チェックしながら、調べておくことをおススメします。
![IMG_0121.jpeg](https://qiita-image-store.s3.amazonaws.com/0/43422/83ea8e38-2538-47f7-ac44-84e14371b02b.jpeg)

右手と左手でそれぞれのムービングライトが動くようにしたいので、そのイメージを紙にまとめます。後々代入していくことになりますので、人を中心に見て、左右をｘ軸、天地（上下）をｙ軸、前後をｚ軸としておきます。人のｘｙｚ軸と、ムービングライトのｘｙｚ軸がうまく動くように調整していきます。イメージはこんな感じでイラストを描きました。
![unnamed.jpg](https://qiita-image-store.s3.amazonaws.com/0/43422/b5d617e5-678e-766b-fa69-ca4746229c58.jpeg)
![IMG_0142.jpg](https://qiita-image-store.s3.amazonaws.com/0/43422/32f12f99-6262-a60c-107b-1ebd1922b04e.jpeg)

# TouchDesignerで作ってみる
今後活用しやすいように、DMXの制御をつくって、Kinectの制御をつくって、最後にまとめていきます。

DMX制御のロジックを組んでいきましょう。
早速、CHOP[Constant]-[math]-[DMX OUT]をつなぎます。Constantのチャンネル１～６、チャンネル７～１２に振り返れるよう名前をつけていきます。
![constant1_.PNG](https://qiita-image-store.s3.amazonaws.com/0/43422/ab514e53-d0ee-8557-ea3b-98f503449c51.png)
![constant1_2.PNG](https://qiita-image-store.s3.amazonaws.com/0/43422/43468442-d03f-2ec7-2dad-e3699229a127.png)

CHOP[math]はto rangeの範囲を０～２５５にします。これは、REDとGREENとBLUEの色の範囲に合わせています。PANは５４０度、TILTは２７０度など、ムービングライトによって変わりますので、分けたい方は分けておかれても問題ないかと思います。ここでは簡単に進めるために０～２５５にします。これでDMXの制御は準備完了です。
![constant1_3.PNG](https://qiita-image-store.s3.amazonaws.com/0/43422/6494b6ca-9fb0-d25f-a50b-f352564be2ec.png)

次に、Kinectの制御を作っていきます。
今回は、handのRのｘｙｚ、Lのｘｙｚの計6つの数値を使いたいので、CHOP[Select]-[math]-[null]を6つ用意します。Kinectの数値をDMXに代入してから調整していくとよいのですが、今回は、CHOP[math]のto Rangeは、ｘが0.5、ｙが２、ｚが１で入力しました。これでKinectの制御は準備完了です。
![constant1_4.PNG](https://qiita-image-store.s3.amazonaws.com/0/43422/58a0e33e-b2e9-4f92-d458-ee07d9d5f8e9.png)

最後に、Kinectの情報をDMXに代入していきます。今回は、STROBOとPANとTILTに右手の情報を代入していきます。それぞれ以下の情報を入れていきます。
###右手の情報
- STROBO　→　ｚには、2-op('null3')['p1/hand_r:tz']
- PAN　→　ｘには、op('null1')['p1/hand_r:tx']
- TILT　→　ｙには、op('null2')['p1/hand_r:ty']
![constant1_5.PNG](https://qiita-image-store.s3.amazonaws.com/0/43422/7f65ed22-9529-b96d-dfee-aefeff684217.png)
![constant1_6.PNG](https://qiita-image-store.s3.amazonaws.com/0/43422/d5b56049-637e-9f40-5e80-a79938a4efdc.png)
###左手の情報
ここで注意するのは、左手のｘ軸は、１から引いて、右手と反転させておきます。
- STROBO　→　ｚには、2-op('null6')['p1/hand_l:tz']
- PAN　→　ｘには、1-op('null4')['p1/hand_l:tx']
- TILT　→　ｙには、op('null5')['p1/hand_l:ty']

ここまでくると、ムービングライトとKinectの位置を調整すると完成です。

#完成
YoutubeとTwitterにアップしました。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">TouchDesigner with Kinect and DMX <a href="https://t.co/fUfMc4w54G">https://t.co/fUfMc4w54G</a> <a href="https://twitter.com/YouTube?ref_src=twsrc%5Etfw">@YouTube</a>さんから</p>&mdash; Yusuke Matsumoto (@matsuyu1979) <a href="https://twitter.com/matsuyu1979/status/1075823119858712576?ref_src=twsrc%5Etfw">2018年12月20日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

#最後に
ご指摘や気づいた点、ほかのやり方などもお知らせいただけますと助かります。
本年もTouchDesignerの書籍の著者でもあられるantymarkの松波さんからもたくさんレクチャーをいただきました。ビジュアルエフェクトのコンテンツづくりがとても弱いので、来年は重点的に勉強していきたいと思います。

#SNS
Facebook [Yusuke Matsumoto](https://www.facebook.com/yusuke.matsumoto.gibson)
Twitter [@matsuyu1979](https://twitter.com/matsuyu1979)