« C4D 例えば、こんな物を…テストShader | トップページ | C4D エクスプレッションの処理順位… X優先順位 »

C4D TP「PVolumePosition」ノードの位置の分布…の続き

artist side C4Dコミュ:momoさんの返答に…

>適当なプリミティブを爆発させてラメ状態にしたものと本体とをブーリアンするのも処理が早かったと記憶しております。

上記以上にお手軽で、速い処理は思いつかないので…

前回、「TP「PVolumePosition」ノードの位置の分布」で、「ラメ入り」の件は終了だったのでしたが…

静止画限定でTP「PVolumePosition」ノード分布の問題を緩和する方法。

方法としては、「PVolumePosition」でオブジェクトのボリューム内に配置した後、パーティクルを散らして位置を均等の様になるようにします。

ボリューム内に均等になるような計算方法を知らなくでも大丈夫です。
C.O.F.F.F.E.E.も必要ありません。

今回のテストは、前回のオブジェクトを流用していますが、選択範囲のポリゴンを細分化して2倍にしました。

Pvolumeposition_09

曲面の分割数を多くしても隙間や重なりが発生します。
外側(黄色い線)に一回り大きいポリゴンオブジェクトを配置しています。

Pvolumeposition_10

シーンの構成は、外側のオブジェクトが増えただけです。

TPパーティクルの生成部分のXPressoです。

Pvolumeposition_11

今回は、生成時のみに「PVlolumePosition」ノードを適用しています。
ですから、ボリューム位置の適用は、最初の0フレームだけです。

TPパーティクルを散らす部分のXPressoです。
TPパーティクル同士を反発させて均等分布の様になるようにしています。

Pvolumeposition_12

TPパーティクルの衝突時に使う「PPassAB」ノードと「PRepules&Bounce」ノードです。

「PPassAB」ノードは、TPパーティクル同士の距離に対しての条件を設定し、条件を満たしたTPパーティクルを出力します。

Pvolumeposition_13

半径10以内の同じグループのTPパーティクルを出力します。

「PRepules&Bounce」ノードは与えられた2つのTPパーティクルの反発と反射を与えます。

Pvolumeposition_14

10%の反発を与えました。

「PDeflector」ノードで反発したTPパーティクルが外に飛び散らないように、外側のオブジェクトに反射させます。

Pvolumeposition_15

TPパーティクルは動きを与えられると、動き続けるように設計されています。
動きを抑制する為に「PFriction」ノードで摩擦を与えます。

Pvolumeposition_16

摩擦は、必要に応じて値を決定します。

これで、準備は整いました。
アニメーションを再生しますが、その前に…
プリセットの90Fでは足りないかも知れませんので、最終フレームを300にします。
「PBorn」ノートの有効期間を300Fに変更します。

0Fでは…

Pvolumeposition_09

アニメーションを再生させ、300F付近では…

Pvolumeposition_17

目立った隙間や重なりが無くなりました。
静止画の場合は、この付近をレンダリングすると良いわけです。
若干問題がありそうですが、これも対応の1つです。

「testpvolpos2.ZIP」

さてここで、「PFriction」ノードで摩擦を掛ける必要が無いのでは…と思ったユーザもいると思います。

Pvolumeposition_18

抵抗が無い分、速く広がります。
オブジェクトの形によっては、ダマになったりムラができたりしますので、様子をみて判断してください。

この方法は、あくまでも静止画のみ有効です。

ThinkingParticlesなので、もちろん大量にTPパーティクルを使うとメモリを消費します。

今回の様な場合、メモリの消費を抑える方法は「1TPパーティクル:複数のポリゴン」と考えます。
例えば400のポリゴンの塊を1TPパーティクルにすれば、TPパーティクル自体の数を減らす事ができ、TPで消費されるメモリの節約にはなると思います。
それに伴い別の処理が必要になるかもしれません…

Pvolumeposition_19
▲400ポリゴンの塊
1ポリゴンの大きさの調整は「法線に沿ってスケール」を使うと、ポリゴンの位置を変えずに小さくも大きくもできます。

Pvolumeposition_20

1000パーティクル
400ポリゴンなので、合計400,000ポリゴンとなります。
今回の反発させて均等化する処理をしていないので、ムラがありますが…

「thinkingparticles_ame2.ZIP」

今回のボリューム内のTPの拡散方法と「C4D artist sideC4Dコミュでの「透明樹脂で固めたラメを表現する」回答分」の後半のC.O.F.F.E.E.での方法を合わせる事も可能だと思います。

Lames_27

Lames_29

しかし、パーティクル数が多い状態で、「PPassAB」ノードと「PRepules&Bounce」ノードを使うと処理に予想以上の時間が掛かり、実用的ではないかもしれません。

残念ながらトライの結果、実用的ではない事がわかりました。

大量のTPをXPresso処理中にGUIが受け付けなくなった時…
あきらめてC4Dを強制終了させる前に「Esc」キーを押してみてください。復帰する場合があります。

もしかするとPy4Dを使うと、ユーザが思ったようにTPをコントロールできるかも…
すみません、Py4Dは完全に放置状態です…

|

« C4D 例えば、こんな物を…テストShader | トップページ | C4D エクスプレッションの処理順位… X優先順位 »