ContactParticleの使い方

Version 4.50から新しい舞台装置エフェクトとしてContactParticleが追加されました。StageSet/ContactParticleフォルダに入っています。FlowParticleと共通する部分も有りますが、コライダーというカプセル型の当たり判定が接触した時だけパーティクルが発生するため、剣戟のシーンなどで便利であると思います。コライダーについては使い方の項目で説明します。

ContactParticleってなんだ


とろぽっぷ様作 天龍改二をお借りしました

FlowParticleをベースにしてパーティクルの発生条件に工夫をしたバリエーションです。以下の条件のいずれかを満たすとパーティクルが発生します

ドリルのように接触している間中パーティクルを出しっぱなしにしたり、刀のように接触点がある程度の速度を付けて動いている時だけパーティクルを出したりという事をコライダーの速度閾値モーフで設定できます。コライダー同士の衝突の際には速度閾値の低い方に併せてパーティクルが発生します。

FlowParticleをベースにしているので静止画に出力することは出来ず、動画専用です。

使い方

ContactSpark.pmxの使い方

MMDへContactSpark.pmxをドロップした後、同名のvmdファイルをドロップするとお薦め設定が読み込まれて、コライダーの接触に伴って画面に粒子が表示される状態になります。

コライダー同士またはコライダーと床との接触位置から粒子が噴出します。勢いモーフで粒子の噴出する勢いを決定し、寿命モーフで各粒子が表示されている時間を決定します。粒子の数は16384粒が上限なので、勢いと寿命がどっちも大きい場合は古い方の粒子の寿命が強制的にカットされて新しい粒子に割り当てられますのでご注意ください。

コライダーの使い方

コライダーとは、collidersフォルダに入っている、ContactO1~O4.pmxの事です。ポリゴンで出来た物体同士の正確な当たり判定をMMEで行うのは無理ゲーなので、カプセル型の当たり判定で近似的に行うためのモデルです。ドロップしても何も表示されませんが、Contact.vmdも読み込むとカプセル型が表示されます。カプセル型の表示/非表示はテストモードモーフで切り替えることが出来ます。多少のカスタマイズができますので設定できる項目をご覧ください

実際の使い方の流れ

以上を踏まえると、以下のようなステップでsdPBRとContactParticleを使うことになると思います

  1. いつも通りsdPBRのセットアップと使いたい主役モデル(初音ミク.pmdなど)の読み込み
  2. ContackSpark.pmxとContactSpark.vmdの読み込み
  3. colliders\contactO1.pmxとcolliders\contact.vmdの読み込み
  4. contactO1.pmxの外部親に主役モデルの右ダミーボーンや、武器アクセサリのボーンなどを指定して、適宜位置を調整する
  5. 主役モデルが右手を振り回すなどのアクションに伴って床にコライダーが当たると火花が出るようになる
  6. コライダーの半径モーフで太さを調整する
  7. コライダーのテストモードモーフを0にして、コライダーのテスト表示を消す
  8. その他、必要に応じてもう一体のモデルともう一本のコライダーを追加するなどする
  9. エンジョイ!

Tips

FlowParticle同様ですが、再生時と編集時で見た感じが違うという事が起こるので再生を(できれば出力も)時々やって思った通りの見た目が本当に得られるかはチェックした方が良いです。特にフレームレートが変わるとコライダーが接触しているフレーム数やタイミングも変わるので気になる程度の見た目の違いが出る事は多々あると思ってください。

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

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

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

設定できる項目

ContactSpark.pmx

ボーン一覧

狙い 狙い有効モーフが0より大きい時、粒子に狙いボーンの方向への力が掛かります
重力 重力加速度を設定します。単位は[MMD長さ/秒^2]です
床の高さ 床有効モーフが0より大きい時、粒子がこのボーンのY値より下に落ちません。コライダーと床との当たり判定にも使われます。X,Z座標は無視されます

モーフ一覧

[左上] : 運動についての設定
速度 粒子の初速を指定します
±速度 粒子の初速のバラツキを指定します
広がり 粒子の噴出方向がバラつくようになります。1.0の時は半球内に一様に広がります
抵抗 粒子が空気抵抗を受けるようになります
乱流 粒子が乱流の影響を受けるようになります。0.0の時は上記4つのモーフで指定される放物運動をしますが、1.0の時はcurlノイズ関数によって作られる発散0の速度ベクトル場に従う運動をします。中間の値の時は両者をブレンドします。
乱流の細かさ 数値が大きいほど乱流ベクトル場の向きの変化が急峻になり、クシャクシャした動きになります
乱流の速さ モーフの値を増やすほど乱流による速度が大きくなります
狙い有効 数値を0より大きくすると狙いボーンの位置に向かう力がかかります
床有効 数値を0より大きくすると床有効ボーンのY座標より下に粒子が行かなくなります。コライダーとの当たり判定には関係しません
床の摩擦 床に着いた粒子が摩擦により止まるようになります
[右上] : 粒子の生成についての設定
長さ 値を大きくすると粒子が速度ベクトルに従って伸びます(FlowSmoke,FlowSpark専用)
±長さ 粒子の長さがバラつくようになります(FlowSmoke,FlowSpark専用)
サイズ 値を大きくすると粒子の表示サイズが大きくなります
±サイズ 粒子の表示サイズがバラつくようになります
少なく 粒子の数を抑えます。0の時最大16384粒が同時に表示され、1-モーフ値に比例して最大表示数が減ります
勢い 粒子の噴出する勢いを調整します。1.0以上の値を指定しても問題ありません。
寿命 粒子の寿命を調整します。単位は[秒]です。1.0以上の値を指定しても問題ありません。
[左下] : 粒子の色についての設定
透明度 高いほど粒子のα値が下がります
H/S/V 粒子の色相/彩度/明度を指定します
明るく 粒子の明度をブーストします
キラキラ度 粒子が明滅するようになります
[右下] : その他
リセット 値を0.5以上にすると全ての粒子の位置・速度が初期化されます

ContactO*.pmx

ボーン一覧

センター 以下のボーンの親ボーンになります。このボーンを武器モデルや手ダミーのボーンなどに割り当てると良いでしょう
あたま/しっぽ カプセル型の端点を示します

モーフ一覧

半径 カプセルの半径を示します。単位は10MMD長さで、モーフの値が0.1の時半径1MMD長さ(8cm)、1.0の時半径10MMD長さ(80cm)となります
対床衝突無効 値を0.5以上にするとContactSpark.pmxの床の高さモーフで指定された床とコライダーとの衝突を無効にします
対物衝突無効 値を0.5以上にすると他のコライダーとの衝突を無効にします。衝突したコライダー同士のどちらかが対物衝突無効状態になっていれば、衝突は無効という扱いになります
速度閾値 このモーフの値を上げると接触しているだけの状態では粒子が発生しなくなり、接触した状態でなおかつ一定以上の速度が無いと粒子が発生しなくなります。例えばドリルなどのように接触している間中、火花が出て欲しい場合はモーフの値を0のままにしてください。床との摩擦で剣の先から火花が出る状況のように動いている間だけ火花が出て欲しい時は状況に応じて上げてください。
テストモード 当たり判定の有る場所(カプセル型)をマゼンタ色で表示します