リアルタイム系の3DCG制作に関するノウハウや実践的なTipsを共有するWiki形式のWEBサイトです。


ハードエッジにノーマルマップをベイクする02

AverageNormalsを使った際の注意点


ハードエッジにノーマルマップをベイクするのページで、ハードエッジにはAverageNormalsを設定せよと説明がありますが、AverageNormalsも万能なわけではありません。
(AverageNormalsはSubstancePainterの機能ですがToolbagやxNormalでも基本的には同じ問題が起きます)

平面部にディテールを持ったハイポリをベイク


具体的にどういうことが起きるのか下図のようなモデルで検証してみます。
ローポリは単なるCubeです。



このような平面部にディテールを持ったハイポリをベイクすると……



トゲは全て同じ形状なのですが明らかに四隅のトゲは斜めに向いていますね。
凹みも出ているところと消えてしまったところがあります。
つまり、平面部のノーマルが歪んでしまうのです……

では、今度はAverageNormalsを切ってベイクしてみます。



綺麗!!

と思いきや!



エッジのノーマルが繋がってないッ!

うーん、じゃあどうすればいいんでしょうか。

一発で解決する方法は無い

残念ながらワンタッチワンボタンで解決する方法はありません(調べた限りは)
が、下記の方法で回避できます。
ノーマルマップをブレンドする
AverageNormalsオン、オフでベイクした2つのノーマルマップを合成する方法です。
Photoshopなどでエッジの部分はAverageNormalsオン、平面部分はオフでベイクしたノーマルマップを合成します。

こんな区分けですね。
Toolbagではツール内でマスクすることができます。便利ですね。
Getting to Know Toolbag 3 | Ep. 4: Texture Baking
SubstancePainterでもスクリプトを作成された方がいらっしゃいます。
Perfect Normal Map Baking in Substance Painter
https://share.allegorithmic.com/libraries/2310
ローポリにエッジを加える

このようにローポリ側にもエッジを足して、平面と角の法線を分けてあげる方法です。

ポリゴン数にある程度余裕があれば使えそうです。
SubstancePainterで描く
平面のディテールをハイポリで作らず、SubstancePainter等でHeight(またはNormal)をペイントして作る方法です。
案外これが一番現実的かもしれません。
ブラシにしておけば汎用性も上がりますしいざという時の修正も楽です。

という訳で根本的な解決ができていませんが、
もっと良い方法があればぜひ教えてください。

関連ページ

ノーマルマップ-OpenGLとDirectX-
ハードエッジにノーマルマップをベイクする
SubstancePainter基本ワークフロー
参考になったよ、という方は宜しければクリックおねがいしますm(_ _)m

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

※現在 ユーザーID保持者 のみがコメント投稿可能な設定になっています。

Wiki内検索

メニュー

Maya

管理人


管理者:kmj
Twitter:@kmj3dcg
ゲームグラフィックに携わり十数年、現在フリーランスのモデラーとして活動しています。
専門分野:モデリング、テクスチャ、ウェイト(キャラモデルがメインのゲームグラフィッカーです)
お問い合わせはこちらまでお願いいたします。

Amazonアソシエイト

皆様のご協力感謝しておりますm(_ _)m























管理人/副管理人のみ編集できます