みくだん

【MME】AlternativeFull

2013/01/06
MMD技術 0
 大人になったらお年玉なんて貰う事が無くなり、むしろ出費が嵩むだけかと思っていたら、そんな事はなかったようです。
 正月明けのこの土日で、様々なツールやエフェクトが配布されていますね。
 そのうちの一つ、AlternativeFullエフェクト、と改造用ツールを紹介します。



 現在でもメカシェーダーや独自トゥーンシェーダーなど様々なシェーダースクリプトが配布されていましたが、プログラムや数学的知識がないと、スクリプトを弄るのは大変でした。
 また、そのモデルや動画の演出としてどのような数値変更をすればいいのかを探るのも難しいものです。
 それらの悩みに応えるように出てきたのが、上記シェーダースクリプトと、改造用フロントエンドツールです。

 パッケージにはエフェクト本体とサブエフェクトスクリプト、サンプル用のモデルとテクスチャが同梱されています。
 またこのパッケージだけではなく、そぼろさんの「AbsoluteShadow」「ExcellentShadow」並びに「AutoLuminus」との併用が推奨されています。


■「シェーダー」とは
 簡単にいうと、物体に対して光と影の計算をする事を指します。
 MMDなどでは標準で独自シェーダーが搭載されており、その方式に従って光が当たる所、影が出る所などを計算して表示を行っています。
 MMEはこの表示部分を横から「ちょっとゴメンよ」と言いながら制御を奪い、MMEと適用しているエフェクトスクリプトの記述に従ったものに変更しているのです。

 MMD標準では、光源が一つしかなく、その光の方向とカメラの方向を計算し、「明るい所」「暗い所」の2つに分けて各ポリゴンを表示している形となっています。これがトゥーンシェードと言われている方式です。
(厳密にいうとかなり複雑ではあるので……)
 さらにそれとは別に、セルフシャドウという別な方式を加える事で、影の出し方を変えていたりします。
 上記の通り、MMEはそれを奪い(Hookし)、スクリプトに記された表示方法に変えている訳です。

■ AlternativeFullスクリプト

 このパッケージは、従来のスクリプトとは違い、ユーザーが独自に各パラメーターなどを変更し作成できるパッケージとなっています。
 従来の配布シェーダーは、既にある程度組み上げられており、そのままMMEに適用すれば使えるようになっていますが、独自の表現にしようとすると改造が必要となります。
 この改造をするに辺り、各パラメーターの意味や、どこに記述されているかをテキストエディタなどとにらめっこしながら行わなければならなかったものをGUI化し、比較的楽に独自シェーダーが組めるようになっています。

 AlternativeFull_01

 付属の改変ツール「AlternativeFullFrontend.exe」がそれにあたります。立ち上げると上記のような画面が出てきます。

 残念ながらシェーダーや各パラメータについて、まったく知識がないと難しいかもしれません。初心者向けとは正直言い難いものですが、それでも適当に弄りながら、各項目がどういう動作をするのかを学ぶ事もできます。
 ひとまず、付属のreadmeは必ず読んでみましょう。

 一応ここでも簡単には説明しますが、かくいう私もそんなに詳しくないので……。
(簡単、とはいえ専門用語を入れながらとなりますので、まったくの初心者向け解説ではない事をご了承ください)

■ 出力fxファイル

 最終的に仕上げたシェーダースクリプトの出力先を指定します。
 ver1.0aではフルパスで指定する必要があります。(パス無しだとエラーが出るようです)
 メモ帳などで何も記述していないテキストファイルを作って保存し、保存後に「test.fx」など拡張子をfxにしたものを先に用意してから、そのファイルを選択すると楽です。

■ シェーディング1
 シェービングヒント用テクスチャは、明るい部分・暗い部分の出力具合のプリセットを決める為の専用テクスチャとなります。
 付属しているファイル
「shading_hint.png(標準的)」
「shading_hint_gyaruge.png(ギャルゲ風)」
「shading_hint_katturi.png(がっつりトゥーン)」
 がとりあえず最初から選べます。
 また、このテクスチャを独自に変更する事により、陰影の出方などがかなり変わります。
 設定用トーンカーブのようなもの、と思ってください。
 テクスチャの機能は上記動画とreadmeを合わせて参考にして下さい。

 この項目は必須設定となります。選択されていない状態だと、スクリプトが生成されません。

