今回は 3D の形状などを扱う SOPs (Surface Operators)とレンダリングの基礎の勉強をしていきます!
サンプルファイル
chimanaco/takara-univ-media-programming-2022
04が本日のディレクトリです。
SOP を構成するもの
SOP Structure: /project1/Structure
SOP を構成するものとして Point、Vertex、Primitive というデータ構造があります。ちょっとややこしいのですが、以下のように考えることができます。
| Name | Summary |
|---|---|
| Point | 3D 空間上の座標で表される点。 |
| Vertex (Vertices) | Point を使ってどのように Primitive を形作っているかの情報。 |
| Primitive | Point と Vertices を使ってレンダリングできるようにしたもの。 |

SOP Primitive types: /project1/Primitives_Types
SOP Primitives types2: /project1/Primitives_Types2
Primitive と呼ばれるものには以下のものがあります。
| Type | Summary |
|---|---|
| Polygon | 三角ポリゴンの集まりで構成されている形状。よく使う。 |
| Mesh | 四角ポリゴンの集まりで構成されている形状。よく使う。 |
| NURBS | Non-Uniform Rational B-Spline(非一様有理Bスプライン)の略で、曲線や曲面を生成する数学的モデル。計算負荷が高い。 |
| Bezier | ベジエ曲線を使って生成する数学的モデル。計算負荷が高い。 |
| Particle | などを使用した粒子のシミュレーションや、ポイントクラウドの描画。 |
| Metaball | 2個以上になると互いに融合し合って複雑な形状になる球。Metaball SOP。 |

Particle は Particle SOP 、Convert SOP などで作成することができます。

SOP Primitives: /project1/Basic_Primitives
また Primitive というと、Circle、Box, Sphere、Tube などのシンプルな形状のもののことも指します。これらは CG ソフトウェアの方で用意されているものです。

よく使う操作
Viewer を Active にした状態で以下の操作ができます。
LMB + ドラッグで回転、RMB + ドラッグで横移動、MMB + ドラッグでズームができます。
Hキーでデフォルトの位置にリセットできます。
Wキーで wireframe を表示します。
Pキーで Display Option を表示します。
よく使う SOPs
Merge: /project1/Merge
Merge SOP は2つ以上の SOP をマージします。

Boolean: /project1/Boolean
Boolean SOP
は2つの SOP の加工をします。計算式によって結果が変わります。 例えば、Union は2つの SOP を合体させて、内側のポリゴンを削除し、Intersection は外側のポリゴンを削除します。パラメーターを変えたり入力している SOP をいろいろ変えて試してみてください!

Clip: /project1/Clip
Clip SOP は立体を平面で切り取ります。

Trace & Extrude: /project1/Trace_Extrude
Trace SOP
は TOP から SOP を生成します。Threshold などの値を変更して色々な画像で試してみてください。
また、ここでは Extrude SOP
を使って立体の押出をしています。Depth Scale でどのくらい押し出すか調整することができます。

Copy: /project1/Copy
1つ目の SOP の入力をコピーします。Number of Copies でコピーする回数を変更できます。

2つ目の input に指定した SOP の形状にコピーすることもできます。

Obj: /project1/Obj
ここでは obj を読み込んでいます。読み込めるファイル形式は File Types - Derivative
を参照して下さい。

ドラッグ&ドロップでネットワークに追加することもできます。
レンダリング
レンダリングとは、3DCG ソフト上で形状や、マテリアル、テクスチャ、ライティングなどの計算を行い、最終的に2Dのイメージ出力を行うプロセスのことです。
TouchDesigner では以下のオペレーターを組み合わせてレンダリングしていきます。
| Name | Summary |
|---|---|
| Geometry COMP | 実際にレンダリングされるもの |
| Camera COMP | カメラを通して映し出されるものが出力される |
| Light COMP | ライティング |
| MAT | マテリアル、質感 |
| Render TOP | 出力結果 |
はじめてのレンダリング: /project1/Render_fundamental

まず Geometry COMP を追加。 中を見てみるとデフォルトで Torus SOP が入っています。
次に Render TOP を追加。そうするとカメラが無いと Warning が出ますので、
Camera COMP を追加。 形状がそれらしいものが出てくるのですが真っ黒になっています。ここで Light COMP を追加。無事 Torus が照らされました。
これが TouchDesigner のレンダリングの基本形です。
3D 空間で各コンポーネントを確認できる Geometry Viewer を開いてみましょう。alt + [ でネットワークエディターを分割し、左端の矢印ボタンから Geometry Viewerを選択すると以下のような画面になると思います。
SOP の Active Viewer と同じように操作することができます。
このように Geometry、Camera、Light が配置されているのが分かるかと思います。これらを動かしてみて、Render TOP の出力結果がどのように変わるか試してみてください!

Geometry の中の SOP の紫のボタンは render、青のボタンは display のトグルボタンになっています。表示がおかしい時はここをチェックしてみるといいかもしれません。
SOP と Geometry をつなぐ: /project1/Render_fundamental_2
SOP のアウトプットの上で右クリックして Geometry をつなぐと 内部に InSOP と OutSOP を自動で作成し、入力した SOP と同じものを Geometry 内に入れることができるのでおすすめです。
本日の課題: SOPs を使って顔をモデリングする
SOP を使用して顔を作成してください。人でもロボットでも動物でも何でも構いません。.toe ファイルや画像などの入ったプロジェクトフォルダごと Teams に提出してください。
顔参考: /project1/Example
TouchDesigner でモデリングをしてみましたが、複雑なモデリングをするなら別のモデリングを得意とするソフトウェアを使った方がいいと思います。Blender や Maya など授業でやられている方も多いと思いますので是非ご自身で作成したモデルを読みこんで使ってみてください!
参考
- SOP Workshop @TouchDesigner Study Weekend vol.010
- 映像音響処理概説 2019 第6回: SOP基礎
- 映像音響処理概説 2019 第8回 | satoruhiga.com: SOPのレンダリング
- SOP - Derivative
- Point List - Derivative
- Primitive - Derivative
- 第1回: イントロ,映像生成,インタラクティブ,3D,レンダリング | Scott Allen
- Norway Workshop | Introduction to SOPs - Surface Operators - YouTube
- introduction to Touchdesigner - Stream part 4 - More SOPs, Instancing and Geometry - YouTube
- SOPの基本的な使い方|Toyoshi Morioka|note
- 映像音響処理概説 2018 第二回
- 映像音響処理概説 2019 第12回: 音反応 2
- 映像音響処理概説 2019 第11回: 音反応
- How to make spectrum shape audiovisual using feeback in Touchdesigner (터치디자이너 튜토리얼 자막) - YouTube
- 音の大きさの指標。Peak(ピーク)とRMSについて : OTO-to-MIMI
- 5.3 FFTとオーディオの音程解析 - 技術的なやつ