LoginSignup
0
0

【UE5】Geometry Scripting:プロシージャルに石畳や岩場をつくる【追記】

Last updated at Posted at 2023-09-24

対象バージョンUE5.2.1

Geometry Scriptingを使うには「Geometry Script」プラグインを有効にする必要があります。

はじめに

プロシージャルに石畳や岩場を作る【前編】【後編】では、UVのUnwrapは手動で行うしかないようだと書いたが、後日、Unwrapを行うノードが見つかったので、ここに紹介する。

【前編】【後編】のブループリントグラフの修正箇所

【前編】【後編】どちらも、「Set Mesh UVs From Planar Projection」を使ってXY平面による投影でUVを作っていた。
これを以下のように書き換える。

Before

20230924_01_UnwrapBefore.jpg

After

20230924_02_UnwrapAfter.jpg

  • 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空間での面積が非常に小さい。(結果、テクスチャが延びる)
20230924_04_UV_PlanarProjection.jpg

Recompute Mesh UVs後

ポリゴンの面積などの応じてええ感じにUVを調整してくれているはずだが、UV座標に非常に大きな値が入っているため、UVエディタの限界まで広げてみても、まだ画面に収まらない。これを次のRepackで修正する。
20230924_05_UV_Recompute.jpg

Repack Mesh UVs後

Repackで(0,0)~(1,1)の範囲に収まったので、やっとRecompute Mesh UVsの結果が確認できる。
3D空間で垂直に近い面でも、UV空間でも十分な面積が得られ、テクスチャが延びなくなった。
※代償として、3D空間で水平に近い面の面積が多少小さくなるが、許容できる範囲だろう。
20230924_06_UV_Repack.jpg

Scale Mesh UVs後

(0,0)~(1,1)の範囲に収まっている状態だと、岩に対してテクスチャが大きすぎるので、スケールをかけてタイリングを起こす。これで、程よい密度感になった。
20230924_07_UV_Scale.jpg

結果の比較

左:以前の方法(平面投影のみ)、右:今回の方法(Unwrap)。
中央奥は平行投影のみのものをStatic Mesh化してから、UVエディタでUnwrapしたもの。
中央奥と同様、右は垂直面でのテクスチャの延びがなく、見た目も遜色ない。
これでStatic Mesh化してからUVエディタで調整する手作業が不要になった。
20230924_03_Compare.jpg

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0