【Blender】UVのミラー反転コピー
左右対称で作成した3DモデルのメッシュをUV展開した際、左右線対称で展開していない場合がある。
テクスチャーを均一に表示させるためには、UVも左右対称の方がよいのではないか。(※精度を求めない場合は、この限りではないが)
ということで、今回、標準機能のミラー反転コピーで、UVを左右対称にする方法がわかったのでメモしておく。
<Blender2.91>
関連記事はこちら。
■大雑把な流れ
1.2DカーソルをUV空間の中心に配置する。(位置を合わせの基準)
2.X軸で左右対称になるようにUVアイランドを配置する
3.反転コピーしたいUVアイランドを選択して、
UV>ミラー>UV座標をミラー反転コピー を実行する
4.UVアイランドをUV空間に納まるように梱包して完成。
■やり方説明
今回は、標準で用意されているメッシュのUVを利用して説明する。
オブジェクトモード:追加>メッシュ>Monkey を作成。
UVアイランドをよく見ると左右対称形状ではなく、微妙に歪んでいる。
まずは、基準位置を作成。2Dカーソルを数値入力で配置する。
2Dカーソル>カーソル位置 のX、Y座標値に0.5を入力。
すると2Dカーソルが中心に配置される。
眼、耳、顔面頭部が、それぞれ線対称になるように配置する。
眼と耳のUVアイランドは、左右のパーツを両方を選択した状態で、UV頂点設定>X座標値に0.5を入力して中央揃えにする。
眼、耳で、左右のパーツの配置間隔は任意で問題ない。
顔面頭部パーツのように基準2Dカーソル位置と線対称の中心軸がずれている場合は、手動で移動して合わせる。下図をみると左右不均等だが、この段階では問題ない。基準に合わせることが重要。
これで下準備が整った。
あとは、歪んだUVを編集していくだけ。
<UVのミラー反転コピー>
この時、顔面頭部の中心線が歪んでいるので、中心線にある全ての頂点を選択して、UV>整列>自動整列を実行して直線にする。
基準となる2Dカーソルとグリッド線を目視で確認しながら合わせる。ぴったり合わせたいところだが、標準だときっちり合わせる方法が見つからなかった。大体合っていればOK。(顔面頭部は、UVが左右対称ではないので、数値入力しても無駄)。
顔面頭部のUVアイランドを選択した状態で、UV>ミラー>UV座標をミラー反転コピー を実行する。必要ならオプションウィンドウで、軸方向を切り替えるて、ミラー反転コピー先を変更することができる。(設定で、正方向、負方向を選択する)。
<目の方向ずれの修正>
左右の眼は、UV展開した時にUVアイランドが回転しているのでお互いに向いている方向が異なる。UV座標をミラー反転コピーを実行する前に方向ををあわせておくと後が楽。それから、方向をあわせてミラー反転コピーした後、UVアイランドの一部が崩れた場合は、崩れている部分のエッジを選択してスティッチでUV同士をくっつけて修復する。
※上図で、眼のサイズを大きくしている理由は、UV編集をやりやすくするため。左右の眼の向きをは、テクスチャーの文字の方向で判断している。調整が済んだ後は、UV>アイランドの大きさを平均化 で、適切なサイズに調整できるので心配無用。
<UVアイランドを梱包>
あとは、各UVアイランドを整理した状態に配置して、下記のコマンドを順番に実行すると、各UVアイランドがUV空間に梱包して完成。
1. UV>アイランドの大きさを平均化(UV解像度を自動で合わせる)
2. UV>アイランドを梱包(1,1のUV空間に自動でUVを収める)
※梱包時、UVアイランドが回転して欲しくない場合は、
オプションで、回転を無効にする。
■トラブルシューティング
顔面頭部のUVマップで、UV座標をミラー反転コピーした後、UVアイランドが2つに分割された場合がある。この状態で、アイランドの大きさを平均化、アイランドを梱包するとUVアイランドが崩れてしまう。
修正方法は、中心軸の頂点を選択した状態で、UV>マージ、または、Merge by Distanceを実行して、くっつける。余計な頂点がくっつく場合は、オプションで数値を小さくしたり、個別にマージしたり、Center合わせでマージするなど工夫する。
■所感
ミラー反転コピーが使えることで、UVの半分を編集するだけで帳尻を合わせられることが可能で効率的だった。合わせてミスも抑制できた。ただ、下準備に少々手間がかかるのがマイナスポイント。
あと、今回作業を進めていて気が付いたのだが、下記のようなUVアイランドのレイアウトを整える機能が見つからなかった。存在しないのかもしれない。
・UVアイランドの傾きを補正して真っ直ぐに整える機能(Align Edge)
・複数のUVアイランドを揃える配置する機能(Align Island)
・UVアイランドを90度単位で回転する機能(90 Degree Rotation)
機能不足は、作業の効率性に関わる。
Add-onを導入した方が便利だし、なにより時短できる。
■無料Add-onを併用
有志がBlender2.8+対応移植したAdd-on:Tex toolsは、こちら。
選択した複数頂点を揃える機能があって便利。
https://github.com/SavMartin/TexTools-Blender
あと、有名どころだと無料版の方のUV Toolkitのミラー>UV座標をミラー反転コピー を行うと今回紹介した作業が1つ省ける。(2Dカーソルをセンター合わせにする)
2つまたは、1つのUVアイランドを線対称の中心位置をセンターに合わせて、実行するだけ。
ただ、1つのUVアイランドを線対称にする場合は、頂点が重複してしま場合がある。この場合は、手作業で修正するか実行する前に中心軸の頂点を調整してから行うとよい。
■UVのシンメトリ編集可能な有料Add-on
Blender Marketで見つけたのでメモ。
「Symmetrize Uv Util」
https://blendermarket.com/products/symmetrize-uv-util
以上。