MMDのエフェクトMMEffectについてもっと
よく知る為にサンプルエフェクトのプログラ
ムコード編集でグレースケールシェーダーを
作ってみました。
サンプルエフェクトはセルフ影機能に対応
してないので普段使い出来るようにエフェ
クトベースであるfull.fxファイルを使用して
グレースケールシェーダーを作成します。
(過去記事)
~MMD エフェクトファイルのカンタンな書き換えで
グレースケール化してみる~(2015/05/28)
(シェーダコードの編集方法解説ページ)
「MikuMikuEffect」のエフェクトファイルの内部構成とシェーダコードの編集方法
MikuMikuEffectで学ぶHLSL入門(3)
舞力介入P [著]
http://codezine.jp/article/detail/6122?p=4
→MikuMikuEffect制作者様の解説文が載ってます。
(full.fxファイル紹介ページ)
VPVP wiki MME用エフェクト
シェーダー(陰)
http://www6.atwiki.jp/vpvpwiki/pages/272.html
→エフェクトfull.fxファイルはMMD標準とほぼ同じ
シェーダーでエフェクト作成のベースとしてよく
使われています。
(MMD画面)
上の画像のモデルにグレースケールシェーダーを
適用してみます。
上の画像は昨日の記事~MMEffect モデルを
肌質感良く高画質にする為の方法~で使った画像
ですが、使用エフェクトの数を減らす事が出来ました。
それほど必要ではないエフェクトを削除してXファイル
エフェクト25のうち4つ外して21にしてます。
(外したエフェクトはM4Layer、DropShadow、
MipGaussian、HgDiffusionです。)
MMDでモデルにグレースケールシェーダーを適用
するとこのようになります。
(グレースケールシェーダー適用)
MMD画面右上のMMEffectメニューエフェクトファイル
割り当てでモデルを右クリックメニューでサブセット展開
してからエフェクト解除ExcludeMapタブにグレースケー
ルシェーダーfullgrayscale.fxをジャケットや髪の毛など
材質毎に読み込みました。
グレースケールシェーダーはモデル色をグレーに塗り
つぶすのではなくモデル色をRGB平均化して表示します。
シェーダーのプログラムコードは以下のようになります。
(full.fxファイル改変版)
full.fxファイルを開いて//スペキュラ適用となっている
ところに411行目と412行目にグレースケール化記述を
追加で書き込むだけです。
(full.fxをそのまま残しておく為に改変したファイルは
fullgrayscale.fxと名前を付けて保存してます。)
float Gray = (Color.r + Color.g + Color.b ) / 3; //この行を追加
Color.rgb = float3(Gray, Gray, Gray); //同上
コード記述部分を見るとRGB色を3で割って平均化した
色を適用する内容になってる事が分かります。
このコード記述の3で割る指定を少し変えてみると
どうなるか試してみます。
(2.5で割った場合)
3つの色を3で割って均等化するところを2.5で割ったら
表示色が薄くなりました。
ちなみに2.5を3より大きな数値にするとより暗い色に
なります。
RGBそれぞれの数値が同じである限りはグレー色
なので割る数値でグレーの濃淡を調整可能という事
ですね。
MMDで実際に使用する場合はもう少し薄くして
色調補正的に使うのでシェーダー側ではなくExcludeの
アクセサリ操作で調整します。
(仕上げの調整)
髪の毛とジャケットに薄めにグレーを足したような
感じにしました。
full.fxファイルを改変して作ったグレースケール
シェーダーであればセルフ影表示ありでも使えます。
次回は光学迷彩エフェクトを作ってみる予定です。
〇 ポリめりminiコーナー 〇
記事の冒頭にも書きましたが、昨日の記事で使用した
MMDファイルのエフェクトを変更して幾つか画像を
作りました。
(なにか足りないカンジ)
エフェクトファイル割り当てでヘッドホンを非表示に
して消しました。
首元がスッキリして見えますね。