---
# System prepended metadata

title: TouchDesigner Summit 2019 Montréal

---

# TouchDesigner Summit 2019 Montréal

![](https://i.imgur.com/6yq1Gdr.jpg)

https://2019.touchdesignersummit.com/

## Workshop

受けてきたワークショップは以下の3つです！
三つともAdvancedレベルです。

+ [SOP on GPU v 2.0](https://2019.touchdesignersummit.com/workshops/sop-on-gpu-v-2-0)
+ [Advanced Techniques in Media Management, Sequencing and Playback](https://2019.touchdesignersummit.com/workshops/advanced-techniques-in-media-management-sequencing-and-playback)
+ [External Python Libraries
](https://2019.touchdesignersummit.com/workshops/external-python-libraries)

---


### SOP on GPU v 2.0

08/18 Sun. Fullday
Teacher : Stanislav Glazov
Level : Advanced

SOPはCPU処理だからShader書いて処理軽くしようねって話
ワークショップの内容はGeometryShaderを最初からガッツリ書いていきましょう！って感じでしたが数10~100行以上確認しないで書いていって、タッチ戻ってエラー直すっていう進め方でした...

ファイル
https://www.dropbox.com/sh/h78wzbfqxi83wld/AAA75nX2wUHxkpybfRuDVooQa?dl=0

00_SOPonGPU
Point, Vertex, Primitiveとは？

Vertex? Primitive?って人はこちらの記事をどうぞ
http://satoruhiga.com/post/tdsw010/

01_SOPonGPU
GeometryShaderでPrimitiveを複製、移動

02_SOPonGPU
vtxというStructとmake_vtxという関数を作ってmainを簡単に書けるようにしている
``` geometory.glsl
vtx get_vtx(int i){
	vtx PT;
	PT.Cd = iVert[i].color;
	PT.wP = iVert[i].worldSpacePos;
	PT.N  = iVert[i].worldSpaceNorm;
	PT.uv = iVert[i].texCoord0;
	PT.ci = iVert[i].cameraIndex;
	PT.P  = gl_in[i].gl_Position;
	return PT;
}

void make_vtx(vtx PT){
	oVert.color             = PT.Cd;
	oVert.worldSpacePos     = PT.wP;
	oVert.worldSpaceNorm    = PT.N;
    oVert.texCoord0         = PT.uv;
	oVert.cameraIndex       = PT.ci;
	gl_Position             = TDWorldToProj(PT.P, PT.ci);

	EmitVertex();
}

void main()
{
	for (int i = 0; i < 3; i++){
		make_vtx(get_vtx(i));
	}
    EndPrimitive();

}
```

SOPonGPU advanced.toe
SOPの頂点をCHOPの情報にしてSamplerBufferにしてGeometryShaderに渡して、その点と閾値よりも近くなったら線をひくもの

※Macでちゃんと絵が出ないことなどがあります

---

### Advanced Techniques in Media Management, Sequencing and Playback

08/19 Mon. Half day
Teacher : Peter Sistrom
Level : Advanced

大規模のShowコントロールシステムをタッチでつくっている人の講座
システムの内容をみんなで見ていくというもので、ファイル公開はありませんでした。

TDAbletonでタイムラインにリンクしていて、進みすぎたり戻った時にその場所までジャンプする
MIDIClockとのリンク

opBrowserやlisterとかをベースにしてUIを作っていた
![](https://i.imgur.com/hBjGvhh.jpg)

Extensionを使ってクラスを作っていく。
Coreとなるクラスを作ってそこからMovieやAudioといったものに継承していく
クラスの作り方は以下のリンクを参考にするといい
https://docs.derivative.ca/Creating_Custom_TDAbleton_Components

System Compsと称して、すべてProjectCompの外に出しておいて、どのプロジェクトでも使えるようにしている。
複数で作業するときは特に、GlobalShortcutをプロジェクト内で使うと訳が分からなくなるので、SystemCompsに限定して使用

`project.paths`でパスのショートカットを保管し使用していた
https://docs.derivative.ca/Project_Class

Tagを使うとopFindDATで検索もかけられて見つけやすい。各種検索やタイムライン表示にTagを使っているらしい。

後半からはこういう作り方をしていったらいいのではないかというディスカッション。
ベストは結局人それぞれ

![](https://i.imgur.com/xKHXKLt.jpg)
タイムラインにはRenderPickやinstancingを使っているらしく（中身は見れなかった）大変そう

---

### External Python Libraries

08/19 Mon. Half day
Teacher : Matthew Ragan
Level : Advanced

https://mir.works/td-summit-2019-external-python-libraries

---

#### 準備
##### 動作環境
[TouchDesigner](https://www.derivative.ca/099/Downloads/)
[Python 3.5.1](https://www.python.org/downloads/release/python-351/)

##### Github リンク
https://github.com/mir-lab/touchdesigner-summit-2019-external-python

##### 推奨ツール(外部エディタ)
+ [Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/)
+ [Sublime Text](https://www.sublimetext.com/)
など

##### 準備事項
+ 最新バージョンの TouchDesigner 099 にアップデート
+ Python 3.5.1 をPCにインストール
+ Githubのレポジトリをダウンロード

---

#### 概要
WebサービスからIoT、データ分析などまでPythonでできることはどんどん拡大しています。
これらのことをゼロから始めることは可能ですが、大体の場合、公開されているライブラリを使用する方が簡単で手軽にできます。
TouchDesignerでは既に。OpenCVやNumpyなどのいくつかの追加ライブラリがインストールされており、Pythonを自由に扱えるようになるとどんどん自分の思い通りに作業ができるようになります。
しかし、自分のPCで作業してたものを他のマシンで動作させるとなったときにスムーズにいかず、イライラすることが起きることが多々あります。
このワークショップではそのプロセスを限りなくスムーズに行うために何ができるかを学んでいきます。

#### 導入 (なぜ外部ライブラリを使うのか)
外部ライブラリは、制作を行う人にとってとても大きな利点を提供してくれます。
探し求めていること、やりたいことを実装するには数日から一生の時間を費やすことになることがあります。
外部ライブラリを使えば、メールを送信したり、天気をチェックしたりといったありふれたものから、WebサービスやIoTデバイスとの通信などの様々な素敵な可能性がひろがります。そういったライブラリを使用することで、機能を実装するための技術的に深いところではなく、自分の作りたいものへの作業に集中することができます。また、複雑なプロジェクトのために限られた時間を最大限に活用することもできます。



#### 手順
baseComp (iparExtPython)
Custom Par 
+ External Python
    + File -> Python requirements(Pyreqs)
    + Folder -> Install target(Target)

requirements.txt作成

#### tips
+ Custom Par
+ ipar
+ tdu.expand()
+ sys.path
+ tags

---

### おわり


