« C4D ThinkingParticles 壁の表層をパーティクルで粉砕する。 | トップページ | C4D レンダービューのカメラを切り替えると…背景オブジェクトも切り替えてみる。 »

C4D ThinkingParticlesでC4D標準パーティクルのようにオブジェクトをランダムに適用する

C4D ThinkingParticlesで生成されたパーティクルにオブジェクトを適用するには、「PShape」ノードを使う事だろう…

パーティクルグループ毎にオブジェクトを適用するならば、「PPass」ノードで指定したグループに「PShape」ノードを使い…
TPジェネレータ毎ならば、TPジェネレータ直後に「PShape」ノードを連結すると思います。

では、C4D ThinkingParticlesでC4D標準パーティクルシステムのように、ランダムにオブジェクトを適用するには、どのようにXPressoを組むのでしょうか…

一般的なノードだけで組み立てる事を前提に考えると…
「条件分岐」ノードを使い、入力に複数のオブジェクトを連結し、出力と「PShape」ノードを連結する事を簡単に想像できると思います。

では、C4D ThinkingParticles でパーティクルの形状をランダムにオブジェクトを適用するXPressoを組んで見ます。

シーンの構成です。
今回は、パーティクル適用オブジェクトの「円柱」「円錐」「球体」をランダムに適用します。

Tprandomobject_02

パーティクルグループは「A」を追加しました。

Tprandomobject_01

では、XPressoです。

まずは「PStorm」とヌルオブジェクトの組み合わせの単純なエミッタ部です。
生成パーティクルはグループ「A」、形状は「円柱」です。

Tprandomobject_04

「条件分岐」を使って3つのオブジェクトを切り替え「PShape」に送ります。
このノードのスイッチに入力する値、整数なら0,1,2、実数なら0.0≦n<3.0を「ランダム」ノードを使って取得します。

Tprandomobject_05_2

今回の「ランダム」ノードのランダムシードは「PStorm」の生成番号を利用しました。
これで、実数0.0≦n<3.0が取得できます。

Tprandomobject_09

絶対値を使います。

では、「条件分岐」ノードです。

Tprandomobject_06

「条件分岐」のデータタイプは「オブジェクト」です。

Tprandomobject_07

さて、これで再生すると問題なくランダムにオブジェクトを適用します。

Tprandomobject_08

「TPRandomObject_01.ZIP」

この様にならなかったユーザも、中にはいると思います。

C4D R11.5Demoだと、この様になるのを確認しました。

では、C4D R11.0Demo以前だと…

Tprandomobject_10
C4D R9.5の結果です…R11.0Demoでも同じ結果でした…
自分のマシーンだけが、おかしいのだろうか…?

では、こんな場合は…

「PShape」ノードを1づつオブジェクトに対応させます。
入力「オン」で制御します。
「条件分岐」ノードの代わりの回路を組みます。

Tprandomobject_11

構成は、そんなに変わりはありません。
ランダム部で0,1,2を出力します。
そのランダム整数を比較し、対応する「PShape」をOnにします。

この結果は…

Tprandomobject_12
画面はR9.5です。

「TPRandomObject_02.ZIP」

今回の様な場合のベストな組み方は、こんな具合に個々のパーティクルに割り当てられたランダムシード値を「PGetData」ノードを使って取得し、それを「ランダム」ノードに適用する。

Tprandomobject_13

「TPRandomObject_04.ZIP」

これもまた、R11.5ならば正常に動作するだろう…
ただし、ランダムなオブジェクトを割り当てる方法は、これがベストと言う訳ではありません。

「TPRandomObject_05.ZIP」

アニメーションをループ再生していると…
最終フレームが終わり0フレームに戻って少したった所で停止させると、不穏な現象が…

|

« C4D ThinkingParticles 壁の表層をパーティクルで粉砕する。 | トップページ | C4D レンダービューのカメラを切り替えると…背景オブジェクトも切り替えてみる。 »