SubstancePainterで正しいcurvatureをベイクする

Category : CGTips · by 9月 9th, 2019

curvatureとはどんなデータか?

curvatureとは曲率を表すデータです。
曲率に従って決まり、グレーの値は平坦であることを表し、暗くなるほど凹面、明るくなるほど凸面であることを表します。

曲率を表すので正しく生成できれば以下のような挙動になります。

  • 平面は全ての箇所で全く曲面がないのでニュートラルなグレーになります。
  • 球体は全ての箇所で均質な曲率ですので偏りのない明るさになります。(ニュートラルなグレーよりも明るいです)
  • 角丸キューブの場合、エッジが曲がり始めると一定の曲率になりますが、角は3面に曲がるのでより曲率が高いため明るくなります。
  • 小さい球体はより鋭い曲面といえるので、小さいほど明るくなります。

ベイクの準備

では実際にベイクを行いたいと思います。
正しくベイクするためにモデルのUVと頂点の法線の設定を行います。
ローポリゴンのエッジが90度のメッシュになる場合、ハードエッジの設定にしてUVを切り離す必要があります。この設定によってUVの向きが異なるが箇所を違う値をベイクできるようになり、Normalのシームが出なくなります。
ベイクする際のUVと頂点法線の設定はリンク先の画像がわかりやすいです。

https://forum.substance3d.com/index.php?topic=16416.0

今回はテストなので比較的シンプルな角丸キューブを作りますが、 すこしだけいじわるをしてUVは斜めに傾けておきます。

ベイク設定

データができたのでベイクしてみます。
デフォルト設定ですがで、データが単純なこともあり、Curvature以外はおおむね問題ないです。

問題のcurvatureですが、UV境界に均一な線が入ってしまいます。

ここからが本題です。なぜこんな線が入るのでしょうか?どうやったらこの線はなくなるのでしょうか?

この線の正体はCurvature Baker parameterのEnable SeamとSeams Intensityの設定です。Enable SeamがONになっているとき、Seams Intensityの強さで線を描画します。

Enable Seamのチェックを外すことで線は消えますが、やや隙間が目立ちます。そういった場合にはCommon ParameterのDilation Widthでベイクしたときの延長の幅を変えることで緩和されます。

もしくはSeams Intensityの値をいい感じに設定してなじませることで緩和することもできます。

そもそも、なぜ隙間なくベイクできないのでしょうか?

それはSustancePainterのCurvatureのベイクが、ローポリとベイクされたNormalを使った簡易的な処理だからです。

Enable Seamは癖のあるパラメーターですが、デフォルトでONになっているのは、エッジのシーム付近は角になることが多いので、ベイクの甘さをこれで誤魔化すためについているものだと思います。

SubstanceDesignerを使用する

ちなみにおなじSubstanceシリーズのSubstanceDesignerにはcurvatureのベイクの設定が二種類あります。

ひとつはCurvatureで、こちらの設定はSubstancePainterと同じものです。(ただし、より明示的にNormalMapを指定する必要があります)
もうひとつはCurvatureMap from Meshというもので、こちらはハイポリを使用してベイクを行うため、より正しくベイクを行うことができます。 角の明るさもはっきりと出ていますね!

CurvatureMap from Meshは便利ですが、万能というわけでもないようで、球体をベイクした際にはシワのようなものが出てしまいました。こちらはまだパラメーターを追いきれていないのですが、UVの変形度合いに影響するようです。( CurvatureMap from Mesh についての説明が、なぜかマニュアルに載っていないんですよね…)

SHARE :