今回はUnreal Engine 5.2の新機能PCGのグラフとノードを簡単に紹介する記事です。
PCG(Procedural Content Generation)とは、ノード形式でシーンを動的に作成できる機能です。
準備
本記事はこちらのアセットパッケージを使用しました。
https://www.unrealengine.com/marketplace/ja/product/advanced-village-pack
ノード解説
シンプルなグラフで少しずつ説明していきます
ランドスケープにメッシュをランダムな位置に配置するグラフ
1) Get Landscape Data
ランドスケープのデータを取得するノード。グラフのInputノード→Landscapeを使っても同じ効果がありますが、UE5.3ではDeprecatedとなっているため専用ノードを使います。
2) Surface Sampler
Surface(ランドスケープ入力)からランダムの点群を作成するノード。
Extent入力は自作Vector関数で、一つのポイントのサイズを調整しています。関数にしなくてもグラフ内で設定できますが、関数にすればアクターから直接に調整できるようになります。
ポイントのランダム性を調整するパラメーター:
- Points Per Squared Meter (1平方メートルで何回ポイント配置するのか、1より下の数字は確率になります)
- Looseness(配置の緩さ?サンプリングスケールみたいなもので、大きければ配置の全体スケールが拡張されます)
Point Extents より小さく配置されないので要注意です
(追記:Point Extentsをメッシュのサイズにするときれいに配置できる場合が多いです)
3) Transform Points
ポイントをさらに微調整するためのノード。ここではZ軸の回転をランダムになるよう調整しました。
Absolute にチェックを入れていないので調整していない数値はSurface Samplerから引き継がれます。
4) Static Mesh Spawner
ポイントの位置にメッシュを配置するノード。ここでは草のメッシュを3種類用意しました。この3種類のWeight値で配置されるメッシュが決められます。全部1の場合は均等に配置されます。
以上のグラフを別のメッシュで重ねて設定し、
ポストプロッセスを調整したら簡単にミステリアスな森が作れます
Extentサイズや密度が違うメッシュでは個別のSurface Samplerで設定を変えています
終わりに
簡単なグラフでここまでできてシーンのブロックアウトがしやすく、極めれば非常に強力なツールだと感じました。今回はPCGの一番基本な部分しか触れておらず、スプラインに沿って配置することや、Blueprintとの連携など複雑なこともできますので、今後の記事でまた他の機能も紹介したいと思います。