msToonCoordinator v1.1
MME用トゥーン系ポストエフェクトmsToonCoordinatorの配布および解説です。
中文版的译文在这里。感謝译者文音-あやね-!
https://www.bilibili.com/read/cv11034495
紹介動画
配布データ
更新履歴:
v1.1
■default.vmdをD&Dで読み込むとMMDが落ちるのを修正しました。v1.1でも落ちる場合はMMDの[ファイル]メニューから[モーションデータ読込]を選んでvmdを読み込んでみてください。
■Edgeのパラメータにあった「Gチャンネル:エッジ色の出にくさ」の説明を削除しました。実際にはGチャンネルは使っていません。ごめん。モデルの一部だけエッジを出したくないときは、MMD標準のエッジならPmxEditorの頂点編集でエッジ倍率を変更したり、CroquisならEdgeStrengthでテクスチャ指定したりしてください。
謝辞
配布データはそぼろさんの基礎エフェクトセット Ver.3.0をもとに作成しました。また、他のエフェクトとの併用を前提としたエフェクトです。そぼろさんをはじめ、各エフェクト配布者の方々に感謝を申し上げます。
msToonCoordinator(以下msTC)とは
他のエフェクトの結果をもとにトゥーン化するエフェクトです。
msTC自体は「色を変える」機能だけを持っています。そしてどこの色を変えるべきかを他のエフェクトに教えてもらいます。たとえば影の場所をExcellentShadowに、エッジの場所をCroquisに。
msTCはいろんなエフェクトに教えてもらえるように作ってあります。たとえば影の場所ならExcellentShadow以外にもSvSSAOやImSSAOも使えます。ライト系のPostPointLightも使えますし、なんとテクスチャ画像で直接「ここは影ができやすいよ」と教えることもできちゃいます。何よりこれら全てを同時に使って影を操れるのが特徴です。サブライトやエッジも同様です。
このようにmsTCはMMDと各エフェクトのあいだに立つことで、美しくコントロールされたトゥーン映像を提供します。
ただし、ある程度MMEまわりの知識を必要とします。使うには中級者向け、使いこなすには各エフェクトを自分で改変できる上級者向けのエフェクトになります。
分かる人向け:
msTCは各レンダーターゲットのRGB値をマスクとして使い、しきい値以上・以下で陰影やハイライト、エッジなどの色を上書きするエフェクトです。CGアニメやゲームでよく使われるあの手法です。
msTCの流れ
msTCは最低限Shade.xとEdge.x、ExcellentShadow.x、そしてコントローラー(msToonCoordinatorController.pmx)を読み込んで使います。
まず、いろんなエフェクトを使ってmsTC_ShadeRTタブに影とハイライトを、msTC_SublightRTタブにサブライト(追加ライトみたいな扱いです)を、msTC_Edge_RTタブにエッジを描画します。それをもとにShade.xとEdge.xが影色・ハイライト色・サブライト色・エッジ色を描きます。各色はコントローラーで操作します。
--- ベース色 ---
描画順においてShade.xの前までが基準となるベース色(光が当たっているところ)になります。これをもとに影色やハイライト色をつけます。ベース色はコントローラーで操作できないのでMMD標準のライト色をはじめ、モデルのテクスチャや他のエフェクトで調整してください。
基本的には「エフェクト割当」のmainタブの結果です。モデルを直接改造するか、SimplePaint_EgeOff.fxや単色シェーダーなどでベタ塗りにすると良いと思います。PostEyeAlphaなんかもShade.xの前に置きます。
--- Shade.x ---
Shade.xはmsTC_ShadeRTタブおよびmsTC_SublightRTタブを参照して影色やハイライト色、サブライト1色、サブライト2色を塗ります。
まずmsTC_ShadeRTタブのRGB値をもとに影色、ハイライト色を塗ります。青いところは光があたっていて、青がないところが影になります。赤いところはベース色になります。緑のところはハイライトになります。(タブの状態はコントローラーの「調整用」モーフで確認できます;後述)
ExcellentShadowを筆頭に、SSAO系など影をつけるエフェクトはこのmsTC_ShadeRTタブでチェックをONにして描画させます。赤色部分はテクスチャか、あるいは点光源エフェクトをボーンに子付けするのもありだと思います。
具体的には以下のとおりです。
msTC_ShadeRT:
R:ベース色(すなわち塗らない)にする度合い。1.0に近いほど強制的にベース色のままにします。
G:ハイライト色にする度合い。1.0に近いほど強制的にハイライト色で塗ります。
B:影色にしない度合い。0.0に近いほど強制的に影色で塗ります。
次にmsTC_SublightRTタブのRGB値をもとにサブライト1色、サブライト2色を塗ります。
基本的には追加ライトで赤いライトや緑のライトを当てます。赤いところがサブライト1色、緑のところがサブライト2色になります。赤や緑であればいいので、追加ライトの個数や種類に制限はありません。青いところはハイライトやサブライトにしません。
追加ライトはこのmcTC_SublightRTタブでチェックをONにします。
具体的には以下のとおりです。
msTC_SublightRT:
R:サブライト1色にする度合い。1.0で強制的にサブライト1色で塗ります。
G:サブライト2色にする度合い。1.0に近いで強制的にサブライト2色で塗ります。
B:ハイライトおよびサブライトにしない度合い。1.0に近いほど、ハイライトやサブライトを無視してベース色か影色で塗ります。
--- Edge.x ---
Edge.xはmsTC_EdgeRTタブを参照してエッジ色で塗ります。デフォルトで適用するEdge_ON.fxはMMD標準のエッジを描画します。
黒いところ(実際にはR値)をエッジ色で塗ります。
CroquisなどはこのmsTC_EdgeRTタブでチェックをONにします。
--- コントローラー ---
msToonCoordinatorController.pmxで各色などを操作します。初期設定にするvmdも同梱してあります。
基本的に各しきい値で影部分などの範囲を決め、続いてベース色から色相・明度・彩度をどれだけ変化させるかを決めます。
具体的には以下のとおりです。
影・ハイライト:
影1しきい値:影にする範囲です。
影1色相適用:影色を「影1色相」で指定した色相に近づける度合いです。
影1色相:影色の色相です。影1色相適用が0.0だと変わりません。
影1彩度:影色の彩度です。0.0で無彩色、0.5で変化なし、1.0で純色。
影1明度:影色の輝度です。0.0で黒、0.5で変化なし、1.0で白。
ハイ1影を無視:ハイライトが影に入ってもハイライト色を維持します。
サブライト:
サブ1色相:サブライト1色の色相です。上記と違いこの色相になります。
彩度と明度は影・ハイライトと同じ仕様です。
エッジ:
影・ハイライトと同じ仕様です。色トレスとかはありません。
調整用:
スライダーを動かすと順に「ベース色(Shade.xの前)」「msTC_ShadeRT」「msTC_SublightRT」「msTC_EdgeRT」を表示します。各タブの内容を見ながら調整したいときなんかに使うといいと思います。
また、AfterEffectsなど高度な動画編集ソフトを使っている人はこのモーフで各タブの動画を出力すればAE上でマスクとして使えます。
最低限の使い方
1) MMDでの下準備
・Shade.xとEdge.x、ExcellentShadow.xを読み込む
・msToonCoordinatorController.pmxとdefault.vmdを読み込む
2) MMEの「エフェクト割当」での下準備
・mainタブで(default)とPMXモデルにSimplePaint_EgeOff.fxを割り当てる
・mainタブでExcellentShadow.xのチェックをOFFにする
・msTC_ShadeタブでExcellentShadow.xのチェックをONにする
→準備ができました!コントローラーでいろいろいじれます。
ちょっと進んだ使い方
各msTC_〇〇タブでfxファイルを適用する
Shade、Sublight、Edgeフォルダにパラメータをいじれるfxファイルがあります。強制的に影色やハイライト色にしたり、テクスチャでRGBを指定できたりします。
指定したテクスチャをモデルのUVに従って描画するだけなので、RGBの役割については基本的に各タブのRGBそのままです。ただし、ShadeのBだけは反転しているのでテクスチャで青を描いたところが強制的に影色になります。
msTC_Shadeタブにおいて、ExcellentShadowによる陰影とテクスチャのB値は乗算します。さらにテクスチャのR値を加算して最終的な影の量を決定しますので、BとRの値を調整することで影の出やすさをコントロールできます。
いろいろエフェクトを追加する
基本的にmsTCのために読み込んだエフェクトはmainタブでチェックをOFFにして、該当するmsTC_〇〇タブでチェックをONにします。
たいていのエフェクト、特にRGBで操作できるエフェクトは使えるはずです。SSAO系や追加ライト系、エッジ描画系はもちろんのこと、リムライト系でリム部分の影色をキャンセルするとかWorkingFloor系(の接地影)を使ってみるとか発想次第です。SSAOのようにRGB全てに乗算するエフェクトはBだけに乗算させるなど改造したほうが都合がいいと思います。
大まかには以上です
乱筆でしたがとにかく各タブのRGBを操作するということです。
msToonCoordinator、ぜひ遊んでくださいませ。
こだわり派の使い方
Tips的な話です。好きな方にお読みいただければ幸いです
MMDのアンチエイリアスをOFFにして、2倍の大きさで出力する
しきい値を使うのでアンチエイリアスをOFFにする前提で作ったエフェクトです。アンチエイリアスがONでも大きな問題はありませんがエッジまわりの処理は若干怪しくなるかもしれません。ONにするならShade.fxとEdge.fxの先頭にアンチエイリアスONに対応するパラメータがあるので変更してください。
OFFの場合は当然ジャギジャギになってしまうのでスムージングをかけるために、サイズを縦横2倍で出力して動画編集ソフトで半分の大きさに縮小します(さらに何らかのスムージングエフェクトをかけるとベター)。フルHD(1920x1080)の動画を作るなら、MMDからは4K(3840x2160)で出力します。
出力サイズを2倍にするとエッジ系エフェクトとかも綺麗な描画になるのでおすすめです。ただしCroquisの太さが変わったり、Diffusionの広がる範囲が狭くなったりするので各エフェクトの調整にはお気をつけ下さい。
無彩色を使わない、有彩色と混在させない
彩度を変えるモーフにて、もとの色が無彩色の場合は彩度を変えないようにしています。色相値が不定ですし、アニメ等でも無彩色を使うことはほとんどありません。
ただ、MMD用モデルでは無彩色が使われていることが多々あります。特に地続きで無彩色と有彩色が混在している場合、例えば白いシャツだけど影部分はちょっと水色が入っているような場合は彩度をいじると無彩色の部分と有彩色の部分がパキッと分かれてしまいます。
単色でもベース色が無彩色だと影色も無彩色になって色に乏しい感じが出てしまうので白いシャツでもちょっとだけ青に遷移させるとか対策するといい感じです。
おわりに
最後までお読みいただきありがとうございます。作品づくりの一助になりましたら幸いです。