最終更新:
rt_3dcg_tips 2019年04月10日(水) 18:54:13履歴
ゲームグラフィック等では左右対称部分や、同じようなパーツのUVを使いまわしたりすることがあります。
ですがSubstancePainterではUVが重なっている、またはUVが裏返っているとベイク時に問題が起きます。
そういったUVの共有されたモデルをSubstancePainterで扱う方法を解説します。
ですがSubstancePainterではUVが重なっている、またはUVが裏返っているとベイク時に問題が起きます。
そういったUVの共有されたモデルをSubstancePainterで扱う方法を解説します。
UVを0〜1の範囲外に出すです。
SubstancePainter基本ワークフローの項ではUVを0〜1に収めると書いていますが、
敢えて外に出すことでSubstancePainterのペイント及びベイクの管理外に逃がすことができます。
これは主にベイク時の問題を回避するためです。
例えば、左右対称のモデルであってもワールドスペースノーマルは別の値になります。
この別々の値を同じ場所にベイクしようとするためチグハグなテクスチャになってしまいます。
そのため、同じ位置にUVを重ねてベイクするのは避けなければいけません。
例えば、左右対称のモデルであってもワールドスペースノーマルは別の値になります。
この別々の値を同じ場所にベイクしようとするためチグハグなテクスチャになってしまいます。
そのため、同じ位置にUVを重ねてベイクするのは避けなければいけません。
![](https://image01.seesaawiki.jp/r/g/realtime3dcg/UIuQ9YgHz7.jpg)
赤い部分(-X)のUVは青い部分(+X)と全く同じものをV方向に+1.0移動したものです。
これをFBXで出力してSubstancePainterに持っていきます。
新規プロジェクトではUDIMを使用しない(Create a texture set per UDIM tileをチェックしない)でください。*1
![](https://image01.seesaawiki.jp/r/g/realtime3dcg/gWulc0Y6LB.jpg)
このように範囲外にあっても0〜1部分のテクスチャがリピートして適用されていることが分かります。
ただし範囲外のフェースを触ってもストロークが入りませんのでご注意ください。
UVを0〜1から退避したパーツには、共有元の方のノーマルマップやアンビエントオクルージョンマップが適用されることになります。
そのため、共有元と大きく形状が違ったりすると法線がおかしかったりオクルージョンを入れるべき所(腕輪をした腕とか)にオクルージョンが入っていない等の問題が起きます。
そういう時は大人しく別のUVを取るか気にならない程度なら妥協しましょう……。
そのため、共有元と大きく形状が違ったりすると法線がおかしかったりオクルージョンを入れるべき所(腕輪をした腕とか)にオクルージョンが入っていない等の問題が起きます。
そういう時は大人しく別のUVを取るか気にならない程度なら妥協しましょう……。
範囲外のパーツに比べて0〜1範囲内のパーツの方がUVが小さい場合(短いとか)描けない部分が出てきます。
大は小を兼ねるということで大きい方を0〜1に入れておきましょう。
大は小を兼ねるということで大きい方を0〜1に入れておきましょう。
また余談ですが、裏返ったUVはエンジンや設定によってはノーマルマップが反転してしまいます。
これはFBXに入っているタンジェントやバイノーマルの情報が足りないせいなんだとか。
UE4やUnityではエンジン側でタンジェントを計算するオプションがあるので心配無用ですね。*2
これはFBXに入っているタンジェントやバイノーマルの情報が足りないせいなんだとか。
UE4やUnityではエンジン側でタンジェントを計算するオプションがあるので心配無用ですね。*2
タグ
コメントをかく