« C4D標準パーティクルの番号を指定して位置を取得するXPresso | トップページ | ここを見た?3D車モデル »

前回の「番号を指定してパーティクルの座標を取得する」ノードを使ってC4D標準パーティクルで遊んでみる

C4D標準パーティクルシステムは、パーティクルにパーティクルを適用できません。
このノードでパーティクルにパーティクルを適用してみよう。強引ではあるが…
もちろん、ThinkingParticleの様にはC4D標準のパーティクルは最適化されていないので、パーティクルの数が極端に増えると危険な状態になります。数は控えめに…

さて、パーティクルにパーティクルを適用する…
単純に想像すると、花火の大きな星が弾けて、その大きな星から更に小さな星を散らす。
こんな感じでね…
大きな星の数は少なめにします。15個ぐらいで…
大きな星には、前回の「重力」を適用して落下させます。
小さな星は、逆に上昇させて見ました。

Particlepos_06

今回のオブジェクトマネージャ内の構成は…

Particlepos_07

上の「エミッタ」は、大きい星で「パーティクルグループ」内のエミッタは小さい星です。
大きい星のエミッタの出現率を変更すると「パーティクルグループ」内のエミッタの数が自動で変化します。
「レンダリングしない」グループの「小星」は「パーティクルグループ」用のエミッタのマスター。
「押し出しNURBS」は小星パーティクルインスタンスのマスターです。

では、「重力」のXPressoです。

Particlepos_08

上の「重力」ノードは見たままです。こっちは大きい星の方です。
下の「重力」ノードは小星用です。
重力方向が下を向いているので、重力加速度にマイナスの値を与えて上向きにしました。
新規ノード/XPresso/くり返し/「階層」ノードは、「パーティクルグループ」を指定して、その子オブジェクトのエミッタを順番に出力しています。それに重力を適用しています。

次は大きい星の数を取得して、「パーティクルグループ」内のエミッタの数を調整し、大きい星の位置を小星用のエミッタの位置に適用させます。

Particlepos_09

上の「グループ内のオブジェクトの数を指定(オブジェクト版)」は、4回前に作成したインスタンス版だったのを、指定したオブジェクト自体を複製して追加するように変更したものです。
大きい星の数を取得して、グループ内のエミッタの数を調整します。
下のほうは、エミッタの位置を変更します。
大きい星のパーティクルが出現していないときに、小星のパーティクルの可視性を「パーティクルの位置の取得」ノードのvalidityを使って見えなくしています。
グループ内のパーティクルオブジェクトの取得は、「くり返し」ノードを使って、「グループ内のオブジェクトを取得」ノードに上からの順番号を渡してオブジェクトを取得しています。

小星のパーティクルエミッタの設定は、「パーティクルグループ」のユーザデータと「階層」ノードを使って一括管理しています。

Particlepos_11Particlepos_10

今回の花火のファイル9.5は、「ParticlePos_03.ZIP」です。
フリーズには、十分気を付けてください。

|

« C4D標準パーティクルの番号を指定して位置を取得するXPresso | トップページ | ここを見た?3D車モデル »