今回は Instancing と Particle SOP の勉強をしていきます!
サンプルファイル
chimanaco/takara-univ-media-programming-2021
06が本日のディレクトリです。
Instancing
Geometry COMP
には Geometry Instance という機能があります。これはgeometry のオブジェクトをコピーし、個別に変形を加えられるというものです。
GPU を使って処理をするため、以前ご紹介した CPU を使った Copy SOP
よりも大量に高速に処理をすることができます。よく使うものには Translate
、Rotate
、Scale
、Color
などのパラメーターがあり、1つ1つの変化はシンプルでも大量のインスタンスを扱うことで面白い効果を得ることもできます。 それではやってみましょう!
いくつかやり方があるのですが、今回は CHOP を使用してインスタンスを作る方法をご紹介します。
Instancing Position: /project1/Instancing_position
Sphere
に Noise をかけた形にインスタンスを配置してみましょう。
ポイントとなるのは以下です。
- 形を作る
Sphere
SOP を追加する。 - SOP を
SOP to CHOP
で CHOP に変換して、3D空間上の各座標を CHOP で表示する。 Geometry COMP
のInstance
タブのInstancing
をON
にする。Default Instance OP
に変換した CHOP を指定する。Translate X/Y/Z
にtx ty tz
を指定する。
Instancing Normal: /project1/Instancing_normal
次に normal の値を使用して各インスタンスが元の SOP の法線の方向を向くようにしてみましょう。
SOP to CHOP
でNormal
をON
にする。Rotate to Vector X/Y/Z
にnx 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 方向に少し回転を加えると直ったりします。
Instancing Color: /project1/Instancing_color
続いてインスタンスに色をつけてみます。
- 新しく
Noise CHOP
を追加し、r g b
の3チャンネルとする。インプットにSOP To CHOP
のアウトプットをつなぐ。 Math CHOP
を追加し、From Range
を-1
と1
に指定。Merge CHOP
を追加し、SOP to CHOP
とr g b
の入ったMath CHOP
をインプットする。Geometry COMP
のInstance2
タブのR/G/B
にr/g/b
を指定する。
Instancing Scale: /project1/Instancing_scale
最後にインスタンスのサイズを変えてみます。
- 新しく
Noise CHOP
を追加し、チャンネル名をscale
とする。インプットにSOP To CHOP
のアウトプットをつなぐ。 Math CHOP
を追加し、From Range
を-1
と1
に指定。To Range
を0.5
と2
に指定(値は何でもかまいません)。Merge CHOP
にインプットする。Geometry COMP
のInstance
タブのScale X/Y/Z
にscale
を指定する。
SOP に変化を加えたり、CHOP の値をいじることによって面白い動きになると思うので色々試してみてください!
Particles
3DCG でパーティクルというと、粒子(パーティクル)を発生させて物理シミュレーションを用いてコントロールし、自然原初のシミュレーションやエフェクトなどを作るのに用いられます。TouchDesigner では基本的には Particle SOP を使って作ります。パラメーターがたくさんありますが、よく使うものを紹介していきます。
Particles Forces/project1/Particle_forces
まず Forces
タブにあるものです。
Name | Summary |
---|---|
External Force | gravity の強さ。 |
Wind | 風の強さ。External Force と似ているが、比較的弱め。 |
Turbulence | 乱流の強さ。 |
Turb Period | 小さいと細かい範囲で動き、大きいと動く範囲が広くなる。 |
Particle の挙動を確認する時は、Geometry Viewer を開いて Display Option
で Points
をオンにすると見やすくなります。
次に 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 消滅時に新しいパーティクルを発生させる |
Particles Force input/project1/Particle_force_input
Particle SOP の3番目の入力は外部からの力です。 Force field(力場)を Metaball SOP と Force 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 の表面に対してランダムにパーティクルが向かっていきます。
Particles Sort/project1/Particle_sort
Sort SOP
を使ってパーティクルの発生順を変えることができます。Point Sort
の値を変えてみてください。
Particles を Instancing に使う
Particles & Instancing: /project1/Particle_instancing
ここまで作ってきた Particle SOP を使って Instancing の動きをコントロールしてみましょう。
本日の課題: パーティクルとインスタンシングで動きを作ってみる
今日勉強した Particle SOP と Geometry Instancing を使って動きを作ってください。余裕があったら、前回勉強した MAT をあててみてください。質感よりも動きを重視します。プロジェクトフォルダごと Teams に提出してください。