4.

UE5「古い HLOD アクタを検出」の対処法完全ガイド

編集
この記事の要点
  • Unreal Engine 5 の World Partition + HLOD 環境で表示される警告
  • 原因: シーン変更後に HLOD(Hierarchical Level of Detail)が再生成されていない
  • 対処: メニューから Build → Build HLODs を実行 → 保存
  • コマンドラインなら WorldPartitionBuilderCommandlet を使用
  • Nanite + HLOD の組み合わせ、Streaming Source、Memory Budget も併せて確認

警告の概要

Unreal Engine 5 の World Partition 機能を使ったレベルを開いたとき、出力ログやマップチェックに次のような警告が表示されます:

LogWorldPartition: Warning: Found 23 stale HLOD actors. HLODs need to be rebuilt.
LogWorldPartition: Please run "Build > Build HLODs" or use the WorldPartitionBuilderCommandlet.

MapCheck: 古い HLOD アクタを検出しました。HLOD をリビルドする必要があります。

HLOD とは

Hierarchical Level of Detail (HLOD) は、遠距離のオブジェクト群を 1 つの結合メッシュにまとめて描画コール・三角形数を削減する仕組みです。World Partition と組み合わせて広大なオープンワールドを実現します。

距離表示負荷
近距離 (0-100m)個別 Actor / Nanite Mesh高品質・高負荷
中距離 (100-500m)HLOD Level 0(結合メッシュ)中品質・中負荷
遠距離 (500m-)HLOD Level 1+ / Imposter低品質・低負荷

原因

  • HLOD 生成後に新しい Actor を追加した
  • 既存 Actor の Transform / Mesh を変更した
  • Actor を削除した
  • HLOD Layer 設定を変えた
  • Git 等で別環境から HLOD 未生成のデータを取得した

対処1: Editor から Build HLODs

  1. レベルを開く(World Partition のレベル)
  2. メニューから Build → Build HLODs
  3. ダイアログで Build 範囲を選択(Whole Map / Selected Cells)
  4. 完了するまで待つ(数分〜数十分、規模次第)
  5. レベルを保存(Ctrl+S)

対処2: コマンドラインで Build

大規模マップは Editor がフリーズしがちなので、コマンドライン Commandlet が推奨:

# Windows
"C:\Program Files\Epic Games\UE_5.3\Engine\Binaries\Win64\UnrealEditor-Cmd.exe" ^
  "C:\Path\To\MyProject\MyProject.uproject" ^
  -run=WorldPartitionBuilderCommandlet ^
  /Game/Maps/MyOpenWorld ^
  -Builder=WorldPartitionHLODsBuilder ^
  -AllowCommandletRendering ^
  -unattended

# Linux / Mac
./UnrealEditor-Cmd \
  /path/to/MyProject.uproject \
  -run=WorldPartitionBuilderCommandlet \
  /Game/Maps/MyOpenWorld \
  -Builder=WorldPartitionHLODsBuilder \
  -AllowCommandletRendering

HLOD Layer の設定

各 Actor は HLOD Layer プロパティを持ち、どのレイヤーに属するかで生成方法が決まります:

HLOD Layers(典型例):

HLODLayer_Mesh         ← 通常メッシュ (StaticMesh を結合)
  → Source: StaticMesh
  → Algorithm: Mesh Merge
  → Loading Range: 25600 (256m)

HLODLayer_Instancing   ← 大量配置 (Foliage / Grass)
  → Source: ISM (Instanced Static Mesh)
  → Algorithm: Instancing
  → Loading Range: 51200 (512m)

HLODLayer_Imposter     ← 遠景ビルボード
  → Source: StaticMesh
  → Algorithm: Imposter
  → Loading Range: 102400 (1024m)

Content Browser で右クリック → Miscellaneous → HLOD Layer で作成します。

Streaming Source(プレイヤー周辺をロード)

World Partition はStreaming Source の周囲だけをロードします。HLOD 生成前にこの設定が必要:

// プレイヤーキャラクターに WorldPartitionStreamingSourceComponent を追加
APlayerCharacter::APlayerCharacter()
{
    StreamingSource = CreateDefaultSubobject(
        TEXT("StreamingSource"));
    StreamingSource->TargetGrid = TEXT("MainGrid");
    StreamingSource->Priority = EStreamingSourcePriority::High;
}

Nanite と HLOD

Unreal Engine 5 の Nanite は数千万ポリゴンを描画できる仕組みですが、HLOD は依然として必要です:

  • Nanite はメッシュごとの描画コールは減らさない → 大量 Actor がある場合 HLOD で結合
  • Foliage / Instanced Static Mesh は Nanite 対応しても HLOD でまとめるとカリングが効率化
  • 動的ライティングは HLOD 化されたメッシュには適用されない → Lightmass / Lumen 設定要確認

Memory Budget の設定

Project Settings → World Partition

Streaming Performance:
  Editor Streaming Disabled: false
  Server Streaming Out Enabled: true
  Memory Budget MB: 4096    ← 一度にロードするセルの合計上限

Runtime Hash:
  Grid Cell Size: 25600 (256m × 256m)
  Loading Range: 51200 (512m)

確認方法

  • Window → World Partition → Map Check で HLOD 警告を確認
  • Show → Visualize → HLOD Outline で生成済領域を可視化
  • stat WorldPartition で実行時のロード状況確認
  • wp.Runtime.ToggleDrawRuntimeHash3D で 3D 表示

FAQ

Q: Build HLODs に何時間もかかる
A: 大規模マップは仕方ない。コマンドライン Commandlet で夜間バッチとして実行することを推奨。

Q: ビルド後も警告が消えない
A: 別のレベルが古い HLOD を持っている可能性。すべての World Partition レベルでビルド実行が必要。

Q: Git でチームと HLOD データを共有すべきか
A: HLOD は巨大なファイルになるので Git LFS が必須。または CI で毎回再生成する運用も多い。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. SetInputMode_UIOnlyは、'PlayerController'ターゲットとして有効なプレイヤーコントローラーを想定しています
  2. 無限ループが検出されました
  3. ~は表示されるブループリント(BlueprintReadOnlyまたはBlueprintReadWrite)ではありません。これは将来のリリースでエラーとなるため、マークアップを修正するかアクセスを停止してください。
  4. 古いHLODアクタを検出、HLODをリビルドする必要があります
  5. ブループリントランタイム エラー: "プロパティ ~ の読み取りを試行するためのアクセスはありません"
  6. 「AI Move To」が「Aborted」で失敗
  7. 「AI Move To」が「Blocked」で失敗