アルゴンUE4/UE5&アプリ開発日記

UE4/UE5の機能やプラグインを紹介します。初心者や中級者向けになってます!!

【UE5】WorldPartition関連の機能を使ったLandScape作り

アドカレ17日目の記事になります。

今回はWorldPartitionの一部を活用しつつ、

Stylizedな見た目の地形を生成していきたいと思います。

実際に出来上がったステージは下記のようになります。

今回作成したプロジェクトはgithubにて公開しております。

こちらを確認しながらこの記事を見ていただくと分かりやすいかなと思います。

※制作時間で言うと大体12時間程度になります。

※説明に誤り等ある場合はコメントでご報告いただけますと幸いです。

※UE5.0.3を使用しています。

各種モデルやマテリアルの作成

今回の地形を作成するにあたり一部モデリングソフトを使用します。

Blenderで草を作成していきます。

Blenderでの草モデル

それが完了したらFBXを持ち込みます。

持ち込んだらマテリアルを作成していきます。

草のマテリアルは下記になります。

草の色のグラデーション設定

草の動きを再現するマテリアル

あとはマテリアルインスタンスを作成しておきます。

各パラメータは下記になります。

◆AdditionalWPO → 2.0 GradientStremght → 1.0 WindIntensity → 1.2

草のマテリアルインスタンスのパラメータ設定

これで草の準備は完了になります。

続いて木の作成をしている工程をしていきます。

今回TreeITと呼ばれるツールで木を作成していきます。

こちらが紹介ページになるのでもしよろしければ使ってみてください。

他にもUE4の場合はProceduralTreeもあります。

実際にTree ITで木を作成していきます。

木の作成については下記の動画を元に作成しました。

TreeItではFBXで出力が行えるので出力します。

FBXで出力されたものをUE5上でインポートするとモデルとマテリアルが、

インポートされるようになります。

木のモデルとマテリアルのインポート

木の幹のモデルと葉っぱのモデルを結合して、

今回は利用しているのでツールメニューのアクタをマージします。

アクターのマージ

木のマテリアルと葉っぱのマテリアルを作成していきます。

まずは幹のマテリアルの作成になります。

※Normalのテクスチャについては、
 スターターコンテンツのTexturesフォルダにある、
    「T_Detail_Rocky_N」を使用します。

幹のマテリアル設定

続いて葉っぱの方のマテリアルを作成していきます。

葉っぱのマテリアルのBlendModeをMaskedに設定します。

BlendModeをMaskedに変更

続いて実際に葉っぱのマテリアルを作成していきます。

作成したマテリアルの設定は下記になります。

〇葉っぱのベースカラー

葉っぱのベースカラー

〇葉っぱのラフネス(1固定)

ラフネスの設定(1固定)

〇葉っぱのエミッシブ(影などの表現用)

葉っぱのエミッシブ(影などの表現用)

〇葉っぱのマスク用画像(簡単に葉っぱっぽいテクスチャを作成)

マスク用のテクスチャ画像

〇葉っぱの揺れを表現する

葉っぱの揺れ動作

最後にマテリアルインスタンスを生成してパラメータを調整します。

◆HueShift → 1.6 NPower → 1.3 SSPower → 1.3 AdditionalWPO → 0.95

木の葉っぱのマテリアルインスタンスのパラメータ

これで木の作成は完了になります。

最後にLandScape用のマテリアルも作成します。

※Normalのテクスチャについては、
 スターターコンテンツのTexturesフォルダにある、
    「T_Ground_Gravel_N」を使用します。

LandScapeの簡易マテリアル

LandScape周りの必要なものは完了になります。

最後に道に沿って配置する柵も作ります。

ちゃんと道っぽく見せるためのものになりますが、

こちらもBlenderとSubstancePainterで作成しています。

※だいぶ雑に作ってしまっているので個別に作成することをお勧めします。

柵のモデルを作成する

次は実際にLandScapeの作成やFoliageの作成を行っていきます。

・目次に戻る

LandScapeの作成とFoliageの準備

続いてLandScapeの作成とFoliageの準備をしていきます。

まずはモードを選択モードからランドスケープモードに変更します。

ランドスケープのモードに変更する。

変更したらLandScapeを作成していきます。

管理タブの状態で広さを指定して作成します。

マテリアルは先ほど紹介したLandScape用のマテリアルを使用します。

セクションサイズ15x15で2x2のセクションで作成します。

LandScapeの設定して作成する

実際に作成したらLandScapeに色付けするために、

ペイントタブに変更します。

ターゲットレイヤーのところに各マテリアルがありますが、

最初はレイヤーインフォのファイルが無いので、

一番右②のプラスボタンから作成します。

LandScapeのペイント設定

実際に地形に色を塗ります。

LandScapeの色を設定してみました。

皆さんはそれぞれ作成したい地形に合わせてペイントしてください。LandScapeで作成した地形作成

地形の作成は以上になります。

続いてフォリッジの作成になりますが草と木の作成は完了しているので、

スタティックメッシュフォリッジを作成します。

スタティックメッシュフォリッジの作成

フォリッジの設定については特に変更はしていません。