■ シェーディング2

・ハイライトを強調する
 文字通りハイライト(明るい部分)を更に明るくする倍率設定のスライダです。
 上げれば上げる程、驚きの白さになります。
 上げすぎると、色がついているもの(肌や髪など)も白っぽくなってしまうので、調整加減が難しい設定の一つではあります。

・影の色に材質の自己乗算結果を利用する。 
AlternativeFull_02
 なかなか表現が難しいですが、上図のような感じです。
 通常影は明度などで暗くしていく訳ですが、自己乗算をする事により彩度を薄くする事なく(場合によっては強調して)表現する時に使います。
 これは後述する「影色と乗算しない」チェックボックスと、「影の傾向色」との組み合わせとなります。

・影の傾向色
 デフォルトでは白100%になっていますので、影がかなり薄くなってしまいます。
 この色枠の中をクリックするとカラーピッカーが開きますので、任意の色・明るさに指定できます。
 真っ黒を選んでもOKですが、グレーの具合を変える事により、材質に落ちる影の濃さを自由に設定できるようになっています。
 また、グレーだけでなく色も指定できますので、青っぽい影、赤っぽい影など任意で指定できます。
 これを自己乗算とセットで使う事で、影の濃さや色味をコントロールできます。

・影色と乗算しない
 傾向色指定を無効にします。デフォルトの状態で、単純に自己乗算を掛けたい場合はこれを指定します。
 材質指定の色味がそのまま活かせます。

・AutoLuminusに反応させない
 文字通りの機能で、ハイライト強調などで高輝度になった部分をAutoLuminousで光らせない為の指定です。

・モデルのスペキュラ情報を利用する
 スペキュラ(Specular)とは「反射色」です。これの強度を自由設定できます。
 材質に反射色設定がなされてない場合は無意味となります。

・モデルのスフィア情報を利用する
 スフィア(反射用球状マップテクスチャ)の強度設定です。材質にスフィアマップが指定されている場合、強度設定する事で強調させたり弱めたりできます。
 もちろん、スフィア指定がない場合は無意味です。
 またMMDでは材質モーフ後のエフェクト適用が出来ませんので、スフィアを材質モーフさせるものには適用されません。


■ シェーディング3

 このブロックは中級者~上級者向けとなります。上記2つのタブを弄るだけでも結構な変化が出せますが、このタブの内容を弄る事で、更に詳細な設定を行う事ができます。
 分からない場合は設定せずとも問題ありません。

 付属のreadme並びに、付属している「tama.pmx」と「tama.fx」を見ると効果が分かりやすいかと思います。

AlternativeFull_03

 シャドウテクスチャは影の部分、ハイライトテクスチャは光が多く当たっている部分に適用されるテクスチャとなります。
 メタリックな材質や、反射の鈍い材質などに見せたい場合はこれらのテクスチャを作る事により多彩な表現が可能となります。

 法線マップは、簡単にいうと「細かい凸凹を表現できるテクスチャ」となります。
 これは通常のテクスチャと異なり、ファイル自体は通常のPNGやBMPなどでOKですが、画像編集ソフト(GIMPやPhotoshop)とプラグインなどで専用のものを作る必要があります。
 「法線マップ プラグイン」などで検索してみてください。


■ エッジを独自描写する
 これはMMD独自のエッジ描写を無視し、MME側で独自のエッジ描写方式に切り替えるスイッチです。

・エッジカラーテクスチャ
 UV展開されたテクスチャでエッジカラーを指定できます。材質毎に一色ではなく、グラデーションエッジなどもこれを使えば可能となります。

・エッジ太さテクスチャ
 グレースケールのUV展開されたテクスチャが必要です。黒がゼロの太さ、白100%がエッジ太さ1となります。
 上手く使う事により、漫画のペンで書いたようなエッジを付ける事が出来るでしょう。

これらのテクスチャは、材質またはモデル毎に、自前で用意する必要があります。

・太さ
 文字通り、エッジの太さのコントロールです。

・スケール
 太さのスケール変更となります。極端に太くしたい場合などは、「太さ」の方で少しだけ上げて、こちらのスケールで大きくした方が分かりやすいです。

・色の濃さ・色の暗さ
 文字通りのコントロールです。

 独自描写をオンにして、かつ色を単色でいいから使いたい場合は、小さなテクスチャでいいのでベタ塗りの画像ファイルを用意し、エッジカラーテクスチャで指定すればOKです。


