-Blenderでパーティクルを使う手順と注意点-

3. パーティクルの表示 (ハローとオブジェクト)



表示(Render)設定にはいくつかのモードが用意されています。基本的なモードを少し詳しく見てみます。

■ ハロー (Halo)

最初に使いましたが、もやっとした光の粒を表示するモードです。

きらきらと光の粒をばらまくといった使い方の他に、
すぐ思いつく応用としては 黄、赤、黒と粒子ごとに時間進化させながら
グラデーションさせて燃え上がる炎や爆発の表現があります。

ところが残念なことに、そうした表現は現状では恐ろしくトリッキーな手法でしか実現ができないようです。
時間(age)による進化無しの場合を考えてみます。
粒子ごとの色変化が実現できないので、炎と煙について2種類のパーティクルを設定して、寿命などを調整します(炎は速く消える等)
パーティクルシステムごとに別々にマテリアルも用意して、違う色などを使うことにします。

粒子の生まれてからの時間で変化はさせられないのですが、
全体の色や透明度、サイズはキーを打つことで時間変化させることができます。

爆発の場合は、粒子全体の調整をすることでもだいぶ表現力が上がるでしょう。
粒子ごとに生まれてからの時間(age)がたつほど薄くなる、といった表現ができないので、
残念ながら、焚火の煙のように定常なものは難しいことになるのですが。
パーティクル2種類で、まぁまぁそれらしい爆炎を作ることができました。
色やタイミングなどを詰めれば、もう少し良いものが作れそうです。

ここでは、重力の効きを-0.1ほどにして、turbulence(乱流)を少し加えています。

実はCyclesレンダーには、粒子ごとの時間で進化するパラメータをより簡単に実現する方法が実装されましたが、
2.71時点で古典的なBlenderレンダーでは対応していないようです。もうしばらく待機というところでしょうか。

■ オブジェクト (Object)

粒子の代わりに、他のオブジェクトのコピーを表示することができます。
オブジェクトを作成します。今回床の上を移動させようと考えているので、めり込まないようにメッシュの位置を調整してあります。
RenderのモードをObjectにして、コピーするオブジェクトを設定します。
粒子の代わりにオブジェクトが置かれます。

コピーされた方のオブジェクトが邪魔であれば、別レイヤーに退避することで隠すことができます。
(コピーは粒子のいる側のレイヤーに残ります)
向きのないHaloの時は良かったのですが、Object表示の時は粒子が回転をしてほしいです。

回転の計算をするために、Rotation にチェックを入れて設定をします。

粒子の速度に応じて回転させる(破片が飛び散るといった場合など)、といった設定もできますが、
今回、床との相互作用として回転をしてほしいので、Dynamicにチェックを入れて、Angular VelocityをNoneに設定します。
(Angular Velocityを他の設定にすると、転がりではない回転になってしまいます。)
Render 設定側にも Rotation のチェックを入れて、回転を反映させるようにします。
ところで、摩擦が0だと転がらずに滑って行ってしまうので、床の Collision 設定も、摩擦(frictino)を 0 以外にしないといけません。

これで転がりが反映されます。

ところがよく見ると、粒子の本体はサイズ0として計算されているので、ボールが床に半分めり込んでしまっています。
(粒子のサイズを設定してあってもこうなります)
衝突判定などに、粒子サイズを反映させるには、Physics 設定の 「Size Deflect」にチェックを入れます。
これで床の上を転がりました。
当然ですが、オブジェクトの表示サイズと、粒子のサイズがちょうどあっているようにする必要があります。
スザンヌも(最初に床の上を滑らすためにずらしていた)原点の位置を戻してやって、
球の代わりに置けば床の上を転がります。

ただし、パーティクルシステムの粒子はあくまで粒子であって、お互いにぶつかったりオブジェクトの凸凹を考慮したりはしません。
そうしたより本格的な運動をさせるときには剛体シミュレーションを使うしかないでしょう。
飛翔体の場合などは、飛んでいく向きにそろえて表示をしたい場合があるでしょう。
その場合は、Angular Velocity を Velocity に設定して Dynamic をチェックします。
この時は、オブジェクトのx軸方向が前になります。

inserted by FC2 system