【UE5】Mass AIを動かしてみる - Part1 表示するまで
はじめに
Mass AIを動かすまでの手順をまとめる。全部で3パート。
Part 1 - 表示するまで(ここ)
Part 2 - 動かす
Part 3 - アニメーション
- はじめに
- 0. Blueprint Third Personテンプレートで新しいプロジェクトを作成する
- 1. 必要なプラグインを有効化
- 2. Project Settings -> Engine -> Zone Graph でセットアップ
- 3. Characterクラスを継承したブループリントを作成
- 4. Mass Entity Config Asset構造体を継承した Data Asset を作成
- 5. 4番で作成したData Assetをセットアップ
- 6. レベルにZone Shapeアクターを追加する
- 7. レベルにZone Graph Dataアクターを追加する
- 8. ツールバー -> Build -> Build Zone Graph をクリックする
- 9. レベルにMass Spawnerアクターを追加する
- 10. 動作確認
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のチェックを外している。