■ セルフシャドウ
 セルフシャドウ描写方式を切り替えられます。

・セルフシャドウの種類
 MMD標準シャドウは文字通り、MMD内臓の描写方式を使います。

 AbsoluteShadowは、そぼろさんのAbsoluteShadowスクリプトを使います。
 これを使うためには、出力fxファイルと同じフォルダに
「AbsoluteShadowCommonSystem.fx」
「AbsoluteShadowShaderSystem.fx」
「AbsoluteShadowZBufDraw.fx」
 をコピーする必要があります。
 また、効果を見る為には、MMD上で「AbsoluteShadow.x」を読み込み、エフェクトを適用させておく必要があります。

 ExcellentShadowの場合は、ファイルのコピーは必要ありません。
 MMD上で「ExcellentShadow.x」を読み込み、適用させておけばOKです。

・シャドウの濃さ
 セルフシャドウの濃さをコントロールします。
 シェーダーによる影部分の描写と、セルフシャドウの影は別のものですので混同しないようにして下さい。
(シェーダーの影は、あくまでもポリゴンの明暗の描写であり、セルフシャドウは光の方向から落ちる影を計算し、別途描写を行っています)

・簡易ソフトシャドウ処理
 MMD標準シャドウを使う場合などで、シャドウのジャギー(ギザギザ)が気になる時にこれにチェックを入れて影をボカす事が出来ます。またその強度のコントロールとなります。


■ 照明
 照明のコントロールを行います。
 照明自体の方向などの設定はMMD側のものが活かされますが、光の計算方法を変える事が出来ます。

・照明の種類
 MMD標準のものとランバートと選べます。ランバートが何かは説明すると長いので割愛します。
 ですが、見た目で結構分かりますので、お試しあれ。
(簡単にいうと、光の辺り具合が柔らかくなります)
 ランバート係数は0~1の間で選べます。
 0だとほとんど影が無くなり、1だと影が濃く出ます。

・フィルライトType1
 フィルライトはMMDの照明とはまた別に、独自の光を当てるようになります。
 このType1では、常にカメラから光を当てている状態となります。
(カメラの上にライトをつけているような状態)
 スライダはこの強さとなります。
 常に視点方向からの光となるので、あまり極端に強くすると影が出なくなり、また奥行感なども薄れます。逆に立体感を薄めたい場合には有効です。

・フィルライトType2
 こちらはやや特殊で、Z軸は照明方向設定からそのままですが、XとYだけ逆転させている照明となります。つまり、MMDの照明設定とは逆の方向から光を当てる照明となります。
(いわゆる、「抑え」ライトです。MMD照明設定で右から当ててれば左から当てるライト)
 これを強くするとMMDの照明設定とは逆の方向から強く当たる事になりますので、程よい強さにしておくと良いでしょう。
 晴天の照明で、顔に落ちる影を抑える時などにも有効です。

・リムライト
 基本的には視点方向からの逆光となりますが、単なる逆光ではなく光が当たっているエッジ部分(この場合、MMDのエッジ描写の事ではなく、光の回り込みがある境目の事)を強調するようなライティングの事を指します。

AlternativeFull_04AlternativeFull_05
(左が通常で、右がリムライト)

 強さのパラメータが、文字通り光の強さとなります。鋭さは数値が小さいと回り込みが大きくなり、光が当たる部分が広くなります。数値が大きいと回り込みが少なくなり、エッジが強調されます。

 この機能とハイライト強調、そしてAutoLuminusと併用する事はこんな効果を付ける事が出来ます。
AlternativeFull_06

■ その他

 ツールの動作や補助的機能について設定します。

・モデルのテクスチャにシェーダーで異方性フィルタリング処理をする
 MMD64ビット版では異方性フィルタリングが標準搭載されていますので、これはMMD32ビット版の救済的機能ともいえます。
 また64ビット版でもテクスチャの解像度如何では、MMD本体のをオフにしてこちらのを使った方が綺麗になる場合もあるようです。

 ピクセルごとのサンプル数は、処理の解像度と思ってください。数値が低ければ荒く、高ければ滲むというかボカして柔らかくします。
 数値が大きいと処理負荷も大きくなるので、グラボの能力と相談の上ご使用下さい。

