FlowParticleの使い方

Version 3.80から新しい舞台装置エフェクトとしてFlowParticleが追加されました。StageSet/FlowParticleフォルダに入っています。使い方は従来のシンプルパーティクルエフェクトと似ていますが違う点も多々あります。

Version 3.90からはFlowPetalも増えました。こちらはsdPBRによるリアルな照明を付けられます。

FlowParticleってなんだ


とろぽっぷ様作 天龍改二、Plover様作 ノリノリダンスをお借りしました

Curlノイズの考え方を応用して作られたパーティクルシステムです。既にCaeru.E型氏らが良いエフェクトを公開していらっしゃるので今更感満載ですが、流体シミュレータを作った事でベクトル解析学の知識が増えたので、実装してみる事にしました。CurlノイズはFlowノイズとも呼ばれ、要するに粒子が良い感じに流れるように動いてくれるための速度ベクトル場を作る方法です。これを用いる事で、流暢で複雑な動きをするパーティクルシステムを作る事が出来ました。

パリピビームやシンプルクラッカーなど従来の舞台装置エフェクトとの違い

従来の舞台装置エフェクトとは異なり、以下のような特徴があります

欠点の方が多い気もしますが、動画にしたときの見栄えを優先して作りました。

今までの舞台装置エフェクトとして同梱されている、シンプルパーティクルシリーズと同様、pmxで実装されているので描画順に注意が必要です。

使い方

MMDへFlowSpark.pmxまたはFlowSmoke.pmxをドロップした後、同名のvmdファイルをドロップするとお薦め設定が読み込まれて画面に粒子が表示されるようになります。

センターボーンの位置から粒子が噴出します。勢いモーフで噴出する量と粒子が空間内に留まっている時間を加減できます。最大表示数は決まっているので噴出する勢いが強いほど同じ粒子は空間内に短い時間しか留まれない事になります。

FlowSparkとFlowSmokeは粒子の見た目のバリエーションであり、運動についてはほぼ同じになっています。

当たり判定を付ける

Obstaclesフォルダに粒子が跳ね返るカプセル型の当たり判定を付けるためのモデル(FlowO1~FlowO4.pmx)があります。あたま・しっぽボーンを結ぶ線分と半径モーフで作られるカプセル型の範囲に粒子が入ると跳ね返ります。跳ね返り具合は弾性係数モーフで加減できます。

テストモードモーフを上げるとカプセル型が画面に表示されるようになります

床に対する当たり判定は床有効モーフを0より大きくした状態にすると、床の高さボーンのY座標より下に粒子が行かなくなるので、それを用いて簡単に付ける事が出来ます。床の摩擦モーフを上げると床面との摩擦によって粒子が止まるようになります。

Tips

再生時と編集時で見た感じが違うという事が起こるので再生を(できれば出力も)時々やって思った通りの見た目が本当に得られるかはチェックした方が良いです。

pmxモデルの表示設定でパーティクルの表示・非表示が設定できますが、表示にチェックを入た直後は変な位置に粒子が置かれる事があるので、透明度モーフを上げた状態から数フレーム掛けて透明度を下げる事でパーティクルをフェードインさせるのが無難です。

従来の舞台装置エフェクトのようにZバッファに値を書き込まないので後から表示されるモデルによって上書きされますから、他のモデルよりなるべく後に表示されるように調節してください。このためアクセサリとして作られている背景モデルなどとは相性が悪いかもしれません。エフェクト起動用のモデルを.pmxではなく.xとして実装すればいいのですが、コントローラを幾つも作りたくなくてですね…

_map_FlowSpark(Smoke)_WorkingFloor.fxをsdPRefタブでFlowSpark(Smoke).pmxに割り当てるとsdPlanarReflectionで作られた鏡の中に映しこむことが出来ます

設定できる項目

ボーン一覧

