TouchDesignerの基本操作 / Instancingする
TouchDesignerではSOPを使って3Dモデルを扱うことができますが、例えばパーティクルや沢山のオブジェクトを大量に扱う表現はGeomtery COMPのInstancingという機能を使います。この機能を使うと座標や回転、スケールや色情報など固有に変更可能な値を持ったオブジェクトを大量に複製することができます。
サンプルファイルはこちら。
下準備
まずは通常のレンダリングの流れを作ります。今回はPhong MATとSpehre SOPを使うことにしましたが、SOPとMATに特に制限はありません。Lookup TOPとRamp TOPの組み合わせは単純に背景を黒くしたいがために使っています。
このサイズのオブジェクトを複製すると画面いっぱいになってしまうので小さくします。間に挟んだTransform SOPのUniform Scaleを0.05にしましょう。
次にGeometry COMPのInstanceタブにあるInstancingをONにします。
これで準備は完了です。
Instancing1. SOPとTranslate
まずは分かりやすくグリッド状に並べてみましょう。
InstancingはInstance Counte Modeで設定できます。デフォルトはInstance OP(s) Lengthが設定されており、下の段に接続されたオペレータが持っている値の数だけコピーするようになっています。
Instancingで利用するオペレータは以前はCHOPのみでしたが現在はCHOPとTOPとSOPが利用できます。
まずはGrid SOPを作りましょう。
Grid SOPは初期値では縦20個、横20個、合計400個のポイント(頂点)を持っています。この頂点の座標それぞれにさきほど作った球をInstancingさせます。
一旦Null SOPを挟み、そのNull SOPをGeometry COMPのInstanceタブTranslate OPにドラッグ&ドロップします。
次にTranslate X、Translate Y、Translate Zにグリッドの頂点座標であるP(0)、P(1)、P(2)を当てはめます。すると400個の急がグリッド状にレイアウトされます。P(0)、P(1)、P(2)は直接打ち込むこともできますが、右の▼ボタンを押すことで選んで入力することもできます。
Instancing2. CHOPとScale
次はCHOPでInstancingにパラメータを設定してみましょう。今度はScaleに設定します。
まずはLFO CHOPから。Scaleは文字通りInstancingする物体の縮尺なので、今回は0から1で指定します。Offsetを0.5、Amplitudeを0.5にするとサイン波が0から1の間を行き来するようになります。ついでにFrequencyも0.5と半分のスピードにしておきましょう。
CHOPでInstancingの値を利用する場合、配列の順番でそのままInstancingに当てはめられます。つまりSOPで作った400個のInstancingに数をそろえるには400個の配列を作る必要があります。今回はTrail CHOPを使います。
Window Lengthの単位をI(Sample)に変更し、サンプル数を400に変更します。これで400個の配列になりました。
これにNull CHOPを挟んでGeometry COMPのInstanceタブのScale OPにドラッグ&ドロップします。Scale X、Scale Y、Scale Zには全てにchan1を指定しましょう。グリッド状に配置された球のサイズが変化するようになったかと思います。
Instancing3. TOPとColor
最後にTOPで色をつけてみましょう。Noise TOPを使います。折角なので動くようにTranslate ZにabsTime.secondsを打ち込んで時間で変化するようにしましょう。
TOPの場合、ピクセルがそのままInstancingの1要素になります。なので400個ぶんのパラメータを作りたければ幅400ピクセル、高さ1ピクセルの横長画像や、幅高さ共に20ピクセルの正方形のTOPなど、レイアウトは自由です。
今回はGridの形状に合わせて20 x 20のレイアウトで行きます。Noise TOPのCommonタブのResolutionの幅と高さにそれぞれ20を打ち込みます。
できあがったら他と同様にNull TOPを挟み、Geometry COMPのInstance 2タブにあるColor OPにNull TOPをドラッグ&ドロップします。R、G、B値にはそれぞれr、g、bを指定します。
色が変わるようになったはずです。
最後に
このようにInstancingを利用すると1つのオブジェクトを複製するだけでなく、配置やスケール、色など複製したものに個別にパラメータを変化させることができます。
また、その際に使うオペレータはCHOP、TOP、SOPどれでもかまいません。Instancingによって一気に手作業では作りづらい大量の物体を同時に制御しているような映像を作ることができます。
最後に補足を。CHOP、TOP、SOPどれでもInstancingは制御できますが、非常に大量のオブジェクトを制御したい場合、動的な部分はTOPのみで記述すると最もパフォーマンスが出ます。
これは通常、3Dの描画は基本GPU上で行うのですが、SOPやCHOPと異なりTOPは基本GPUで処理されているため、GPUとCPUの間でデータのやりとりが発生しないためです。
難しいのでとりあえずはTOPは処理が速いとだけ覚えておけばOKです
この記事が気に入ったらサポートをしてみませんか?