・値が変更されたら自動的に出力する
 このツールで何かしらの変更が出たら、即座にfxファイルを出力するモードです。
 常に変化を見たい場合は、MMD側の物理演算モードを「常にオン」にしておくと良いでしょう。
 物理オフですと、MMD側で反応が出るまで時間が掛かったり、またMMD側で何かしらのアクションをするまでは更新されない場合もあります。
 また、PCの性能によっては、出力されたエフェクトをコンパイル(GPUが読めるように翻訳する作業。MME側が自動的に行ってくれる)に時間が掛かり、反映まで待たされる場合もあります。

・ウィンドウを常に最全面に表示する。
 文字通りの機能で、色々いじりながらMMDの様子を見る時に便利ではあります。

・テクスチャファイルを.fxと同じ場所にコピーする
 出力先が、AlternativeFullと同じ場所ではなく、別フォルダなどに出力させる場合、同時にテクスチャファイルも自動的にコピーする機能です。
 モデル毎、もしくは材質毎にシェーダーを組む時には便利でしょう。

■ 各設定の呼び出し
 このツールウィンドウに作成したfxファイルをドラッグ&ドロップすれば、設定値が読み込めます。
 一度作ったファイルを再び呼び出し、再設定する時にはこの方法となります。
 現バージョンでは色々なファイルがそのままドラック&ドロップできてしまうので、まったく関係ないファイルを放り込むとエラーとなったり、場合によっては予想外のクラッシュとなるかもしれませんのでご注意ください。


■ シェーダーのコツ

 正直、私自信そんなに凝ったシェーダーを組めるようなスキルも知識もないので、エラそうな事は言えません。
 ですが、最終的に動画へ仕上げる時に大事となるのが、「光と影のコントロール」です。
 こればかりは、後処理(AviUtlやNive、AfterEffects等)で調整しようとしても、おのずと限界が出ます。
 素材(MMD出力)の段階で、どれだけ綺麗に出力できるかがキモとなります。

 シェーダーは幸いにもモデル個別、場合によっては材質個別で設定できます。
 メタリックな表現をしたい場合、顔に落ちる影が気になる場合、明るい背景でもモデルが沈まないような表現、暗い背景でキャラを神々しく表現したい時など、シェーダーを弄る事で多彩な表現が可能となります。

 ですが、やりすぎると逆効果となる事も多いです。
 光の当てすぎ、影を濃くしすぎたりすると違和感の方が強くなるでしょう。
 色調補正系エフェクトと同様に、さりげなく、かつ効果的な設定が必要となる事も多いかと思います。

 ではどんなパラメータがよいのか……これは一概に言えません。何故なら「どういった表現の動画を作るのか」という目的次第でまったく変わってくるのです。
 ですので、とりあえず弄りまくって自分のなっとくいく設定を覚えないとなりません。
 これはもう一つの「沼」とも言えます。

 一応、制作者のlessさんの方で、いくつかのプリセットパターンの配布を予定しているとの事ですので、wktkして待つとよいでしょう。
 もしかしたら、他の方からもパターンがリリースされるかもしれません。
(記事を書いている間に、いくつかのパターンがリリースされているようです)



 また、最終的な仕上げとして、ExcellentShadowに付属しているExShadowSSAOとの併用、ToneMapとの併用などもお勧めです。
 エフェクトを組み合わせた時に、相乗効果として多彩な表現ができますので、苦しみと共に楽しさを味わえるでしょう。


■ 最後に

 残念ながらMikuMikuMovingには非対応です。これはセルフシャドウ系処理・エフェクト処理系がMMDのとは違う為です。
まだ試してませんが、もしかしたらセルフシャドウの部分を弄らなければMMMでも使えるかもしれません。

 それでは、あなたのお嫁さんを綺麗にする為の化粧テクニックをお楽しみ下さい。
関連記事

Comments 0

There are no comments yet.
かんな@バーチャルJC
Admin: かんな@バーチャルJC
ニコニコ動画などでMMD動画をうpしてるしがないユーザーの一人。
バーチャルJC。文筆系の活動もしています。

VRChat & clusterユーザー:kanna3939
継続プレイゲーム:ウマ娘、原神、鳴潮、ゼンレスゾーンゼロ
Steamゲーム:Factorio、Satisfactory、
MMD技術