📌

アニメ調のShaderを実装(Unity)

2024/09/06に公開

前回まで使用したモデルはMMDのテクスチャをshaderの"Unlit/Texture"でそのまま貼り付けているので光源の影響を受けず浮いた感じになっています。
目指すはアニメや原神のようなセルシェーディングの絵作りなので、該当するshaderを適用します。

https://github.com/ColinLeung-NiloCat/UnityURPToonLitShaderExample#what-is-not-included-in-this-simplified-tutorial-shader

上記で公開されているshaderはゲームやVtuberなど多くのプロジェクトで採用されているようです。他にもVRChatなどで使われるlittoonなどtoon系のshaderはいくつもありますが、実装例に惹かれてためこちらを採用していきます。

導入

上記のGithubからzipファイルをダウンロードし、解凍して得られたフォルダ"UnityURPToonLitShaderExample-master"をそのままProjectのAssetsディレクトリにドラッグ&ドロップします。
各Materialでお目当てのShaderが使えるようになっているので適用させます。

各項目

  • High Level Setting(Is Face?(please turn on...): 該当のMaterialが顔のパーツであるならチェックを入れたほうがいいらしい。以下に比較画像を載せるが、どうやらチェックを入れた場合は影が薄くなる効果があるようだ。

  • Base Color:

    • BaseMap: テクスチャを貼る際に調整が要る場合に弄りそう。特に触らない
    • BaseColor: 白がデフォルト。色を選択するとかなりしっかりとその色がテクスチャに影響する。弄らない
  • Alpha

    • Alpha Clipping を有効化すると、不透明なエリアと透明なエリアの間にハードエッジを持つ透明なエフェクトを作ります。(Unity公式)

    • 特定の不透明度以下の部分は表示しないようにする。その閾値を設定するらしい(0.5にしたがモデルのテクスチャによりそう)
  • Emission

    • UseEmission: emission(色/光の放射?)を行うか。原神のモデルは肌色が微妙に発光しているのでこれが作用していそう。単体では効果が薄くURPのポストエフェクトで明るい色の発光と組み合わせる必要がある?
    • Emission Color: 放射する色。肌に適応させるため赤色が望ましいが、少し明るいだけでマユリ様ぐらい明るくなるのでかなり濃く深い赤色で。
    • EmissionMulByBaseColor: ベースのテクスチャにどれぐらい反映させるか?0~1まであり、1だとemissionが機能せず、0だと元のテクスチャに色が強く乗る。(クリスタのハイライトで色を載せた感じ)
  • Occlusion

  • Lighting

    • IndirectLightMinColor: 影の濃さ?明度が明るいほど影が薄く、暗いほど濃くなる。また暗い場面でテクスチャが不自然に暗くなる。
    • IndirectLightMultipl:
    • DirectLightMultiplie:
    • CelShadeMidPoint: 影を作る境界の深さ。小さいと影が出来なくなり、大きくなると影が出来やすくなる。顔の場合は小さい方がよい
    • CelShadeSoftness: 影の境界をぼかすか。
    • MainLightIgnoreCel:
  • Shadow mapping

    • 影をどんな感じに乗せるか?とりあえずここに置いた色が本影で乗る色になる。
  • Outline

    • OutlineWidth: 縁取りの太さ
    • Outline Color: 縁取りの色。肌は赤色がsuki
    • OutlineZOffset: 横のオブジェクトと近い場合どこで縁取りするか?0に近いと線画で区切る部分が多い絵になって1に近いと線画をあまり描かない絵作りになる。

完成

上記の項目を設定していき完成したもの。更に可愛くなりました

MMDのTextureそのまま / URPデフォルト / UnityURPToonLitShaderExample+設定

追記

上記の記事は触り始めの初期、1年弱前に書いた物なので理解が追い付いていない部分が多いです。
元のモデルのクオリティの高さも相まって、ある程度触ると特にスクリプトの編集もせずに以下のような画作りができると思います。

Discussion