Unity+Oculus+MMD とりあえず書き留めておく場所

Unity+Oculus+MMD VRでキャラクターと遊ぶ

11. MMDモデルのシェーダを変更する

前回ポストエフェクトについて解説しましたが、今回はシェーダについて。

MMD4Mechanimを使用してUnityにMMDモデルを読み込むと、Unity上でなるべくMMDと同じように表示するため、Unityのスタンダードではない独自のシェーダを身にまとったモデルになります。

MMDと同じように表示される反面、Unity上でポストエフェクトを乗せても影響を受けず、ビジュアルが変わらないことがある(特にSSAO系)といった弊害があります。

また、MMDで言うところのシェーダ系エフェクトをモデルに適用し、リアルっぽいライティングにしたい…という方も居ると思います。

そんな時、モデルに適用されているシェーダをUnityのスタンダードなものに差し替えるということが出来ます。

f:id:emifuwa:20171205162258j:plain

モデルのマテリアルとシェーダ

Unityのレンダリング「マテリアル」「シェーダ」「テクスチャ」によって行われています。

UnityにMMDモデルを読み込むと、読み込んだモデルフォルダの中に「Materials」というフォルダが増えているのがわかりますね。

マテリアルとは、オブジェクトの表面をどう描画するか、どのテクスチャを参照するか、どのような質感にするか(シェーダ)などの要素が詰まったものです。

モデルフォルダの中の「Materials」フォルダを開いて、マテリアルを選択してみましょう。

f:id:emifuwa:20171205152045j:plain

どのテクスチャが指定されているかなどがここから読み取れます。

一番上の「Shader」と書いてあるドロップダウンリストをクリックしてみましょう。

f:id:emifuwa:20171205152653j:plain

MMD4Mechanim専用のシェーダが指定されています。非常にたくさんの種類の中から、モデルのビジュアルを再現するために適したシェーダが選択されています。

では、このシェーダを「Standard」に変更してみましょう。

f:id:emifuwa:20171205153041j:plain

上の変更前の画像と比較して、モデルのビジュアルが急に変わったのがわかると思います。

作業としては

①モデルのシェーダを適宜Standardに変更

②必要に応じてパラメータを編集

という流れになります。

 

では、パラメータの設定を見ていきます。

f:id:emifuwa:20171205154230j:plain

ShaderStandardにしたら、上から順番に見ていきます。

Rendering Mode:とりあえずOpaqueで。

Opaque:デフォルト設定。透明部分が無いもの向け。

Cutout:透明不透明をはっきり分ける(半透明ではなく、100%不透明かまったく見えないのどちらか)

Transparent:透明なプラスチックやガラスなど。テクスチャのアルファチャンネルをそのまま再現→Albedoのアルファ値を下げると半透明になる)

Fade:オブジェクトが反射要素を含んでいても透明にフェードイン・アウトできる。

Main Maps

Albedoテクスチャを設定。または、指定された単色カラーになる。

Metalic:右にスライドするほど金属っぽくなる。金属的になればなるほど周囲の光を反射する。

Smoothness:右にスライドするほど光沢が出る

それ以外の項目に関しては必要に応じて調べていただきたいのですが、もう一つ。

Emissionという項目にチェックを入れ、「0」となっている数値をあげていくと、オブジェクトが発光するようになります。オートルミナスのような感じです。

 

とりあえずは全部のシェーダをStandardに変更し、こだわりたい部分をコツコツと調整していく形になると思います。

モデルの相性もあるので、なかなか全てにいい効果が出るとは言えませんが、チャレンジしてみる価値はあります。

Materialsフォルダの中からStandardに変更する作業を行っても良いのですが、個人的には、Hierarchyのモデルのツリーを開く→「U_Char」という項目を選択→InspectorにMaterialのリストが出るのでそこから調整…という流れをおすすめします。

f:id:emifuwa:20171205161309j:plain

モーフがらみで、Standardに変更してしまうとモデルのビジュアルが壊れてしまう場合があります(頬染め系によくある)。そういう場合は、その部分だけMMD4Mechanimのシェーダのままにしておくのが良いでしょう。

ですが、一度Standardに変更してしまうと、以前に適用されていたシェーダが何だったかわからない…ということもあるので、筆者はこうして一覧になっているところをスマホで写真を撮っておき、もしもの時はそこを見て戻したりしています。

エフェクトやライトも含めての効果は、こちらが参考になるかと思います。

togetter.com

少し古いまとめなので使用されているエフェクトが旧ImageEffectだったりしますが、ほぼ問題なくPost-Processingでカバーできると思います。

Particle Systemについて

パーティクル系のエフェクトについてなのですが、Unityには標準でパーティクルを作れる機能がついています。

設定できるパラメータなども非常に多いので、ここで説明するとそれだけでかなりの仕事になってしまうため、ちゃんと解説されている人様の記事をリンクしておきますので、そちらをご参照ください…

その1 Unityのパーティクル「Shuriken」

ゲームつくろー!さんより)

また、アセットストアでも様々なパーティクルが入手できますので、そちらも無料のものから試してみるといいと思います。