【MMDTips】M4Layerにパーティクルを適用する【Croquis改・エッジ透け対策】

M4Layerはシェーダーを重ねるためのエフェクトだと思ってませんか?



エフェクトはだいたいシェーダー、パーティクル、ポストエフェクトの3種類があります。※1
M4Layerは3種類すべてを適用可能なレイヤーエフェクトなのです。

でもM4Layer上でパーティクルを適用するのはどういう場合?
というわけで今回はCroquisのエッジ対策の話です。

適当にステージとモデルを読み込ます。
さらにCroquis改(X=1, Y=1, Z=1)とParticleEx_v2を読み込みます。



いわゆる連凧が出てるのでCroquis改のタブでパーティクルを非表示にします。


こうなります。

パーティクルの上にCroquis改のエッジが描画されてるのが気になりませんか?
どれだけパーティクルを強くしてもCroquis改のエッジが隠れることはありません。
Croquis改はポストエフェクトだし描画順の関係でどうしようもないのです。

そこでM4Layerの登場です。

M4Layerを読み込んで合成モードを加算にします。


M4LayerのLayerRTタブを開きます。
モデルやステージの加算はいらないのでチェックを外して非表示にします。

さらにパーティクルに同名の~.fxファイルを適用します。(ここが重要)


そうするとCroquis改の上からパーティクルが加算合成されます。
裾のあたりのエッジがパーティクルで消えてますよね。
Croquis改の後に読み込んだM4Layerの描画順でパーティクルが加算合成されているのです。

少しパーティクルが明るすぎますね。

実はM4Layer上でパーティクルを描画しているのでMainタブで描画する必要はありません。
Mainタブを開いてパーティクルを非表示にします。



これでエッジ問題は解決なのですが、カメラを動かすと別の問題が起きます。
パーティクルとモデル/ステージの前後関係が無視されてしまうのです。

(横から見るとこうなる、これは問題なし)


(後ろに回り込むとモデルの前にあるパーティクルが透けてしまう)

ここで必要になるのがマスク操作です。
M4LayerにはVisibleMask.fxとかInvisibleMask.fxとかが入ってますよね。

LayerRTタブでモデルやステージにInvisibleMask.fxを適用します。
そうするとパーティクルの前にモデルやステージがある場合は隠れるようになります。


ちなみにVisibleMask.fxは乗算系統の合成の場合に使います。

以上、M4Layerにパーティクルを適用する話でしたがいかがでしょうか。

このような操作をどこかで見たことがあると思う人もいるかもしれません。
AutoLuminousのEmitterRTタブで似たような操作ができるんですね。




(AutoLuminousは一応、自動でマスク操作されます。さらに強いマスクもありますが)

ちなみにルミナスさんなのでパーティクルはキラキラ発光してくれます。
M4Layerで加算しなくてもよくなry ・・・まあ微調整したい場合もあるし。

加算系エフェクトは焼き込みやスクリーンで合成すると白飛びしにくくなります。
私がM4Layerを使うのはだいたいその辺が理由かなと。




~~~~~~~~~~~~~~
めんどくさい人向けの言い訳

※1 あまり見かけないけどプリエフェクトというのもあります。
   ちなみにレイヤーエフェクトは仕組み的にはポストエフェクトです。
   パーティクルはオブジェクトタイプのエフェクトの1種類です。
   パーティクルじゃないオブジェクトタイプもあるけどめんどくさいのでパーティクルry