この記事の要点
- Unreal Engine 5 の World Partition + HLOD 環境で表示される警告
- 原因: シーン変更後に HLOD(Hierarchical Level of Detail)が再生成されていない
- 対処: メニューから Build → Build HLODs を実行 → 保存
- コマンドラインなら
WorldPartitionBuilderCommandletを使用 - Nanite + HLOD の組み合わせ、Streaming Source、Memory Budget も併せて確認
1警告の概要
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 をリビルドする必要があります。
2HLOD とは
Hierarchical Level of Detail (HLOD) は、遠距離のオブジェクト群を 1 つの結合メッシュにまとめて描画コール・三角形数を削減する仕組みです。World Partition と組み合わせて広大なオープンワールドを実現します。
| 距離 | 表示 | 負荷 |
|---|---|---|
| 近距離 (0-100m) | 個別 Actor / Nanite Mesh | 高品質・高負荷 |
| 中距離 (100-500m) | HLOD Level 0(結合メッシュ) | 中品質・中負荷 |
| 遠距離 (500m-) | HLOD Level 1+ / Imposter | 低品質・低負荷 |
3原因
- HLOD 生成後に新しい Actor を追加した
- 既存 Actor の Transform / Mesh を変更した
- Actor を削除した
- HLOD Layer 設定を変えた
- Git 等で別環境から HLOD 未生成のデータを取得した
4対処1: Editor から Build HLODs
- レベルを開く(World Partition のレベル)
- メニューから Build → Build HLODs
- ダイアログで Build 範囲を選択(Whole Map / Selected Cells)
- 完了するまで待つ(数分〜数十分、規模次第)
- レベルを保存(Ctrl+S)
5対処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
6HLOD 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 で作成します。
7Streaming Source(プレイヤー周辺をロード)
World Partition はStreaming Source の周囲だけをロードします。HLOD 生成前にこの設定が必要:
// プレイヤーキャラクターに WorldPartitionStreamingSourceComponent を追加
APlayerCharacter::APlayerCharacter()
{
StreamingSource = CreateDefaultSubobject<UWorldPartitionStreamingSourceComponent>(
TEXT("StreamingSource"));
StreamingSource->TargetGrid = TEXT("MainGrid");
StreamingSource->Priority = EStreamingSourcePriority::High;
}
8Nanite と HLOD
Unreal Engine 5 の Nanite は数千万ポリゴンを描画できる仕組みですが、HLOD は依然として必要です:
- Nanite はメッシュごとの描画コールは減らさない → 大量 Actor がある場合 HLOD で結合
- Foliage / Instanced Static Mesh は Nanite 対応しても HLOD でまとめるとカリングが効率化
- 動的ライティングは HLOD 化されたメッシュには適用されない → Lightmass / Lumen 設定要確認
9Memory 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)
10確認方法
- Window → World Partition → Map Check で HLOD 警告を確認
- Show → Visualize → HLOD Outline で生成済領域を可視化
stat WorldPartitionで実行時のロード状況確認wp.Runtime.ToggleDrawRuntimeHash3Dで 3D 表示
11FAQ
Q: Build HLODs に何時間もかかる
A: 大規模マップは仕方ない。コマンドライン Commandlet で夜間バッチとして実行することを推奨。
Q: ビルド後も警告が消えない
A: 別のレベルが古い HLOD を持っている可能性。すべての World Partition レベルでビルド実行が必要。
Q: Git でチームと HLOD データを共有すべきか
A: HLOD は巨大なファイルになるので Git LFS が必須。または CI で毎回再生成する運用も多い。
子ページはありません
- SetInputMode_UIOnlyは、'PlayerController'ターゲットとして有効なプレイヤーコントローラーを想定しています
- 無限ループが検出されました
- ~は表示されるブループリント(BlueprintReadOnlyまたはBlueprintReadWrite)ではありません。これは将来のリリースでエラーとなるため、マークアップを修正するかアクセスを停止してください。
- 古いHLODアクタを検出、HLODをリビルドする必要があります
- ブループリントランタイム エラー: "プロパティ ~ の読み取りを試行するためのアクセスはありません"
- 「AI Move To」が「Aborted」で失敗
- 「AI Move To」が「Blocked」で失敗
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15