閉じる
閉じる
以前配布した水中フェクトですが、Twitterなどで水中エフェクト適用後に、モデルなどに適用したシェーダ系エフェクトの効果がキャンセルされてしまってうまくいかないというのを見かけました。
先に言っておきますとこれはプログラムのバグではなく仕様です。
なので今回の記事では、水中エフェクトとシェーダエフェクトを併用する方法を紹介したいと思います。
手順:
1.MMD/MMMにPostUnderwaterを読み込む
効果をわかりやすくするために、はじめになにか適当なステージとモデルを読み込んでください。
今回の記事では静画で使用したヴワル図書館とIAさんを読み込んでいます。
MMDではPostUnderwater.xをMMMはPostUnderwater.fxを読み込みます。
2.M4Layerエフェクトを読み込む
上記の静画からミーフォ茜さんが作成されたM4Layerを入手し、「M4Layer.fx」をメモ帳などで開いて「LAYER_MODE」の項目を「0」から「3」の乗算に変更します。
(静画内の説明にもありますが、M4Layerはエフェクトの効果をレイヤーのように合成できるエフェクトです。ポストエフェクトであるPostUnderwaterとモデルに適用するシェーダエフェクトをこれで合成させます)
次にMMDでは「M4Layer.x」をMMMでは「M4Layer.fx」を読み込みます。
すると
のような色合いになると思います。
3.MMEでエフェクトファイル割り当てを行う(MMMではオフスクリーン割り当て)
MMD版:
M4Layerで乗算効果を適用したくないステージなどに「LayerRT」の項目で、M4Layerに同封の「InvisibleMask.fx」を適用し、効果をマスクします。(上記ではヴワル図書館に当ててます)
同様に「LayerRT」の項目でIAさんにお好みのシェーダを割り当てます。
「Main」ではなく「LayerRT」にエフェクトを当てることでレイヤーとして効果を合成できるようになります。
今回わかりやすい例として下っ腹Pさん作成の「G_SkyShader_05_S3_SkinON.fx」を当ててみました。
MMM版:
MMMでも同様です。
エフェクトプロパティでM4Layerエフェクトを選択し、上図のようにオフスクリーン割り当てで設定します。
あらかじめ「InvisibleMask.fx」と適当なシェーダエフェクトを読み込んでおき「LayerRT」でマスクしたいものに「InvisibleMask.fx」を適用し、モデルには読み込んだシェーダを当ててください。
これでモデルにシェーダの効果が適用されます。
併用方法の説明は以上です。
M4Layerは効果をレイヤーとして適用できるのでかなり便利です。
今回は乗算設定にしていますが、同封の「M4Layer.txt」を読みつつぜひ他の効果も試してみてください。
最後に、
下っ腹PさんのG_SkyShaderとT_ToonShaderのMMM版を公開してますので、こちらもぜひ使ってみてください。
OneDrive
おまけ、
水中エフェクト配布静画のコメントに「背景こんな感じにならない」とあったのでエフェクト使用例なんかを
使用エフェクトは
・PostUnderwater:上は設定デフォルトのまま。ステージによっては「FogDistance」の値を変更
・o_SelfOverlay_Soft:各パラメータを「1.0」から「2.0」に変更
・M4Layer:設定は上記参照
・G_SkyShader_v1.01_MMM:MainかSubのLight値をマイナスに設定
(G_SkyShader、MMD版は下っ腹Pさんの配布動画から入手してください)
で水中にいるようなそれっぽい雰囲気になると思います。
広告