まえがき
UE5の影描画ってキレイですね。
Toon描画も、この恩恵にあずかりたいなぁ… エンジン無改造で!
というわけで、UE5のキレイな影を利用する手法を紹介します。ネタとしてどうぞ。あまり実用的じゃないかも。。
こんな感じの処理ができます。
←完成した絵、陰影なし、影マスク→ |
---|
モデルはNecoMaidさん
https://booth.pm/ja/items/4252664
ポーズは VRM Posing Desktop
https://store.steampowered.com/app/1895630/VRM/
よりお借りしています。感謝!
従来のToonの影のアプローチ
従来手法:PostProcessを使う
PostProcessでBaseColorと比較します。定番手法です。
お手軽かつ見栄えの良い絵を出すことができます。
ただ画面を一律で処理するため柔軟性がなく、痒いところに手が届きません。
詳しくはこちら ↓
https://www.raywenderlich.com/146-unreal-engine-4-cel-shading-tutorial
従来手法:自前シャドウマップを使う
自前でShadowMapを作る方法です。
キャストシャドウを判別しつつ、マテリアル個別の処理もできます。
ただ影の解像度が足りなかったり負荷が高かったりで、イマイチです。
詳しくはこちら(数年前に書いた記事です) ↓
https://qiita.com/ruyo/items/71a3f2f694d2853b3f1e
今回の手法:Translucentを利用した影の判別
従来手法を良いとこ取りした、Translucentを利用するToon影処理です。
モデルを2度、重ねて描画します。
実際の絵はこちら。
1回目の描画 | シンプルな白 |
---|---|
2回目の描画。同じモデルを重ね描きしている。 光の当たる箇所が赤、陰が青 |
Translucentで描画。SceneColorの明度で2値化している |
---|---|
不透明の白で描画した後、同じモデルを半透明で重ね描きします。
下地の明度から 陰影を判別します。
キャストシャドウの判別も可能 |
---|
これにて、影を判別できるようになりました。(正確には単に暗い部分を検出してるだけなので、AOやGIの影響も受けます…)
あとは好きな色に塗り分けましょう。マテリアル内で柔軟に処理ができます。
パーツ毎に、階調やハイライトも設定できます。
なお、2度目の描画ではSceneColor以外にもNormalとDepthを参照することができます。
工夫次第で面白い効果を出せます。(簡易的なコンタクトシャドウとか、ドロップシャドウなど)
ハイライト対応、影色を調整した例 |
---|
あとがき
むりやり影を利用する方法を紹介しました。
内部のShadowMaskTextureにアクセスできれば もっとシンプルに対応できるのですが… このあたりは、まだまだエンジン改造の必要がありますね。
なにか良い抜け穴を知っている方がいたら教えてください…
なお、この手法は VRM4Uプラグイン でお手軽に利用できます(宣伝)
興味ある方はお試しくださいー
おしまい。