TouchDesigner超入門〜誰か私と作品作ろう〜

## はじめに
こんにちは！！MYJLab Advent Calendar 2023、18日目を担当する3年生のうのです。

先日は阿左見さんの非同期処理についてでした。
私は現在Reactで個人開発をしており、まさに非同期処理について学んでいるところだったのでとても参考になりました！
<br>社会人の方は忙しそうだけど、なんだか楽しそうなイメージで早く社会人になりたい反面、まだ学生でいたい気持ちもある今日この頃です。

## 今回のテーマ
さて今回はTouchDesigner超入門編です！

<br>先日Techプレゼンで紹介したTouchDesignerが好評だったので（自認）、記事としてまとめて3年生以外にも広めたいなと思います！

<br>TouchDesignerとはデジタルアートのためのビジュアルプログラミング言語のことで、最近徐々に普及してきているようです。つまりプロジェクションマッピングが自分で作れるよってやつです。

<br>今回はTouchDesignerの紹介と、ちょっとした実習をお見せします！
<br>気になった人は是非自分の手を動かして体験してみてください！
<br>プレゼンでは20分で終わったけど、1人でやったら40分はかかるかなくらいです。

<br>そしてもし興味を持っていただけたら私と一緒に作品作りませんか〜！
誰でも！ご連絡！お待ちしております！！
では、さっそくいきましょう〜

## TouchDesignerとは
先ほどもお伝えしたように、TouchDesignerとはノードベースのビジュアルプログラミング言語です。
<br>プロジェクションマッピングや、リアルタイム映像、ライブ演出、メディアアートなどに広く使われています。
<br>デジタルアート的なものならなんでもできちゃいます。

<br>またArudinoやKinectなどとも連携が可能なので、より動的な作品も作れます。

<br>またノードベースなのでコードが書けない人でも制作意欲さえあればできます。

<br>ノードベースというのは下の図のように機能を持った箱を繋げて作り上げていく形のことです。
![TouchDesignerノードベース.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617884/ce710271-9b30-84ca-530c-f7b5640c5c23.png)

<br>ただTouchDesignerのデメリットは機能が多すぎて覚えられないところです。すごい細かくたくさんのことを設定できる分、何をいじったらいいかわからなくなってしまいます。
<br>またネット上にあるチュートリアルはほとんどが英語で日本語の参考書は2冊しかないので、少し日本人にはハードルが高いように思えます。根気よく習得するしかないようです。
<br>でも私とやれば私がある程度は教えられるので大丈夫ですね。
なので一緒に作品作りましょう！

## TouchDesignerの作品
TouchDesignerは世界中で幅広く使われています。下のリンクのサイトからさまざまな作品が見られるので是非見てみてください！

・About TouchDesigner / 事例 Toyoshi Morioka note （https://note.com/toyoshimorioka/n/na64a76d04429）

## TouchDesignerのインストール
公式からダウンロードできます。WebInstallerかFullInstallerか聞かれる場合があるようですが、おそらくWebInstallerでも動くようです。
<br>またパソコンのスペックによってはそもそも動かない場合があるので、公式のシステム要件を確認した上でインストールをお願いします。もし動かない場合はバージョンを下げてインストールすると動くと思います。
<br>グレードを聞かれる場合もありますが、NON-COMMERCIALで大丈夫です！

