ノーマルマップをベイクするときのポイントまとめ

ノーマルマップをベイクする際のポイントをまとめてみました。 ローモデルはMetasequoiaでのソフトエッジ、ハードエッジの対応方法。 ベイクはSubstancePainterを想定した内容。 ただポイント自体は、xNormalとか他のツールでも共通のポイントです。
21
まじかる☆しげぽん@VRoid @m_sigepon

最近はノーマルマップを、SubstancePainterでベイクしてるけどxNormalより結果がすぐわかるし綺麗にベイクできる。

2016-05-01 04:06:14
まじかる☆しげぽん@VRoid @m_sigepon

1.ノーマルマップを綺麗にベイクするポイントはローモデルを必ずすべて三角分割しておく四角ポリゴンのままだとベイクした時と、UnityやUE4等で貼り付けたときに分割方向が異なるとベイク時と不一致になり正しい結果にならない

2016-05-01 04:06:41
まじかる☆しげぽん@VRoid @m_sigepon

2.エッジの角度が90度を超えるような部分(100度以上)は、ハードエッジを設定して、それ以外の部分は基本ソフトエッジに設定しておく。メタセコの場合法線は自動計算なので基本すべてスムージングを180度にしておいて、上記の部分はエッジを分離しておく

2016-05-01 04:11:56

※追記
現在のメタセコは、法線が調整できるのでエッジの分離の代わりに「法線」コマンドで「折目」を設定すればOK

まじかる☆しげぽん@VRoid @m_sigepon

出力時にFBXで出力するようにしてスムージングも出力するようにすればエッジを分離した部分がハードエッジと同じ状態になる。さらにそういう場所はUVも分けておく。ハードエッジに設定した箇所のUVが接続されているとSubstancePainterだと変なノイズが出る

2016-05-01 04:13:33
まじかる☆しげぽん@VRoid @m_sigepon

ハードエッジに設定してUV分けておいたほうがいいのはこういうやつね。角度が90度超えてる、こういうオブジェクトの裏面みたいなところ。90度ぐらいまでならほとんどのところは大体大丈夫。 pic.twitter.com/E5vhRfL8Uy

2016-05-01 04:18:04
拡大
まじかる☆しげぽん@VRoid @m_sigepon

3.シリンダー状の部分や、曲線が出る部分はハイモデルとローモデルの形状をなるべく合わせておく。この部分はローモデルでもローにし過ぎるとやはりどこかから見た時におかしくなる。この部分がローモデルに沿ってまっすぐに修正してしまうとハイの綺麗な曲線がベイクされたのが自ら消すことになる。

2016-05-01 04:24:20
まじかる☆しげぽん@VRoid @m_sigepon

縁に分割を追加したりいろいろ試してみたけど、結局低すぎるローモデルの形状を維持するよりハイモデルとかけ離れ過ぎ無いぐらいに割っとくのがポリゴン数的にもノーマルを焼くために何かするという工数を増やさないで済む無難な対応法だった。

2016-05-01 04:29:30
まじかる☆しげぽん@VRoid @m_sigepon

ノーマルマップは結局、ローモデルとハイモデルの法線の差分データなのでベイク用に何か頂点を追加したり分割して、最終モデルでそれが無くなってると情報が一致しなくなるので正しい形状が反映されない。なので尚更一番シンプルな解決方法にする必要がある。

2016-05-01 04:31:37
まじかる☆しげぽん@VRoid @m_sigepon

4.三角分割された平たい広い面にディティールを焼きこむと歪む場合があるのでそういう場合は歪まないように真ん中に分割を追加したり歪みがおきにくいように分割を追加する。この分割はベイク用ではなく最終モデルでもその状態で有る必要がある。理由は前述したとおり。

2016-05-01 04:34:06
まじかる☆しげぽん@VRoid @m_sigepon

人体や服とか有機的な部分だとあまり意識しなくても問題起きづらいけど、メカ系とかだとよく起きるので大事。

2016-05-01 04:35:08
まじかる☆しげぽん@VRoid @m_sigepon

5.これらをメタセコの場合はFBXでスムージンググループありで出力。OBJだと実はスムージンググループありにしてもオブジェクトで設定してるスムージンググループの値は出力されてない。なので基本FBXでスムージンググループありで出す必要あり

2016-05-01 04:38:21
まじかる☆しげぽん@VRoid @m_sigepon

以上かな。基本すべて三角分割、スムージンググループはすべて180度、ハードエッジにしたい部分はエッジを分離して、UVを切り離しておく。FBXでスムージンググループありで出力。これ覚えておけばだいたい大丈夫。

2016-05-01 04:40:13

※追記
現在のメタセコは、法線が調整できるのでエッジの分離の代わりに「法線」コマンドで「折目」を設定すればOK

まじかる☆しげぽん@VRoid @m_sigepon

Mayaとかだとソフトエッジ、ハードエッジちゃんと設定できるからいいんだけどね。でもそれも地味にめんどいからエッジ分離しておくのは割りと楽。

2016-05-01 04:41:11
まじかる☆しげぽん@VRoid @m_sigepon

後はSubstancePainterで出力したFBXをローモデルとして読みこんで、ZBrushでハイモデルを同じくハイモデルで出力して読みこめば特にケージも作らないで綺麗にベイクできる。

2016-05-01 04:43:02
まじかる☆しげぽん@VRoid @m_sigepon

SubstancePainterは、ハイモデル(_high)とローモデル(_low)のサフィックスを付けるとそのオブジェクト同士でベイクしてくれるので、ファイルを複数分けたりせずに一気に各パーツベイクできる。これが楽でいい。オブジェクトの距離を離しとくとかそういうの不要。

2016-05-01 04:45:34
まじかる☆しげぽん@VRoid @m_sigepon

シリンダー状のノーマルマップ検証してるやつ。

2016-05-01 04:50:25
まじかる☆しげぽん@VRoid @m_sigepon

ローモデルすぎると、左みたいに波打っちゃう。面取りしてるやつは一見綺麗に見えるけど2枚目の画像みたいに下から見るとやっぱ波打ってしまう。 同じポリゴン数なら外周を合わせるほうが無難。 dl.getdropbox.com/u/499159/cylin… img.photobucket.com/albums/v458/fa…

2016-05-01 04:54:32
まじかる☆しげぽん@VRoid @m_sigepon

結局この、ハイモデルの局面の情報というのはどこかに残さないと行けないのでこれUVにそって綺麗にしちゃったらポリポリした断面が見えるだけなんだよね…。

2016-05-01 04:58:46
まじかる☆しげぽん@VRoid @m_sigepon

立方体のベイクはUV接続されてスムージング掛かってる状態より、UV分離してハードエッジの方が綺麗になるという検証。 simont.de/pic/tutorials/…

2016-05-01 05:21:03
まじかる☆しげぽん@VRoid @m_sigepon

Game Character Creation Series: Kila Chapter 2 – Low Resolution Modeling cgi.tutsplus.com/articles/game-…

2016-05-01 05:23:19
まじかる☆しげぽん@VRoid @m_sigepon

これキャラクターでノーマルマップのベイクの流れ説明してて良い。

2016-05-01 05:23:43