« C4D 電話機の螺旋コードを作ってみる-05 | トップページ | C4D ThinkingParticles パーティクルを粉砕して散らす…「PFragment」 »

C4D ThinkingParticles パーティクルの振る舞いを考えてからXPressoを組み立ててみる。

C4Dヘルプ等によると、パーティクルの振る舞いを先に考え計画を立ててから、ThinkingParticlesを組み立てると、書いてありますが…

自分は無計画主義なので、組み立てながら、あぁ~でもない… こぉ~でもない…と、言うありさま。
たまには、先に考えてから組み立ててみようと思います。

多分、先に考えてから組み立てると、作業も速く終わるような気がしてきました…

さて、簡単なのが良いね…
こう言うのはどうだろう…

Tps_01

イメージとしては、水をプールの様なところに放水し、水中では気泡が発生し、水面にゆらゆら上っていき、水面で消失する。
練習としては、簡単そうです…

今回は、波紋等の効果は一切なしで、単純にC4D ThinkingParticles の組み立てのみです。
パラメータの調整もしません。

パーティクルグループは、「All」下に「A」「B」を追加。

Tps_02

水面は、単純な1枚ポリゴンです。

Tps_03

Tps_04

エミッタは、TPジェネレータの「PStorm」を使い、位置や方向をヌルオブジェクトを利用します。
「PGroup」でグループ「A」を指定しました。

Tps_06

Tps_05

重力Aは、ヌルオブジェクトを追加し、Z軸を下に向けます。
「PPass」にグループ「A」を指定し、「PGravity」に重力Aのヌルオブジェクトを指定します。

Tps_07

Tps_09

Tps_08

水面のポリゴンにグループ「A」のパーティクルが衝突すると、パーティクルはグループ「B」へ移籍します。

ポリゴンの衝突判定は、「PDeflector」を使い、デフレクタタイプを「オブジェクト」に、「イベントのみ」の発生にします。

Tps_11

「PDeflector」からイベントの結果を「PGroup」の「オン」に入力し、グループ「B」へ移籍させます。

Tps_10

グループ「B」の振る舞いは、上に向かう重力をかけ、グループ「A」のときに受けた重力「A」の勢いが重力「B」に殺され、水面に向かって行くときに揺れながら上がっていきます。
水面に辿り着くと消滅します。

では、重力「B」も重力「A」と同様、ヌルオブジェクトを指定します。
重力「B」は上向きなのでZ軸を上に向けます。

Tps_12

Tps_14

Tps_13

水中には抵抗があるので、「PFriction」を使って勢いを減衰させます。

Tps_15

下向きの勢いが上向きに転じると、軌道に揺れを与えるために、「PBubble」を使います。
パーティクルが上に移動しているかの判定は、パーティクルの速度(ベクトル)を「PGatData」で抽出します。
速度のY成分が正の値かを判定し、結果を「PBubble」の「オン」に入力します。

Tps_17

Tps_16

最後に、グループ「B」がポリゴンに衝突したら消滅するように、「PDie」を使います。
衝突判定は、グループ「A」の時と同様、「PDeflector」の「イベントのみ」を使います。
デフレクタタイプを「オブジェクト」に変更する事を忘れずに。
衝突タイプがプリセットで「前面」になっているので「陰面」へ変更。

Tps_19

「PDeflector」の結果を「PDie」の「オン」に入力します。

Tps_18

これで、動きは完成です。

後は、グループ「A」「B」にそれぞれオブジェクトを適用させ、「パーティクルジオメトリ」オブジェクトを追加して終了です。

Tps_21

Tps_20

今回は図のように、グループ「A」には●、グループ「B」には×のオブジェクトを与えました。

Tps_22

「パーティクルジオメトリ」オブジェクトでパーティクルを実体化させますが、除外するパーティクルグループは1つもないので、「All」を指定し「サブグループ」をOnにします。

Tps_23

「TPs_02.ZIP」

わざわざ、パーティクルをグループの移動させないで、グループ「A」とポリゴンの衝突位置下に新たなグループ「B」のエミッタを配置しても良いと思います。
グループ「A」「B」共に、ポリゴンに衝突したら消滅するように設定します。

|

« C4D 電話機の螺旋コードを作ってみる-05 | トップページ | C4D ThinkingParticles パーティクルを粉砕して散らす…「PFragment」 »