【UE5】漆器の独特な質感をマテリアルエディターだけでどうにか完結して、楽したい
あんまり良くないやましい気持ちがきっかけの記事です。ひたすらマテリアルエディターをいじりまくります。
結果的にはお遊びだったのか? ガチだったのか? その辺が自分でももやもやしていますが記録としてまとめてみました。
きっかけ
漆器のマテリアルというものを試行錯誤していくうちに、いくつか発見みたいなものがありました。
●漆器の特徴(新品に近い状態)
1.見る角度が変わると、色の暗さが若干だが変化する。
2.オブジェクトの曲げが強いほど、色は薄く明るくなる気がする。
もうなんか煮詰まっておかしくなったのか会津まで見学に行っちゃったんですけどね。というのは冗談で普通に和食器を見たりするのが好きなんで実家に帰ると大抵は会津に行っています! って話しなんですけど。
さて1.はFresnelとかがあるじゃんか、と思うようになり、2.もなんとなくマテリアルエディターでどうにかできちゃうんじゃないか。と考えるようになりました。
でもまあ、これってSubstance Painterでやることなんですけどね。でもなんかいい感じに楽できそうなんじゃないか!? このマテリアル作成が成功すれば、大抵のオブジェクトに対して漆器マテリアルをあてれば終わりにできる。。。という好奇心が勝ってしまったのです。
やってみよう
最初に「2.オブジェクトの曲げが強い」をどうやったら表現できるか? という点を解決したいのですが、うれしいことにUE5には「DDX」と「DDY」という関数があって、こいつが「近隣のピクセルとの差分」のことを指しています。
実際は2pixel隣とかなんか細かいルールがありますけども。
ということは、[World Normal WS]をDDXとDDYすると、お隣のNormal Vectorとの差分が取得できるというわけで、ゼロじゃなければ曲がっているということになります。値が大きいほど大きく曲がっているということもわかります。
じゃあさっそくノードを組んでみます。こんな感じかな。
テスト用のStatic Meshとしてエンジンに入っている「Chamfer Cube」にマテリアルをあててみます。
2色がクッキリと表現されていますが、ひとまず期待したように曲面に対してシェーダーが反応をしてくれています。
クッキリとしているのは[IF]ノードのせいだと知っていますから、次はLerpに置き換えてやります。
うん。なんか品質が良くなった。
ここでちょっと寄り道。
他のStatic Meshにマテリアルをあてるとどうなるでしょうね? 皿とか。壺とか。
これも悪くはないですが、お世辞にも良いものとは言えませんね。
と、ここで修正が必要です。DDXとDDYですが計算方法がよくありません。
ベクトルは2方向なのでXとYの成分を合成すれば正しい大きさが得られます。
ということで早速修正しました。(すとんりばーさん、ありがとうございました!)
演算に関してはもうやることはなく、完了かなと。あとは単純に品質面かも。
2.Fresnel
1.の見る角度で暗さが少し変わるってことですので、Fresnelで試してみたいと思います。
変わると言っても言うほどはっきり変わるものではありませんから、影響は少なくしてみます。
Lerpでmixしてみましょうか。
おーなんか思ってたよりマシになってきた。