公式ダウンロードページ　: Touch Designer (https://derivative.ca/download)

## 実習
では実際に動かしてみましょう〜！

実際に起動してみて下の画面になれば、無事インストール完了です！
![スクリーンショット 2023-12-17 14.04.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617884/c2900f0f-ae50-4f2f-9485-14af89c18187.png)

### 完成図
完成図はこんな感じです。
<img width="40%" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617884/23682119-6445-d1ff-684c-46bc711f678e.png">
<br>本当はランダムに図形の形が変化する感じなのですが、写真だと全く伝わりません。
ある大きな楕円形がランダムに動き、その中の1つ1つの座標に立方体が描画されている感じです。
<br>言葉じゃ何いってるかわからないですね笑
やってみたら楽しさが何倍も伝わるかなと思うので是非やってみてください！

<br>実習の流れとしては、
1.　図形の座標を描画
2.　1つ1つの点の図形を描画
3.　図形のレンダリング
4.　色をつける

といった感じです。何をいってるかわからない人もいると思いますが、やってみればなんとな〜く理解できると思います！

### 1.図形の座標を描画
まず起動してすぐにある箱たちはサンプルなので全て消します。Control+Aでも、1つずつ選択してDeleteでもなんでも。またPaleteもいらないので、右の×ボタンで消します。

![スクリーンショット 2023-12-17 14.22.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617884/1c63dcd2-f14a-cff9-922f-ca7e8f6db3b6.png)
<br>こんな感じでまっさらになればOKです。
![スクリーンショット 2023-12-17 14.23.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617884/52ab80e9-de6a-eaf9-a2fd-e2b6a9ab72f1.png)

さていよいよ箱たちを置いていきます。
1. Tabキーで「OP Create Dialog」を開いて、「SOP」を選択
1. その中から「Sphere」、「Noise」、「Twist」を選択して左から横並びにする
1. それぞれの箱を端と端の色のついた部分で繋げる
<br>ここから1つ1つの箱の設定をしていきます
<br>
1. SpehreをタップしてRadiusを左から0.2 0.5 0.5 にする
<br>2. 上のDetailからRowを150、Columnsを20にする
<br>3.TwistのPrimary AxisをY Axis、Strengthを70にする

<br>すると下の図のようになります。noiseとはランダムに図形が動くよってやつなので、図と多少形が違っても大丈夫です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617884/e8d7b6cb-6a7b-43ca-e55e-310898d21a0f.png)

<br>はい！ここまでできましたか！！そもそもやってないですか！？
<br>まあいいですよ。誰かがやってくれれば、やらなくても楽しそうと思ってくれればそれでいいです。
<br>一応各設定の説明を書いておくと、
1. Spehreの半径をx,y,z座標順に0.2 0.5 0.5にする
1. Spehreの中のポイントの数を縦150、横20にする
1. ツイストする軸をY軸に変更し、その強さを70にする

<br>2個目のポイントっていうのは図形の中にたくさんのポインがあってそれを設定できるのです。
実際にポイントがあることを確認したときは箱の上で右クリック、「Display Options」からAllのすぐ横の丸ボタンを選択すると見ることができます。

<img width="60%" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617884/82987306-0211-0f97-0970-1d1634f17e33.png">
<br>この1つ1つのポイントに図形を埋めていくと完成形のようになるのです。

<br>ここはプレゼンでも納得されるまで時間がかかったところなので、今は理解できなくてもちょっとずつやっていくとわかると思います。

<br>私としてはこういったことができるのがTouchDesigerの面白さであり、可能性の幅を感じるところです。

### 2. 1つ1つの点の図形を描画
次！先ほどのポイントに描画する図形をだします。今回は立方体にしました。
1. 「OP Create Dialog」（Tabキー）からSOPの「Box」を選択
1. さっきのTwistの上らへんに置く
1. BoxのSizeを左から0.01 0.01 0.01に変更
1. Boxの右側の水色の部分を右クリック、出てきたOP Create DialogからCOMPの「Geometory」を選択し、Boxの右に置く
<img width="10%" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617884/7fbf5983-a6cc-5c04-90cb-281f5c275236.png">
<br>4番目のクリックする場所はここです。
ここまでできるとこんな感じです。

![スクリーンショット 2023-12-17 15.01.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617884/74e4628e-90dc-0398-e98a-d2f0804bca60.png)

<br>書くのにだんだん疲れてきました。果たしてやってくれる人はいるのだろうか。
<br>もしまだやってくれる人がいたらすごいです。是非やった報告して欲しいです。そして私と一緒に作品作りましょう!

さて、今の説明を書いておくと
1. Boxのサイズを全て0.01に変更
1. Geometoryを使ってBoxをレンダリング

