作成者:--様
ニコニコユーザーページ:https://www.nicovideo.jp/user/11195552
作成日:2013-07-01 00:07
(本記事は2013年に書いた内容を、2020年に改変したものになります。)
実写合成MMDにおいて、ガラス面やツヤツヤしている床などに映り込み描写があると、作品のクオリティが格段に上がります。
映り込み描写にはMirrorWFやWorkingFloorALが使えますが、そのまま使った場合映り込み方がくっきりしすぎてしまうので、他のエフェクトと組み合わせて調整します。
なお、本記事の元ネタは2012年に行われた第1回MMD関西勉強会でのおたもん様の発表内容です。
------------------------------------------------------------------------
(※追記 2020/5/10)
この記事を書いた2013年当時はMirrorWFを使用していたのですが、数年ぶりにMMDについて調べているうちに、この用途ならMirrorWFよりもWorkingFloorALを使ったほうが良さそうだと気づきました。
そのため、記事タイトルを「MirrorWFによる鏡面の映り方を~」から「WorkingFloorAL(またはMirrorWF)による鏡面の映り方を~」に改題し、内容を修正しています。
MirrorWFよりもWorkingFloorALのほうが、シェーダーエフェクトやAutoLuminousとの組み合わせで有利となります。
一方で、WorkingFloorALは2つ以上読み込むことができません。複数の鏡面を一度に作りたい時(例えば、壁と床の両方に同時に映り込みを行いたい場合)はMirrorWFを使う必要があります。
------------------------------------------------------------------------
使用するエフェクトは以下の3つです。
・WorkingFloorAL(針金P様)またはMirrorWF(針金P様)
・o_OpticalBlur(おたもん様)
・Adjuster(データP様)
------------------------------------------------------------------------
【1. エフェクトの事前設定】
・WorkingFloorALを使う場合
WorkingFloorALフォルダ内の「WorkingFloorAL.fx」をメモ帳で開き、
#define UseXShadow 1
と書かれているところを
#define UseXShadow 0
に書き換えます。
・MirrorWFを使う場合
MirrorWFフォルダ内の「MirrorWF.fx」をメモ帳で開き、
float4 ClearColor = { 1, 1, 1, 1 };
と書かれているところを
float4 ClearColor = { 0, 0, 0, 0 };
に変更します。
【2. 鏡面の位置合わせ】
MMDに、使用モデルとWorkingFloorAL.x(MirrorWF.x)を読み込ませます。
WorkingFloorAL.xの初期位置はモデルの足元・水平ですが、MirrorWF.xの初期位置は座標軸の原点・垂直となっています。
本項ではWorkingFloorAL.xを使用する前提で解説していますが、MirrorWF.xのRxを90に設定しておけば、ほぼ同じ作業で位置合わせができます。
さらに、背景となる実写映像(背景AVI)も読み込ませます。
(※ 背景映像が暗くて分かりづらかったので、LinearColorAdjust(かき様)で一時的に無理やり明るくしています)壁(ガラス面)に鏡面を作る場合は、うまいこと位置調整を行う必要があります。
MMD本体に同梱されている「ダミーボーン.pmd」を使うと調整しやすいと思います。
ダミーボーン.pmdを読み込ませ、WorkingFloorAL.xを紐付けさせます。
ダミーボーン・ボーン01は、デフォルトの状態では原点座標に存在しています。
こういうガラス面の前に段差があるようなシーンでは、以下のように対応します。
①座標軸を非表示にし、ボーン01のX軸移動、またはZ軸移動を行い、ボーンの位置を実写映像中の「壁際」のところまで移動させます。
②この状態でY軸回転を行い、ダミーボーンのZ軸を壁に添わせます。
③Y軸移動を行い、段差の高さまで持ち上げます。
④X軸移動を行い、ダミーボーンのZ軸をガラス面に添わせます。
⑤この状態でZ軸を90度回転させると、壁に沿って鏡面が表示されるようになります。
⑥更に、画面上向きにX軸移動し、ガラス面と段差の境界まで鏡面を持ち上げます。
これで位置合わせができました。
端的に言えば「壁際に持っていって、回転させる」というだけの作業です。
------------------------------------------------------------------------
【3. 描写をぼかしつつ、色調整する】
このままでは映り込みがくっきりしすぎているので、調整を行います。
まずはWorkingFloorAL.x(MirrorWF.x)のTrを変更します。
0.05~0.5くらいに設定すると良いと思います。
次に、鏡面に対してぼかしと色調節をかけます。
「o_OpticalBlur.x」と「Adjuster.pmd」をMMDに読み込みます。
すると、画面全体に対してぼかしと色調節がかかります。
ここでMMD右上に表示されている「MMEffect」のボタンをクリック。
さらに「エフェクト割当(M)」をクリック。
Mainタブにて「Adjuster.pmd」「o_OpticalBlur.x」のチェックを外し、
MirrorWFRTタブにて「Adjuster.pmd」「o_OpticalBlur.x」のチェックを入れます。
これにより「鏡像にのみ、ぼかしと色調節がかかる」という状態になります。
MMDの照明と、「Adjuster.pmd」「o_OpticalBlur.x」の数値を調整します。
Adjusterによる調整は本当に微調整程度でOKで、不要な場合も多いです。
o_OpticalBlurは、床面に使うときには強めに、ガラス面に使うときには弱めに適応させます。
これで完成です。
------------------------------------------------------------------------
【4. WorkingFloorAL対応エフェクトについて】
従来のWorkingFloorエフェクトやMirrorWFエフェクトの弱点は、モデルにシェーダーエフェクトをかけた場合や、AutoLuminous4(そぼろ様)で発光させた場合でも、鏡面側にはそれが反映されないということです。
AutoLuminousの光が写り込まない問題を解決した改変エフェクトがWorkingFloorALです。
























コメント
コメントを投稿