センター 粒子の噴出する位置を設定します
狙い 狙い有効モーフが0より大きい時、粒子に狙いボーンの方向への力が掛かります
重力 重力加速度を設定します。単位は[MMD長さ/秒^2]です
床の高さ 床有効モーフが0より大きい時、粒子がこのボーンのY値より下に落ちません。X,Z座標は無視されます
つむじ つむじ風モーフが0より大きい時、このボーンの位置を中心にY軸に反時計周りに風が起こります
つむじ半径 つむじ風モーフが0より大きい時、このボーンの位置ベクトルの長さが粒子の旋回するおおよその半径になります

モーフ一覧

[左上] : 運動についての設定
速度 粒子の初速を指定します。向きはセンターボーンのZ-(青矢印)方向です
±速度 粒子の速度のバラツキを指定します
広がり 粒子の噴出方向がバラつくようになります。0.5の時は半球内に一様に広がり、1.0の時は球全体に一様に広がります
抵抗 粒子が空気抵抗を受けるようになります
乱流 粒子が乱流の影響を受けるようになります。0.0の時は上記4つのモーフで指定される放物運動をしますが、1.0の時はcurlノイズ関数によって作られる発散0の速度ベクトル場に従う運動をします。中間の値の時は両者をブレンドします。
乱流の細かさ 数値が大きいほど乱流ベクトル場の向きの変化が急峻になり、クシャクシャした動きになります
乱流の速さ モーフの値を増やすほど乱流による速度が大きくなります(Ver.3.90より追加)
狙い有効 数値を0より大きくすると狙いボーンの位置に向かう力がかかります
床有効 数値を0より大きくすると床有効ボーンのY座標より下に粒子が行かなくなります
床の摩擦 床に着いた粒子が摩擦により止まるようになります
つむじ風 粒子がつむじボーンを中心に旋回するようになります。おおよその旋回半径はつむじ半径ボーンの位置ベクトルの長さになります
[右上] : 粒子の生成についての設定
長さ 値を大きくすると粒子が速度ベクトルに従って伸びます(FlowSmoke,FlowSpark専用)
±長さ 粒子の長さがバラつくようになります(FlowSmoke,FlowSpark専用)
サイズ 値を大きくすると粒子の表示サイズが大きくなります
±サイズ 粒子の表示サイズがバラつくようになります
少なく 粒子の数を抑えます。0の時最大16384粒が同時に表示され、1-モーフ値に比例して最大表示数が減ります。
詳しい理由は不明ですが、このモーフが0以外の場合、うまく出力が行えなくなる環境があるようです。もし、このモーフを上げた状態で編集時には正しく表示されるのに出力されないという場合は、このモーフの数値を0.5、0.75、0.875など、1-0.5^nの値にしてみてください
勢い 粒子の噴出する勢いを調整します。勢いと個々の粒子の寿命は反比例します。 モーフの値をmとすると、1/m秒間で最大粒子数相当の粒子が生成・消滅するようになります
動き連動 センターボーンの速度に合わせて勢い・初速が変化するようになります。モーフの値が1.0の時はセンターボーンが停止した状態では粒子が新たに発生しません。
遠心力+/- 動き連動によるパーティクルの加速度を加減します。+モーフの値が1.0の時100倍、0.5の時10倍になります。-モーフが1.0の時1/100倍、0.5の時1/10倍になります。
[左下] : 粒子の色についての設定
metallic 粒子が金属っぽくなります(FlowPetal専用)
roughness 粒子のツヤが無くなります(FlowPetal専用)
透明度 高いほど粒子のα値が下がります(FlowSmoke,FlowSpark専用)
コシ 高いほど粒子の色の濃淡の変化が付きます(FlowSmoke,FlowPetal専用)
H/S/V 粒子の色相/彩度/明度を指定します。H/S/Vが全て0の時、MMDの照明設定で指定された平行光源の明るさになります
明るく 粒子の明度をブーストします
キラキラ度 粒子が明滅するようになります
環境H/S/V 粒子の暗い部分の色を指定します(FlowSmoke,FlowPetal専用)
[右下] : その他
リセット 値を0.5以上にすると全ての粒子の位置・速度が初期化されます