関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2019.04.17UE4UE/ Material
執筆バージョン: Unreal Engine 4.20 |
主にアニメ調のシェーディングを行いたい場合によく使われる法線転写というテクニックがあります。
何のことはない、頂点の法線情報を何かで上書きして意図したシェーディング結果を得ようというものです。
DCCツールの機能で済ませてしまうことが多いと思いますが、
実行時に処理したい場合もあるでしょう。
法線情報を書き換える、ただそれだけです。
UE4のマテリアルエディタはこの機能をサポートしており、
Normalに何かそれっぽいものを繋げば出来上がります。
以下の仕様で実装します:
プリミティブな図形を用いるより見栄えがするという理由でAirtoneからネオンちゃんに来てもらいました
(ここでデータが配布されています)。
ピクセルの座標と球体の中心(BPからパラメータとして受け取る)との差から球体の法線を計算し、
元の法線と線形補間しています。
単にLerpではベクトルの長さが1を下回るためNormalizeします。
下部のノードは法線転写の影響度を求めるマテリアルファンクションで、
ここでは球体の中心から離れるにしたがって減衰するように計算しています。
グラフにするとこんな感じ(横軸が中心からの距離)
最大影響度(減衰前の値)をパラメータで変化させられるようにしてあります。
ここでは二つのSphereCollisionを使用しています。
当たり判定を使うわけではないのでCollisionである必要はありませんが、
球状の範囲を指定・表示する機能を求めてこれを使用しています。
全てのパラメータをTickで送り続ける必要はありませんが、サンプルということで適当に。
マテリアルで法線を変化させる手法についてご紹介しました。