UE4のRoughnessと、BlenderCyclesのRoughness
UE4マテリアルについて、Twitterでこんなやりとりがあったのですが、おたがい勘で話し合ってもあれなので、この機会に検証してみようと思います。
ざっくり用意したラフネス用テクスチャを、メタルマテリアルの平面と曲面にそれぞれ貼って、背景に同じHDRIを使用した、UnrealEngine4とBlender CyclesRenderの比較をします。(カメラや太陽光は目見当で多少のズレがあります)
UE4
UnrealEngine4にラフネスマップを読み込み、貼った状態。
UnrealEngine4にラフネスマップを読み込み、sRGBのチェックを外した状態。
UnrealEngine4にラフネスマップを読み込み、圧縮をHDRに変更した状態。
Blender
BlenderCyclesにラフネスマップを読み込み、貼った状態。
BlenderCyclesにラフネスマップを読み込み、非カラーデータに切り替えた状態。
SubstancePainter2のラフネスをCyclesで再現する方法を調べてたときに使われていた数式ノード(乗算もしくはパワー、どちらも同じ結果に見える)を使用した状態。
比較した印象
UE4では暗部の繊細な表現が飛んでしまったように見えます。接近することでディテールの存在は確認できますが、このくらいの距離では省略されてしまうようです。ブログの画像では確認が難しいかもしれませんが、UE4では一番右のグラデーション部分にトーンジャンプが見られます(追記:トーンジャンプは圧縮タイプをHDRに変更することで回避できました)。比較画像があると、レンダリングから移行する人がリアルタイムに期待しすぎない、さじ加減が分かりやすくなりますね。
どちらもノードで調整することで、より理想に近づけることが出来ると思いますが、UE4のマテリアルノードでの方法が理解できていないので、今回は触れません。
覚えておきたいメモ
ラフネスマップは、画像そのものの色を映すためのテクスチャではないため、UE4ならsRGBのチェックを外す、Cyclesならカラーを非カラーデータに切り替える必要があります。
今回の比較のため、Allegorithmicのフォーラムで「UE4ではsRGBチェックを外す」情報を見つけたのは収穫でした。
以前もNormalMapで似たような問題に悩まされたけれど、こういう情報は現場の方々の「知っていて当然」という知識であまり表に出てこない。
これをまた忘れたときのためにブログ書きました(笑)
最後に
Cyclesのマテリアルやライティングを勉強するなら、