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

左右対称や使い回しパーツ等でUVを共有したい

ゲームグラフィック等では左右対称部分や、同じようなパーツのUVを使いまわしたりすることがあります。
ですがSubstancePainterではUVが重なっている、またはUVが裏返っているとベイク時に問題が起きます。
そういったUVの共有されたモデルをSubstancePainterで扱う方法を解説します。

結論

UVを0〜1の範囲外に出す
です。
SubstancePainter基本ワークフローの項ではUVを0〜1に収めると書いていますが、
敢えて外に出すことでSubstancePainterのペイント及びベイクの管理外に逃がすことができます。

そもそもなぜUVを重ねてはいけないのか

これは主にベイク時の問題を回避するためです。
例えば、左右対称のモデルであってもワールドスペースノーマルは別の値になります。
この別々の値を同じ場所にベイクしようとするためチグハグなテクスチャになってしまいます。
そのため、同じ位置にUVを重ねてベイクするのは避けなければいけません。

詳細


赤い部分(-X)のUVは青い部分(+X)と全く同じものをV方向に+1.0移動したものです。

これをFBXで出力してSubstancePainterに持っていきます。
新規プロジェクトではUDIMを使用しない(Create a texture set per UDIM tileをチェックしない)でください。*1


このように範囲外にあっても0〜1部分のテクスチャがリピートして適用されていることが分かります。
ただし範囲外のフェースを触ってもストロークが入りませんのでご注意ください。

問題点

形状が大きく違うと整合性が取れない

UVを0〜1から退避したパーツには、共有元の方のノーマルマップやアンビエントオクルージョンマップが適用されることになります。
そのため、共有元と大きく形状が違ったりすると法線がおかしかったりオクルージョンを入れるべき所(腕輪をした腕とか)にオクルージョンが入っていない等の問題が起きます。
そういう時は大人しく別のUVを取るか気にならない程度なら妥協しましょう……。

範囲内のパーツの方がUVが小さい時

範囲外のパーツに比べて0〜1範囲内のパーツの方がUVが小さい場合(短いとか)描けない部分が出てきます。
大は小を兼ねるということで大きい方を0〜1に入れておきましょう。

その他

また余談ですが、裏返ったUVはエンジンや設定によってはノーマルマップが反転してしまいます。
これはFBXに入っているタンジェントやバイノーマルの情報が足りないせいなんだとか。
UE4やUnityではエンジン側でタンジェントを計算するオプションがあるので心配無用ですね。*2

コメントをかく


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

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

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

Wiki内検索

メニュー

Maya

管理人


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

Amazonアソシエイト

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























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