今回はタイトルの通りZbrushのUVSmoothについての挙動と他ソフトとの連携方法について触れます。
ZBrushのUV Smooth(Suv)は、Subdivisionレベルを変更するたびにUVSmoothが毎回適用されるため、作業中にUV形状が意図しない形に変化してしまいます。
その結果、他ソフト上のモデルとのUV不一致が発生し、Displacementベイクなどで問題になることがあります。
何が起きてるのか、どうしておくと無難なのか、現在の知見をまとめます。
Zbrushのバージョンは2022.0.8です。
Suvとは?問題点は?
これをOnにすることで、Sdivを上げたときにMayaのSmoothのUVオプションでいうPinBorderの形でUVにスムースがかかります。
それだけ聞くとよさそうなのですが、この機能には現状問題があり、スカルプト作業しながらSdivレベルを上げたり下げたりするたびにスムースがかかってしまい、どんどんUVの形が変わってしまします。
こうなってしまうと、Mayaで使うモデルとUVが乖離してしまい、Displacementなどテクスチャのベイクで問題が起きます。
なのでSuvはオフにして作業している人が多いかと思います。
この問題はバージョン3.7くらいではすでに報告されており、昔から言われている問題です。
ここで問題なのが、ある程度のハイポリで他ソフト(SubstancePainterやMariなど)にモデルを持っていきたいときに、UVのSmoothがかかっていないLinear状態のモデルになってしまうので、レンダーするときのUVSmoothのオプションによってはマップにずれが生じます。
ReUV機能について
上記の問題を解決するのにReUV(RecalcUV)機能を使います。
SuvをONにしても既存のSubdivisionレベルのUVは更新されません。
ReUVを実行することで、現在のSubdivisionレベルに対してUV Smoothが再計算されます。
例えばsDiv5まであるモデルがあって、sDiv3のものを書き出したい場合。
①セーブする。
②sDiv3にする。(自分が書き出したいsDivレベルにする。)
③Suvをオン。
④Reuvを押す。
⑤モデル書き出しして、セーブせずZbrushを落とす。(Zbrush上では変更を保存したくないため)
以上です。
これでUVSmoothがLinearからPinBorderに変更されたモデルを受け渡しできます。
ZbrushのUV運用の結論
現状は
スカルプト作業中はSuvをオフ
必要に応じてReUVを使ってジオメトリ書き出しを行う
です。
異論は認めますが、いろいろな問題にぶつかってきた中で、現状これが一番無難です。