msToonCoordinator ver2.1
msTCをアップデートしました🎉
アップデート内容
旧verとの互換性はあまりありません。置換が面倒くさい人はコピーをとってからフォルダごと上書き保存したらいいかもしれない。
機能追加
影色を自由に指定できます
影色を指定するためのレンダーターゲットを追加しました。fxファイルで指定したテクスチャやポストエフェクト等で影色を制御できます。
影色を自動で良い感じに決めます
影色の生成アルゴリズムを良い感じにしました。
この機能は『BLUE PROTOCOLにおけるアニメ表現技法について ~実装編~』(CEDEC2021)を参考にしています。
影色とベース色の境界で色を強調します
ベース色に接している影色の彩度や明度を変化させます。ちょっと重いので無効化できるようにしています。
顔の法線をテクスチャで制御できます(テスト中)
目下や鼻横の三角影を作るための機能です。誰か使いこなしたら私に使い方を教えてください。たのむ。
この機能は『ウマ娘 プリティーダービー 3DCGキャラクター事例
~基本設計とウマ娘ならではの表現について~』(Cygames Tech Conference, 2021)|Youtubeを参考にしています。
モデルのテクスチャのアルファを参照できます
モデルのテクスチャのアルファを参照するかどうかのパラメータをShade_〇〇.fxとSublight_〇〇.fxに追加しました。
各RTタブの状態を表示する調整用機能を無効化できます
無効化するパラメータをShade.fxに追加しました。調整用機能は調整しないときには完全に無駄な負荷なので、出力時などに無効化してください。どのくらい意味があるかは知らんけど。
修正
テクスチャが機能しない問題を修正したかもしれない
ver1.1でテクスチャを正しく指定したのに機能しなかったぞヽ(`Д´)ノという人は試してみてください。これでダメならダメです。ハァ。
配布データ
更新履歴
v2.1
追加
「影色を自動で良い感じにする」について、「良い感じにする量」を調節するパラメータをShadeColor_Auto.fxとShadeColor_common.fxsubに追加しました。彩度は変えてほしくないんだけど…とか色相はもっと大きく変えてほしいとかの場合に数値を変更してください。
「顔の法線をテクスチャで制御する」について、ちゃんとウマ娘の方式にそった計算方法を追加しました。Shade_Normal.fx内にパラメータNORMAL_RATE_MODEを追加し、1で従前のシンプルな計算、2でウマ娘方式の計算に切り替えます。ご示唆くださったセルゆかりさんとWater-blueさんに感謝いたします。
よく分からない人へ:1のままで大丈夫です。
分かる人へ:ウマ娘方式は顔の球面法線化だったりパラメータ調整だったり前提条件が厳しいです。ShadeColor_common.fxsubの217-218行目にあるマジックナンバー0.12と0.6も調整すると幸せになれるかもしれません。
よく分かる人へ:引き続き私に教えてください…。
修正
Shade_Normal内の#includeパスが間違えていたのを修正しました。ご指摘くださったセルゆかりさんに重ねて感謝いたします。
ver2.xの使い方
基本的な使い方
ver1.0時代の使い方をご参照ください。読み込むファイルは変わっていません。
影色の指定
影色はmsTC_ShadeColorRTタブの色をそのまま使います。
デフォルトでShadeColorフォルダにあるShadeColor_Auto.fxが適用されます。これは自動で良い感じの影色にしてくれるやつです。
ShadeColor_Auto.fxを複製してメモ帳等で開き、以下のようにSHADOW_COLOR_TEXTUREでテクスチャを指定するとそのテクスチャを影色として使えます。このテクスチャには前述の自動で良い感じの影色にするやつは効きません。髪の毛とかで使うと綺麗かも。
// 影色テクスチャを使う
#define SHADOW_COLOR_TEXTURE "face_ShColor.png" ←先頭の//を削除してからテクスチャファイル名を変更
ポストエフェクトを上記RTタブでチェックONにすると、そのポストエフェクトが影色に影響を与えるようになります。
コントローラのモーフ「調整用」でmsTC_ShadeColorRTタブの絵を表示できます。
上級者向けの話として、機能的には「影部分はmsTC_ShadeColorRTタブの色をもってくる」です。なのでmainタブとShadeColorRTタブで全く別のステージやモデルを表示させておくと二重露光的な絵が作れます。主人公の影の中にライバルがいる絵とか良くないですか?
影色とベース色の境界で色を強調する
ベース色に接した部分の影色を変化させることでちょっと豊かな絵になるやつです。コントローラに追加されたモーフ「SSS彩度」「SSS明度」で制御できます。両方とも0.5が基準です。
Shade.fxをメモ帳等で開き、///設定ここから/// のあとにあるパラメータ EDGE_CHROMA を以下のように有効化すると使えます。デフォルトで有効化されています。ちょっと負荷の重い機能です。
//ベース色と影色の境界で色を強調する
#define EDGE_CHROMA
有効化した場合、その下にあるSAMP_NUMのパラメータも機能します。おおざっぱにいえば色の変化する領域が広がります。ただ数値を大きくなると変化自体もなだらかになっていき全体的に色が変化してあんまり意味がありません。2.0~4.0ぐらいがいいかも。
使わないときは#defineの前に//をつけると無効化されます。
余談ですが、SSSという名前は見た目的に表面下散乱(SSS, Subsurface Scattering)に近い効果を得られるのでつけました。しかし技術的には全く別モノです。影色の境界部分の彩度を上げる画法に適当な呼称や略称がなさそうなのでSSSにしています。
顔の法線をテクスチャで制御する
上級者向けの機能なので上級者向けに説明します。
目下や鼻横にアニメっぽい影を作るための機能です。機能追加の項で貼ったCygames Tech Conferenceの動画(14:00~に飛びます)を参照してください。ディティールマスクの話そのままの機能です。
この機能はShadeフォルダのShade_Normal.fxで使えます。このfxファイルは法線だけで陰影を計算するのでExcellentShadowの影は利用できません。Shade_Normal.fxを複製してNORMAL_RATE_TEXTUREでテクスチャを指定し、msTC_ShadeRTタブでモデルの顔材質に適用してください。
動画ではおそらくX軸方向にだけ制御する機能ですが、msTCではテクスチャのRGBがXYZ軸に対応しています。基準は0.5で法線を変えません。1.0に近いほど法線をその軸方向に反転させます。0.0に近いほど法線をその軸方向に極端化(法線ベクトルのその軸の値を±1.0にする。もとがマイナスなら-1.0、プラスなら1.0)させます。ふつうRだけ使うと思いますが、例えば眉間に影をつくるためGを使ってみても面白いかも。
この機能を使う前に、モデルの顔の法線を球面化するなど下準備がいるかもしれません。PMXeで開いてt0r0さんの闇鍋プラグイン等で法線転写などするといいと思います。
制約としてテクスチャの影響下にある頂点に対してウェイトを100%もっているボーンが必要です。大抵のモデルは「頭」ボーンが該当するので大丈夫です。頭ボーンが別名になっているモデル等ではBONE_NAME_FOR_NORMALのボーン名を変更してください。アニメーションに特化したモデル等で顔に複数のボーン(鼻ボーンとか)があるとうまく機能しないことがあります。
私も使いこなせていない機能なので、使いこなせたらぜひ教えてください。目下の影と鼻横の影の間を綺麗につなぐの難しくない?目を閉じるとテクスチャが伸びて影の形も変わっちゃうし。ほげー。
最後に
お読みいただきありがとうございました。2.0になったmsTCをお楽しみくださいませ。