ステージのフォトリアル化
記事作成日 2018/11/26
※注意
各ソフトウェアは、解説に使用されているものと完全に同一のバージョンをダウンロードして使用してください。少しでもバージョンが違うと、相性問題が発生することが多いためです。
1.発光マテリアルを光らせる
ステージの惑星を光らせます。
MMD(MikuMikuDance)用プラグインであるMME(MikuMikuEffect)には、AutoLuminousという定番エフェクトがあり、発光マテリアルに光輝くエフェクトを追加することができます。そして、MMD4Mecanimには、そのAutoLuminousがセットアップされたMMDモデルを、Unity上のEmissive扱いのマテリアルがセットアップされたfbxモデルに変換する機能があります。
Stage_ST22の配布ページに記載がある通り、このステージもAutoLuminous対応ですので、この機能を有効にします。
まず、「Post Processing Stack」というプラグインをインポートします。
Post Processing Stack(非公式アーカイブ)
を解凍し、Unity起動中にWindows標準エクスプローラからダブルクリックして起動します。
次に、~.cs等が上下に並んだリストが表示されたら、リスト右下のImportボタンをクリックすれば、インポート完了です。
次に、画面左上側のHierarchyの中のMain Cameraをクリックして、画面右側のInspectorのCameraの下のAllowHDRにチェックを入れてください。(デフォルトではチェックが入っています)
次に、Main CameraのInspectorの一番下にあるAdd Compornentボタンをクリックして、Effects>Post-processing Behaviourを選択します。これにより、Inspectorの一番下にPost-processing Behaviour (Script)の項目が追加されます。
次に、画面左下側のProjectパネルのAssetsを開き、その右側のファイル一覧の中で右クリックして、Create>Post-processing Profileを選択します。(New Post-processing Profileが作成されます)
次に、画面左上側のHierarchyの中のMain Cameraをクリックして、画面右側のInspectorの一番下にあるPost-processing Behaviour (Script)のProfileの空欄に、画面左下側のProjectパネルのAssetsの中にあるNew Post-processing Profileをドラッグ・アンド・ドロップします。
次に、画面左下側のProjectパネルのAssetsの中にあるNew Post-processing Profileをクリックして、画面右側のInspectorのBloomにチェックを入れます。
次に、画面左下側のProjectパネルのAssets\Stage_ST22の中にあるStage_ST22.MMD4Mecanim.asset(fbx変換設定)をクリックし、画面右側のInspectorに規約同意画面が表示されたら、3つチェックを入れて、「同意します」をクリックします。
次に、Inspectorに表示されたMMD4Mecanimの変換設定画面の一番右上にあるAdvanced Modeのチェックを入れてください。
次に、Inspectorに表示されたMMD4Mecanimの変換設定画面の上側にあるMaterialタブをクリックし、その下のAuto LuminousをEmissiveに変更します。
次に、MMD4Mecanimの変換設定画面の上側にあるPMX2FBXタブをクリックし、一番下にあるApplyボタンをクリックして完了です。
ちなみに、Materialタブは、fbxファイルを生成する前(モデルコンバート前)は空欄になっており、Materialのオプションを操作するためには、一度fbxファイルを生成する必要があります。(最初にMMDモデルデータをAssetsに追加したときは、Materialのオプションを操作できないので注意してください)
また、Materialタブのオプションは、操作後に即座に反映されます。操作後に、再びProcessボタンを押してfbxファイルを生成し直す必要はありません。(もし生成し直す場合は、Prefabファイル等はMMD4Mecanimよって上書き更新できないので、Hierarchyの中のキャラクターのオブジェクトインスタンス、Prefabファイル、Animator Controllerファイル、モーションフォルダにある~.anim.bytesファイルの4つを削除してから、Processボタンを押してください)
なお、ステージのみならずキャラクターも多くがAutoLuminous対応であり(腕輪等)、上の操作で光らせることが可能です。
2.シェーダーの変更
ステージの見た目を写真のようなリアルタイプに変えるため、シェーダーを変更します。
デフォルトでは、主にアニメ調のシェーディング(フラットシェーディング、トゥーンシェーディング等)を行うMMD4Mecanim/MMDLit Shaderになっていますが、これを物理ベースレンダリング(PBR:Physically Based Rendering)を行うStandard Shaderに変更します。
Standard Shader一つで、光沢のあるプラスティック、クリーチャーの肌の凹凸、車の金属ボディ、ネオンなどの、現実世界の様々な材質を表現できます。
まず、画面左下側のProjectパネルのAssetsフォルダの中のStage_ST22\Materialsをクリックして開きます。
中にあるマテリアル(合計9個)のうち、0.gaimenをクリックすると、画面右側のInspectorに設定画面が表示されますので、まず一番上のShaderをStandardに変更します。
さらに、その下のMain MapsのMetalic(右に近づくほど金属っぽくなる)とSmoothness(右に近づくとツルツル、左へ近づくザラザラ)の2つのスライダーを、両方とも一番右へ移動させてください。
1.yuka、2.waku、3.hashira yanaの3個についても、同じ操作を繰り返してください。(残り5個はそのままにしておいてください)
ちなみに、マテリアルの設定項目のRendering Modeでは素材の透明さを指定し(Opaqueは不透明な素材、Cutoutは不透明ですがアルファブレンディングで切り抜ける素材、Fadeは反射が透明な半透明素材、Transparentはガラスのような反射をする半透明素材)、Albedoでは色とテクスチャーを指定します(すぐ左の四角欄に画像マテリアルをドラッグ・アンド・ドロップするとテクスチャーを設定することができ、また、四角欄をクリックしてDeleteキーを押すとテクスチャーなしにできます)。
また、画面左下側のProjectパネルのAssets\Stage_ST22の中のStage_ST22.MMD4Mecanim.asset(fbx変換設定)を選択すると、シェーダーの変更が解除されてしまいます。上記1のPost-processingの設定をし直した場合も解除されてしまうので、注意してください。(逆に、変更をリセットしたいときは、Stage_ST22.MMD4Mecanim.assetを選べばOKです)
3.Reflection Probeの追加
上記2で床と柱を鏡面化しましたが、このままだと周りの光を反射することはできないので、Reflection Probeを追加します。
その前に、まず、ステージが大き過ぎるので、縮小します。
画面左上側のHierarchyのStage_ST22を選択して、画面右側のInspectorに表示されたTransformの下のScaleを、
Scale: x0.6 y0.6 z0.6
に変更してください。
次に、その右上(Stage_ST22のInspectorの一番右上)にあるStaticのチェックを入れてください。問い合わせが表示されますので、Yes, change childrenを選択してください。
次に、メインメニューのEdit>PreferencesのGI CacheタブにあるClean Cacheボタンを押して、Reflection Probeのキャッシュをクリアしておいてください。(キャッシュが残っていると、別のプロジェクトで作ったオブジェクトが映り込むことがあります)
なお、下記のようにReflection Probeの設定を変更した場合も、いったんReflection Probeのキャッシュをクリアして、Unityを再起動させてください。(変更が反映されないことがあります)
次に、画面左上側のHierarchyの中で右クリックして、Light>Reflection Probeを選択します。(この時点で映り込みが表示されます)
次に、Hierarchyの中のReflection Probeをクリックして、画面右側のInspectorのTransformの下のPositionを、
Position: x0 y0 z-1.5に設定してください。(このとき、いったん映り込みが消えます)
次に、Transformの下にあるReflection Probeの設定項目の中のRuntime settings>Box Projectionにチェックを入れます。
次に、その下にあるBox Sizeを、Position: X10 Y10 Z10に設定してください。(映り込みが発生するオブジェクト全てをちょうど取り囲めるように、値を指定します)
次に、その下にあるCubemap capture settingsのResolutionを256に設定します。(これで、再び映り込みが表示されます)
これで、鏡面化した床と柱に、光った惑星が映り込むようになります。
もし映り込まない場合は、Reflection Probeの設定(Type、Cubemap capture settingsのResolution等の値)を適当に変えてから元に戻してみてください。
キャラクターも、ステージと同じ手順でフォトリアル化することが可能です。そうだ、Unityで読み込んだMMDのモデルをリアルにしよう - Traffic Jam等を参考に、シェーダーの設定を変えてみてください。
なお、シェーダーの設定が不適切だと(スライダーを動かしすぎた等)、そのマテリアルが表示されなくなります(マテリアルのInspectorの一番下に表示されている球体の色が消失することで分かります)。マテリアルが消えない範囲で、適切な値を見つけてください。
参考:
MMD4Mecanim コンバートオプション活用のススメ - Qiita
第2回.Standard Shaderを使う - UnityShader 入門
そうだ、Unityで読み込んだMMDのモデルをリアルにしよう - Traffic Jam
【簡単透明化】UnityでMMD4Mecanimで読み込んだMMDモデルの特定部位を透明化する方法(シェーダーと透明マテリアルのダウンロード) | アプリ開発ラボ
アニメ風プロ生ちゃん - Onoty3D