第6回 Instancing & Particle SOP 基礎

Tuesday, June 1, 2021

今回は Instancing と Particle SOP の勉強をしていきます!

サンプルファイル

chimanaco/takara-univ-media-programming-2021
06が本日のディレクトリです。

Instancing

Geometry COMP には Geometry Instance という機能があります。これはgeometry のオブジェクトをコピーし、個別に変形を加えられるというものです。

GPU を使って処理をするため、以前ご紹介した CPU を使った Copy SOP よりも大量に高速に処理をすることができます。よく使うものには TranslateRotateScaleColorなどのパラメーターがあり、1つ1つの変化はシンプルでも大量のインスタンスを扱うことで面白い効果を得ることもできます。 それではやってみましょう!

いくつかやり方があるのですが、今回は CHOP を使用してインスタンスを作る方法をご紹介します。

Instancing Position: /project1/Instancing_position

Sphere に Noise をかけた形にインスタンスを配置してみましょう。

Network

ポイントとなるのは以下です。

  • 形を作る Sphere SOP を追加する。
  • SOP を SOP to CHOP で CHOP に変換して、3D空間上の各座標を CHOP で表示する。
  • Geometry COMPInstance タブの InstancingON にする。
  • Default Instance OP に変換した CHOP を指定する。
  • Translate X/Y/Ztx ty tz を指定する。

Instancing Normal: /project1/Instancing_normal

次に normal の値を使用して各インスタンスが元の SOP の法線の方向を向くようにしてみましょう。

Network

  • SOP to CHOPNormalON にする。
  • Rotate to Vector X/Y/Znx ny nz を指定する。

One or more of the Rotate to Vectors is co-linear with the up vector, no orientation will be applied for those instances. というエラーが出るかもしれません。これは上向きのベクター、y 方向のベクターと重なる法線があるので回転が反映されません、というワーニングです。Transform SOP で x か z 方向に少し回転を加えると直ったりします。

Network

Instancing Color: /project1/Instancing_color

続いてインスタンスに色をつけてみます。

Network

  • 新しく Noise CHOP を追加し、r g b の3チャンネルとする。インプットに SOP To CHOP のアウトプットをつなぐ。
  • Math CHOP を追加し、From Range-11 に指定。
  • Merge CHOP を追加し、SOP to CHOPr g b の入った Math CHOP をインプットする。
  • Geometry COMPInstance2 タブの R/G/Br/g/b を指定する。

Instancing Scale: /project1/Instancing_scale

最後にインスタンスのサイズを変えてみます。

Network

  • 新しく Noise CHOP を追加し、チャンネル名を scale とする。インプットに SOP To CHOP のアウトプットをつなぐ。
  • Math CHOP を追加し、From Range-11 に指定。To Range0.52 に指定(値は何でもかまいません)。Merge CHOP にインプットする。
  • Geometry COMPInstance タブの Scale X/Y/Zscale を指定する。

SOP に変化を加えたり、CHOP の値をいじることによって面白い動きになると思うので色々試してみてください!

Particles

3DCG でパーティクルというと、粒子(パーティクル)を発生させて物理シミュレーションを用いてコントロールし、自然原初のシミュレーションやエフェクトなどを作るのに用いられます。TouchDesigner では基本的には Particle SOP を使って作ります。パラメーターがたくさんありますが、よく使うものを紹介していきます。

Particles Forces/project1/Particle_forces

まず Forces タブにあるものです。

Network

Name Summary
External Force gravity の強さ。
Wind 風の強さ。External Force と似ているが、比較的弱め。
Turbulence 乱流の強さ。
Turb Period 小さいと細かい範囲で動き、大きいと動く範囲が広くなる。

Particle の挙動を確認する時は、Geometry Viewer を開いて Display OptionPoints をオンにすると見やすくなります。

次に Particles タブにあるものです。

Name Summary
Mass 重さ。重いほどスピードが上がりにくくなると同時に下がりにくくなる
Drag 抗力。空気抵抗を表す。0は真空状態となる。
Birth 1秒間に生成されるパーティクルの数。
Life Expect パーティクルの寿命。
Life Variance パーティクルの寿命の分散具合。

左に戻って State タブにあるものです。

Name Summary
Remove Unused Points 寿命を終えたパーティクルが削除するかどうか。ここを ON にしておくと、明示的に不必要なポイントを削除することとなり、不必要な処理落ちを防げることができます。

Particles Collision/project1/Particle_collision

最後に Limits タブにあるものです。他のオブジェクトに衝突時のパーティクルの挙動を設定します。

Name Summary
Hit Behavior Die on Contact 消える Bounce on Contact 跳ね返る Stick on Contact 貼り付く
Gain Tangent Bounce on Contact の時の geometry の表面方向への反射の強さ
Gain Normal Bounce on Contact の時の geometry の法線方向への反射の強さ
Split 分割の設定 No Splitting 分割しない Split on Contact 衝突時に分割 Split on Death 消滅時に新しいパーティクルを発生させる

Network

Particles Force input/project1/Particle_force_input

Particle SOP の3番目の入力は外部からの力です。 Force field(力場)を Metaball SOPForce SOP をつないで作り、3番目のインプットにつなぎます。

Name Summary
Radial Force メタボールの外から中心、中心から外へと向かう力。(引力と斥力)
Directional Force Bounce on Contact の時の geometry の表面方向への反射の強さ
Axial Force 軸方向への力
Axial Force 軸を中心とした円状の回転
Spiral Force 軸と垂直な方向に対する引力、斥力

Particles geometry 表面への引力 /project1/Particle_surface_attractors

4番目の入力に入れた SOP の表面に対してランダムにパーティクルが向かっていきます。

Network

Particles Sort/project1/Particle_sort

Network

Sort SOP を使ってパーティクルの発生順を変えることができます。Point Sortの値を変えてみてください。

Particles を Instancing に使う

Particles & Instancing: /project1/Particle_instancing

ここまで作ってきた Particle SOP を使って Instancing の動きをコントロールしてみましょう。

本日の課題: パーティクルとインスタンシングで動きを作ってみる

今日勉強した Particle SOP と Geometry Instancing を使って動きを作ってください。余裕があったら、前回勉強した MAT をあててみてください。質感よりも動きを重視します。プロジェクトフォルダごと Teams に提出してください。

参考

第7回 Audio Data Visualization 基礎

第5回 レンダリング / MAT 基礎