最後にWorldPatitionの機能を使用しつつステージを作ります。

・目次に戻る

WorldPartitionに合わせたオブジェクト配置

UE5から追加されたWorldPartitionの機能を使用して作成していきます。

まずはワールドセッティングの作成で「EnableStreaming」をONにします。

WorldPartitionのEnableStreamingをオン

これを使用することでWorldPartitionを活用することが可能です。

HLODについてはその他のHLODから作成することが可能です。

HLODの作成

実際に各モデルを配置していきます。

WorldPartitionではいくつかモデルの配置や設定で活用する機能があります。

①.LevelInstance

②.DataLayer

①のLevelInstanceから使用します。

こちら複数のアクタを組み合わせてサブレベルを作成して、

そちらをコピーすることで同様のものを配置したりできます。

今回は柵がいろいろあったのでそちらをLevelInstanceでまとめています。

※細かくして複数のLevelとしてON・OFFするのが正しいですがまとめてます…

今回は柵を選択して右クリックするとLevelInstanceを作成します。

レベルインスタンスの作成

レベルインスタンスの作成を選択すると、

中心を指定するダイアログが開くので設定してあげます。

その後レベルを保存します。

レベルインスタンスの作成ダイアログ

これでLevelInstaceの設定は完了になります。

編集する際はLeveLInstanceの詳細の中にある編集ボタンを押すと編集できます。

LevelInstanceの編集

編集画面になると白画面になりますがGキーを押すことで、

ゲーム画面表示にすることが可能です。

DataLayerの技術的な部分は下記アドカレの資料が参考になるかと思います。

つづいて②のDataLayerを元に各種foliageを表示するようにしていきます。

DataLayerで何が行えるのかというと指定したレイヤーに合わせて、

各種オブジェクトを表示・非表示(ロードアンロード)の設定を行うことで、

同じマップでも違ったマップを表現したりするための仕組みになります。

DataLayerの設定を行う前にデータレイヤーアウトライナの設定をします。

データレイヤーの設定をするウィンドウが無いので、

ウィンドウメニューから追加します。

データレイヤーアウトライナを選択する。

選択するとデータレイヤー設定用のウィンドウが表示されます。

右クリックするとデータレイヤー用のメニューが表示されます。

「データレイヤーを新規作成」を選択してレイヤーを指定します。

データレイヤー用のメニューの表示

今回は木と草用のレイヤーを作成して、

初期状態で表示するのをOFFにして、ランタイム動作するようにしてます。

※画像では草のレイヤーを選択していますが木のレイヤーも同様の設定です。

データレイヤーの設定

各データレイヤーの設定が完了したら、

データレイヤーに合わせてフォリッジを配置していきます。

Grassのデータレイヤーに対して草のモデルを配置します。

フォリッジの設定について

実際にフォリッジをデータレイヤーに合わせて配置すると下記のようになります。

〇草のレイヤーのみを表示した場合

LandScapeの草のレイヤーを表示

〇木のレイヤーのみを表示した場合LandScapeの木のレイヤーを表示

今回用意しているサンプルプロジェクトでは、

レイヤーごとの割り当てが分かりやすくするために、

キャラクター側で各種レイヤーのONとOFFをできるようにします。

※実際のゲームで使用する場合はコリジョンやマップロード時など、
 ON・OFFするようにして対応するのが良いかと思います。

〇草のレイヤーのONとOFFをする処理

草のデータレイヤーのオン・オフ

〇木のレイヤーのONとOFFをする処理

木のデータレイヤーのオン・オフ

これでデータレイヤーの作成は完了になります。

次にランタイムグリッド設定をしていきます。

ワールドセッティングからランタイム設定でGridsの設定をします。

※Minimapの表示の切り替えやセルの表示の変更で使用します。

HLODのGrid表示の設定

ミニマップについて少し説明します。

ミニマップとはLandScapeを2D上で表示して、

指定したセルの大きさごとにそのLandScapeの箇所を表示したり、

非表示にしたりすることできる機能になります。

表示したい領域をドラッグアンドドロップで選択し、

右クリックすることでロードまたはアンロードするメニューが開けます。

WorldPartitionMiniMapで行えること

最後にHLODのビルドとミニマップをビルドします。

最初にHLODをビルドしてその後ミニマップをビルドするのが良いです。

HLODとミニマップをビルド

ビルドする際にHLODをビルドする際に一度削除してから、

HLODをビルドするのが良いかなと思います。

HLODの削除とビルドの順番

これでWorldPartitionの設定の話は以上になります。

・目次に戻る

補足情報と参考資料などの紹介

Foliageについても実験段階ですが新しい方法があり、

こちらを使用する方法がFoliageでは将来多くなるかもしれません。

それから下記のリンクの動画やページを参考に、

今回の記事を作成させていただきました。

Unreal Engine の World Partition | Unreal Engine 5.0 ドキュメント

Large worlds in UE5: A whole new (open) world | Unreal Engine - YouTube

New World Building Features | Inside Unreal - YouTube

UE5 World Partition / Getting Started Tutorial - YouTube

Stylized Environments in Unreal | Course Trailer | Available Now - YouTube

以上になります。

・目次に戻る