密集回避の概要

Unreal Engine 5 での密集回避システムの概要

概要

密集回避 は、MassEntity と統合されているフォースベースの回避システムです。このシステムは、MassEntity システムを使用しているエンティティに対する高性能な回避を提供します。

このシステムは、UMassMovingAvoidanceProcessor を使用して、さまざまな入力を処理し、FMassForceFragment へのステアリング フォースを出力します。この出力フォースを使用して、環境内にある他のエンティティから離してエンティティを操縦します。

システムの入力

入力

説明

FMassForceFragment

エンティティを他のエンティティから遠ざけるためにエンティティに適用されるフォースを表します

FMassNavigationEdgesFragment

エンティティによって回避に使用されるエッジ (壁) のリストを指定します。

FMassMoveTargetFragment

エンティティの目的地を表します。前方方向や現在位置 (立ち止まっている、動いている、など) などの追加情報も入っています。

FDataFragment_Transform

エンティティのトランスフォームを表します。

FMassVelocityFragment

エンティティのトランスフォームを表します。

FDataFragment_AgentRadius

エンティティの半径を表します。

システムの出力

出力

説明

FMassForceFragment

エンティティに適用される最終的なステアリング フォース。

システムの実行

UMassMovingAvoidanceProcessor

UMassMovingAvoidanceProcessor は、各エンティティに対する分離フォースと回避フォースの合計を計算します。それらのフォースは、隣接するエンティティおよび障害物によって生じます。

他のエンティティはコライダーとして表され (FMassAvoidanceColliderFragment を参照)、カプセル形状または丸薬の形状を持つことができ、それぞれ人間と車両に使用されます。いくつかの設定を調整して、これらのフォースの効果のバランスを取ることができます。

隣接するエンティティは FNavigationObstacleHashGrid2D (UMassNavigationSubsystem が所有) を使用して収集され、最も近いエンティティだけが考慮されます。障害物はエッジとして表され、FMassNavigationEdgesFragment から生じます。 回避フォースは予測的であるため、その方向は将来の衝撃位置から計算されます。分離フォースは、環境から緩い距離を維持することを目的とする垂直フォースです。

UMassStandingAvoidanceProcessor

UMassStandingAvoidanceProcessor は、エンティティが静止している場合に使用される類似プロセッサです。

UMassNavigationObstacleGridProcessor

The UMassNavigationObstacleGridProcessor は、障害物のグリッド位置を FNavigationObstacleHashGrid2D に更新するために使用されます。

UMassZoneGraphLaneCacheBoundaryProcessor

UMassZoneGraphLaneCacheBoundaryProcessor は、ZoneGraph と併用され、現在キャッシュされている先行のレーン セグメントからエッジを構築します (FMassZoneGraphCachedLaneFragment および FMassZoneGraphPathFollowTask を参照)。

それらのエッジは FMassNavigationEdgesFragment に追加されています。

システムの設定

密集回避の設定は FMassMovingAvoidanceParametersFMassStandingAvoidanceParameters に格納されています。利用可能なすべての設定の詳しい説明については、プロジェクト ファイルにある「MassAvoidanceFragments.h」を参照してください。

密集回避をデバッグする

密集回避システムをデバッグするには、ビジュアル ロガー および ゲームプレイ デバッガ を使用します。

ビジュアル ロガー

ビジュアル ロガー を使用すると、エディタで以下のカテゴリを表示できます。

Category

説明

LogAvoidance

基本情報 (初期および最終的なステアリング フォースや現在のエンティティなど) が表示されます。

LogAvoidanceVelocity

エンティティの現在の速度および望ましい速度が表示されます。

LogAvoidanceAgents

障害物のエッジ、予測コリジョン、エンティティと関連付けられているフォースが表示されます。

ビジュアル ロガーを有効にする

  1. [Tools (ツール)] > [Debug (デバッグ)] > [Visual Logger (ビジュアル ロガー)] の順にクリックすると、[Visual Logger] ウィンドウが開きます。

    Click Tools - Debug - Visual Logger to open the Visual Logger window

  2. リストから MassSimulationSubsystem トラックを選択します。

  3. [Edit (編集)] > [Editor Preferences (エディタの環境設定)] の順に選択すると、[Editor Preferences] ウィンドウが開きます。[Visual Logger] カテゴリをクリックし、[Stick to Recent Data (最新のデータに固定)] チェックボックスをオンにすると、リアルタイム データが表示されます。

  4. ~ キーを押すと コマンドライン が開くので、「ai.debug.mass.DebugEntity」 または 「ai.debug.mass.SetDebugEntityRange」 と入力して、デバッグ中に表示されるエンティティを設定します。

  5. [Play Settings menu (プレイ設定メニュー)] をクリックすると、デバッグ ビジュアライゼーションがエディタに表示されます。

    Press Simulate

    Press Simulate to see the debug visualizations in the editor

ビジュアル ロガーの使用の詳細については、「ビジュアル ロガー」ドキュメントを参照してください。

ゲームプレイ デバッガ

ゲームプレイ デバッガ を使用して、エンティティに対する MoveTarget、ステアリング、コライダーなどの情報をエディタに表示できます。

ゲームプレイ デバッガを有効にする

ゲームプレイ中に ` キーを押すと、ゲームプレイ デバッガが有効になります。Shift+O キーを押すと エンティティの概要 が表示され、Shift+V キーを押すと 回避 が表示されます。

During gameplay, press the ` key to activate the Gameplay Debugger

密集回避でゲームプレイ デバッガを使用する方法の詳細については、「GameplayDebuggerCategory_Mass.cpp」ソース ファイルを開いてください。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル