Operator Snippetsのサンプルを作ってTouchDesignerに名を刻む

こんにちは！こちらは [TouchDesigner Advent Calendar 2020](https://qiita.com/advent-calendar/2020/touchdesigner) 21日目の記事です。よろしくお願いします。

今回作ったサンプルは以下にあります。
https://github.com/chimanaco/touchdesigner-advent-calendar-2020

# はじめに
![005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58558/fbe3ddc9-d144-1683-a67d-65c8a7621d43.png)

`Operator nippets` は各 operator の使い方のサンプル集です。コピペして使うこともできますし、使ったことのない operator もあると思いますので眺めているだけでも勉強になる宝の山！なので使ったことないよって方はこの機会にチェックしてみることをおすすめします。上部メニューの `Help` > `Operator Snippets` から開くことができます。ここに自分の作ったサンプルを置いてもらおうというのが当記事の趣旨です。

# どうやって送ればいいの？
[OP Snippets | Derivative](https://derivative.ca/UserGuide/OP_Snippets) に書かれているように、ユーザーもサンプルを作って Derivative（TouchDesignerを作っている会社） に送ることができます。

条件は割とシンプルで以下のように書いてあります。

* 20ノード以下で。
* `readMe` と名前をつけた `Text DAT` を作って何をしているか書く。
* その `Text DAT` の `Common` タブにある `Word Wrap` を有効にする。
* 送り先は [snippets@derivative.ca](mailto:nippets@derivative.ca)

送ったサンプルは Derivative の中の人がチェックするので、そのまま使われるか、そもそも使ってもらえるかも分からないんですが、このくらいの条件ならそんなに難しくなさそうです。自分も知らない operator を使ってみて勉強になるし、他のユーザーの役に立つ可能性もあり、その上名も刻めるかもしれないというところでテンションを上げていきます。 

# 既存の snippets を眺めてみる
誰の名前が刻まれているのかと各サンプルを眺めてみると、`Cache Select TOP` に Matthew Ragan さん、`Remap TOP` に David Braun さん、`RGB Key TOP` には Idzard Kwadijk さんの名前が見られます。この面々に名を並べるのはちょっと畏れ多いですが、それが今回の野望なのです。

TouchDesigner2020.27390で `Operator Snippets` にサンプルが無いものの中で、以下が興味がある、または作れそうと思ったものたちです（全部ではありません）。分かっていたことではありますが、比較的新しいものやデバイス連携のもの、シンプルな機能なものなどにサンプルが無いことが多いですね。

## TOP
`GLSL Multi` `HSV adjust` `Kinect` `Layout` `Leap Motion` `Mirror` `Monochrome` `Outside` `RealSense` `Rectangle` `Render Select` `Screen` `Screen Grab` `Script` `Slope` `SSAO` `Substance` `Substance Select` `Subtract` `SVG` `Threshold` `Under` `Web Render` など

## CHOP
`Angle` `Attribute` `Audio Movie` `Audio NDI` `Copy` `Cycle` `Envelope` `Feedback` `Function` `Handle` `Hog` `Hokuyo` `Interpolate` `Inverse Curve` `Inverse Kin` `Leap Motion` `Override` `Render Pick` `Replace` `Sequencer` `Shift` `Spring` `Transform XYZ` など

## SOP
`Alembic` `Attribute` `Attribute Create` `Bone Group` `Bridge` `Capture` `Capture Region` `Clay` `Curveclay` `Curvesect` `Deform` `Divide` `Inverse Curve` `LOD` `Polyloft` `Polypatch` `Polyreduce` `Polyspline` `Polystitch` `Profile` `Project` `Raster` `Trim` `Tristrip` `Tube` `Vertex` など

## CHOP
`Angle` `Cycle` `Envelope` `Error` `Lookup` `Monitors` `MQTT Client` `Sequencer` `SocketIO` `RenderPickCHOP` など

## MAT
`PointSprite`

# できそうな operator のサンプルを作ってみる
今回は `Layout TOP` `Attribute Create SOP` `Polyloft SOP` `PointSprite MAT` のサンプルを作ってみることにしました。選んだ基準は、これなら簡単に作れそう&検索でサンプルが出てきた、です。

## Layout TOP
![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58558/4da5a52f-de8c-0362-faf4-9988e4422d7b.png)

TOPs をレイアウトすることができます。難しいことは特に無いのですが、今回触ってみて TOPs を Input につなぐだけでなく参照することもできることを知りました（右下のサンプル）。

## Polyloft SOP
![003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58558/f0e19362-be3c-3069-7639-50f01d702d7e.png)

Poly◯◯◯系の SOP はいくつかありますが1つもサンプルが無い状態です。こちらは比嘉了さんのサンプルのコピペです。インターネットに貢献している人の名前もせっかくなので刻みたいということで readMe に書いています。
[映像音響処理概論 2018 第7回 Satoru Higa](http://satoruhiga.com/TDWS2018/day7/)

## Attribute Create SOP
![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58558/16038f65-c1eb-4c5c-d01c-64ac4c0a33f5.png)

Normal map を使った時に `Render TOP` がこれを設定すれば治るよと Warning 出してくれるやつなので、サンプル無くても分かるっしょということではと思いましたが作ってみました。readMe には、このサンプルのベースとなっている bileam tschepe さんのチュートリアルへのリンクもを載せています。
[Outrun / Landscapes – TouchDesigner Tutorial 19 - YouTube](https://www.youtube.com/watch?v=K8vIg2t3wDo&ab_channel=bileamtschepe)

## PointSprite MAT
![004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58558/5d22ae5f-4e05-f547-45a8-9cad8e26f7ec.png)

サンプルを作った後に既にサンプルが `Particle SOP` の方にあることに気づいたので、そっちを見てねとだけ書きました。`Particle SOP` の中の `GPU Particles`みたいな感じですが、これがあるだけでも誰かが目的にたどり着くのが早くなるかもしれないのでは。

# サンプル送信
先程のメールアドレス宛にメールを書いて送りました。

# 終わりに
先にも書いたとおり Derivative の中の人の検証が入るので、いつになるか、そもそも入れてもらえるか、入れてもらったとしても名前を刻めるか分かりませんが、バージョンアップを毎回楽しみに待つことにします。

個人的には SOP 周りが一番分からないので、サンプルが増えたら最高だなと思っています！
それでは！

【2021/02/11 追記】
TouchDesigner 2021.10330 で作ったサンプルが追加されてました！