対象バージョンUE5.2.1
Geometry Scriptingを使うには「Geometry Script」プラグインを有効にする必要があります。
はじめに
プロシージャルに石畳や岩場を作る【前編】と【後編】では、UVのUnwrapは手動で行うしかないようだと書いたが、後日、Unwrapを行うノードが見つかったので、ここに紹介する。
【前編】【後編】のブループリントグラフの修正箇所
【前編】と【後編】どちらも、「Set Mesh UVs From Planar Projection」を使ってXY平面による投影でUVを作っていた。
これを以下のように書き換える。
Before
After
- Set Mesh UVs From Planar Projectionは残しておく。Unwrapには元となるUVマップが必要だが、平面投影で作られたUVマップはUnwrapのためには都合が良い形をしているため。
- Recompute Mesh UVs:これがUnwrap相当の処理をしてくれるノード。ただし、UV値にリアルスケールでの数値が入る(…と思われる)挙動をするので、この後、UV値の大きさを調整した方が良い。
- Repack Mesh UVs:UVアイランドの重なりなどを解消して、(0,0)~(1,1)の範囲にすべてのUVアイランドが入るように、並べなおしてくれる。
- Scale Mesh UVs:タイリングの密度をスケーリングで調整する。Repack Mesh UVsで(0,0)~(1,1)の範囲に入ってくれているので、どれだけスケーリングすればよいかのイメージは湧きやすい。
以下に、これらのノードによってUVがどのように変化するかを紹介する。
Set Mesh UVs From Planar Projection後
XY平面に投影された状態なので、3D空間では垂直に近い面が、UV空間での面積が非常に小さい。(結果、テクスチャが延びる)
Recompute Mesh UVs後
ポリゴンの面積などの応じてええ感じにUVを調整してくれているはずだが、UV座標に非常に大きな値が入っているため、UVエディタの限界まで広げてみても、まだ画面に収まらない。これを次のRepackで修正する。
Repack Mesh UVs後
Repackで(0,0)~(1,1)の範囲に収まったので、やっとRecompute Mesh UVsの結果が確認できる。
3D空間で垂直に近い面でも、UV空間でも十分な面積が得られ、テクスチャが延びなくなった。
※代償として、3D空間で水平に近い面の面積が多少小さくなるが、許容できる範囲だろう。
Scale Mesh UVs後
(0,0)~(1,1)の範囲に収まっている状態だと、岩に対してテクスチャが大きすぎるので、スケールをかけてタイリングを起こす。これで、程よい密度感になった。
結果の比較
左:以前の方法(平面投影のみ)、右:今回の方法(Unwrap)。
中央奥は平行投影のみのものをStatic Mesh化してから、UVエディタでUnwrapしたもの。
中央奥と同様、右は垂直面でのテクスチャの延びがなく、見た目も遜色ない。
これでStatic Mesh化してからUVエディタで調整する手作業が不要になった。