PavilionDV7の雑多なやつ

Qiitaから移行しました。UE4に関する記事から興味のあることまで色々書きます。

【UE5】Mass AIを動かしてみる - Part1 表示するまで

はじめに

Mass AIを動かすまでの手順をまとめる。全部で3パート。

Part 1 - 表示するまで(ここ)
Part 2 - 動かす
Part 3 - アニメーション

使用しているUE5バージョン : UE 5.0.1

0. Blueprint Third Personテンプレートで新しいプロジェクトを作成する

1. 必要なプラグインを有効化

  • Mass AI
  • Mass Crowd
  • Mass Entity
  • Mass Gameplay
  • Zone Graph
  • Zone Graph Annotations
  • 有効後、プロジェクトを再起動

2. Project Settings -> Engine -> Zone Graph でセットアップ

Lane Profile の作成。名前は[Sidewalk](歩道)とし、2つのレーンを作成する。それぞれDirection[Forward][Backward]に設定する。
Widthは歩道の幅を表す。300はかなり広く、商店街のメインストリートくらい。

Tags でLaneの用途を表すタグ名を定義。ここでは[Pedestrian](歩行者)とする。
セットアップ終了時点でこのようになる。

City Sampleでは多くのタグが定義されている。どのような用途のレーンがどのような名前で定義されているのか、覗いてみると面白い。

3. Characterクラスを継承したブループリントを作成

ブループリントの名前は[BP_MassCrowdAgent]とする。

Skeletal Mesh Component の子として[Cube Component]を追加。CubeのScaleを[X:0.5 Y:0.5 Z:1.0]にする。

4. Mass Entity Config Asset構造体を継承した Data Asset を作成

Content Browser で右クリック -> Miscellaneous -> Data Asset

一覧から[Mass Entity Config Asset]を選択。

作成したData Assetの名前を[MyMassEntityConfig]とする。

5. 4番で作成したData Assetをセットアップ

[Traits] の+ボタンをクリックし[Assorted Fragments]を追加。

Assorted Fragmentsを展開し[Fragments]の+ボタンをクリック。[Mass Actor Fragment]を追加。

Traits の+ボタンをクリックし[Crowd Visualization]を追加。

Static Mesh Instance Desc -> Meshesの+ボタンを押す。
Mesh に適当なスタティックメッシュを指定。(ここではThird Person Templateに含まれるスタティックメッシュを指定している)
別途指定するマテリアルがあれば Material Overrides にマテリアルを指定。

※ここで指定したマテリアルでは[Used with Instanced Static Meshes]にチェックを入れておく必要がある。画像内で指定しているマテリアルはUsed with Instanced Static Meshesにチェックを入れた自作のマテリアル

High Res Template Actor と Low Res Template Actor に3番で作成したブループリント([BP_MassCrowdAgent])を指定する

LOD ParamsのBase LOD DistanceとVisible LOD Distanceにそれぞれ値を入力する

Traitsに[Crowd Member] [Simulation LOD] [LOD Collector]を追加


これまでに追加したTraitsは特に順番を入れ替えても動作に影響はなさそう。

記事執筆時点でこれらのTraitがどのような用途であるのか、何をしているのかについては全く調べていない。

6. レベルにZone Shapeアクターを追加する

座標を[X:0.0 Y:0.0 Z:0.0]に移動する。 Zone Shapeの形はスプラインで定義されているので、好きな形に編集する。(画像内の数値は設定例)
Zone プロパティに2番で作成したLane Profile([Sidewalk])をセットし、Tags に[Pedestrian]を指定する。

Lane Profileによってレーンの性質(道幅、一方通行等)を決定し、Tagsでレーンの属性(歩道、自動車道等)を決定する。

7. レベルにZone Graph Dataアクターを追加する

座標はどこでもよし。

8. ツールバー -> Build -> Build Zone Graph をクリックする

PキーでNavigation表示し、Zone Shapeがその位置で描画されているかチェックする。
無事にビルドできていればZone Shapeを移動させても、そこに描画されたままになる。
黒色のラインと重なっているが仕様。特に気にする必要はない。

9. レベルにMass Spawnerアクターを追加する

座標はどこでもよし。

追加したMass Spawnerアクターを選択し、Mass プロパティをセットアップする。
Count に生成したいエージェントの数を指定。(まずは10体)
Entity Typesの+ボタンを押し、追加された要素を展開。Entity Configに4番で作成したData Assetを指定する。

Spawn Data Generatorsの+ボタンを押す。Generator Instance に[Zone Graph Spawn Points Generator]を指定。

Generator Instance を展開。Tag Filter の Any Tags に[Pedestrian]を指定する。(Pedestrianのタグが付与されたレーンにのみエージェントがスポーンする)

10. 動作確認

プレイしエージェントがスポーンされているか確認する。
画像は「シミュレーション」で実行し、Zone Shape内にきちんとスポーンされていることを確認している。
スポーンされるエージェントにはCube Componentに加えて「Arrow Component」を追加し、Hidden In Gameのチェックを外している。