<br>レンダリングの概念もこれまたやってない人には難しいですが、ここからさまざまな情報をここに入れてまとめるよって感じです。

<br>次はこのレンダリングのための設定をしていきます。

### 3.図形のレンダリング
ここでは２つ前の座標に１つ前の立方体を入れて、レンダリングの設定をします！
まだ続くけどやってる人諦めないで〜
1. Geometoryの「Instance」を選択
1. 「Instancing」をONにする
1. 「Translate OP」に「twist1」と入力
1. 「Translate」のX、Y、Zの順に右の選択バーからP(0)、P(1)、P(2)を選択
<img width="60%" alt="ファイル名" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617884/73be2e98-acde-b7d9-cae7-8f03fec56d99.png>

<br>5. OP Create DialogからCOMPの「Camera」、「Light」をGeometoryの上に配置
6. OP Create DialogからTOPの「Render」をGeometoryの右に配置

<img width="60%" alt="ファイル名" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617884/29e9edfe-6461-6936-15c0-aa3fe386c94f.png>
<br>はい！もうほぼ終わり！今8割くらい終わった！なんならここでやめてもいい！
<br>ここで一気に完成図に近づきました。説明！

<br>twist1の座標をInstanceの座標としてTranslateの各座標に埋め込みました。
もしここでtwist1でエラーが出る人はtwistを何回か出した人だと思います。自分のtwistの箱の数字を見て入力してください。
<br>あとはカメラとライトの配置、RenderとはGeometoryの結果を出力する感じです。
<br>ここはTouchDesignerのお決まり、みたいなものなので深く考えなくていいと思います。

### 4.色をつける
ラスト！色つけるだけ！
1. OP Create DialogからMATの「Constant」を選択
1. Colorのすぐ横から任意の色を選択
1. Geometoryにドラック＆ドロップ、出てきた選択から1番上の「Parm:Material」
選択
![スクリーンショット 2023-12-17 15.36.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617884/5f3d8e8b-5afb-9ca1-db11-cd98a711f22a.png)

終わり〜！お疲れ様でした！
<br>まあ一応説明として選択した色をMaterialとしてGeometoryに入れました。Constantはベタ塗りみたいなテクスチャです。「Phong」を選択すればより影が入った感じにもなります。

最初の完成形を見てみます。
<img width="40%" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617884/23682119-6445-d1ff-684c-46bc711f678e.png">
こんな感じのができましたでしょうか。
<br>少し画像とは違えど、うねうねした楕円型みたいなのができればOKです。
<br> あとは今まで設定したいRadiusやSize、Strengthなどを変更したり、色を変えるとまた違った見え方になります。是非自分だけの形にしてみてください！


## 余談
余談ではありますが、先日のプレゼンで先生から質問されたものに答えられなかったので調べて回答しようと思います。
<br>「外部モニタやプロジェクタに映像を映すにはどうやるのか」です。

<br>答えはWindows COMPを繋げて接続した機器を選択するだけでした。
接続もかなり簡単に行えるようです。たまに卒論とかでプロジェクタの投影だけのためにTouchDesignerが使われているのも納得がいきます。

## 終わりに
今日はTouchDesignerの紹介と、ちょっとした（？）実習をしました。
<br>こんなに長くなると思いませんでした。TouchDesignerを文章化するのは結構大変ですね。参考書も少ないはずだ。
<br>今回やったことはTouchDesignerのほんの一部なので、是非気になったらYoutubeなどに載っているチュートリアルもやってみてください。
<br>よくデザインなんてできないよ〜センスないし〜と言われますが、私だって絵は上手くないし、今までデザインに触れてきたこともないです。
<br>そもそもセンスは今までそれにかけてきた時間に比例すると思います。最初からなくて当然です。
<br>ただそのセンスのなさも認めて正解のないものを自由に制作できるところがやりがいと楽しさだなと思います。

<br> 最後にしつこいですが私と一緒に作品作りましょう〜！ご連絡お待ちしております。