セルルックなどのノンフォトリアル表現では、法線をそのまま出すよりも球状ののっぺりとした法線にしたほうがきれいに見える場合があります。
主にキャラクターの顔周りや、植物などでよく使われる表現です。
今回はUE4のマテリアルとブループリントを使って球状の法線を作る方法をご紹介します。
マテリアル
シンプルに球状の法線を作るとなると以下のような構成になると思います。
マテリアルのDetailからTangent Space Normalのチェックを切っておきます。
オブジェクトの一部にだけ適用する
全体的に法線を丸くしたい場合は上記の方法で十分ですが、キャラクターの顔部分だけなめらかにしたい場合などもあるかと思います。
その場合はブループリントを使うことになります。
こちらのヒストリア様のブログ記事を参考に実装してみました。
[UE4] 動的法線転写について
https://historia.co.jp/archives/11921/
記事にもある通り、頭の位置に置いたコリジョンから位置を取得し、小さいSphereと大きいSphereの間で元の法線とブレンドするというものになります。
まずはキャラクターのブループリントからコリジョンを頭の位置に固定します。
頭の位置はアニメーションによって常に動いているので、コリジョンをボーンに追従させる必要があります。
SphereコリジョンをMeshに親子付けしたら、Parent Socketの虫眼鏡マークからHeadボーンを探してアタッチします。
これでアニメーションで動いても正確に頭の位置に追従するようになりました。
あとはコリジョンの位置とRadiusを取得し、マテリアル側に渡すだけです。
ヒストリア様の記事とほとんど同じですが、ノードグラフはこんな感じです。
キャラクターBP
マテリアル
キャラクター以外にも、植物などに適用するとポリゴン感が軽減されてより馴染みやすくできる場合があります。
元の法線
球状法線