mcpField
U
ue5-pcg-building

ue5-pcg-building

github.com/unrealxuクリエイティブ・メディア53354 回インストール9 週間前に更新
リポジトリ

ue5-pcg-building について

UE5.6~UE5.8向けに、PCGを使った建物生成グラフの設計を案内するスキルです。敷地のフィルタリング、シェイプグラマー、ランタイムスケジューリング、出力方式、検証を扱います。

主な機能

  1. 01PCG建物生成ワークフロー
  2. 02敷地のフィルタリングと変換
  3. 03シェイプグラマーによる配置
  4. 04ランタイム生成とクリーンアップ
  5. 05スタティックメッシュまたはActor出力
  6. 06デバッグと検証

活用シーン

  1. 01プロシージャル建物グラフの設計
  2. 02敷地データからの建物生成
  3. 03範囲を限定したランタイム生成
  4. 04文法や生成失敗の調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/unrealxu/unrealengine5-skills --skill ue5-pcg-building

インストール後、Claude Code で/ue5-pcg-buildingを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
pcg-building-graph-patterns.md
project-adapter.md
runtime-generation-validation.md
shape-grammar-building-pattern.md

詳細

クイックスタート

  • 生成対象を定義します:ブロックアウトタワー、モジュール式ファサード、または区画ベースの建物セット。
  • 決定論的な入力を定義します:区画のスプライン/ポイント、地区タグ、スタイルプリセット、シード。
  • 実行時モードを定義します:静的ベイク、オンデマンド、または実行時のスケジュール生成。
  • 出力モードを定義します:まず Static Mesh インスタンスを使用し、Spawn Actor はインタラクティブまたは状態を持つ部分にのみ使用します。

API の要点(UE5.6-UE5.8)

  • 実行時のトリガーと半径は UPCGComponent にあります:
    • EPCGComponentGenerationTrigger::GenerateAtRuntime
    • bOverrideGenerationRadii、GenerationRadii、SchedulingPolicyClass、SchedulingPolicy
    • GenerateLocal(...)、Cleanup(...)
  • 実行時スケジューラーの更新は UPCGSubsystem にあります:
    • UE5.6/UE5.7:RefreshRuntimeGenComponent(...)、RefreshAllRuntimeGenComponents(...)
    • UE5.8:RefreshRuntimeGenExecutionSource(...)、RefreshAllRuntimeGenExecutionSources(...)
    • UE5.8 の遅延更新:DirtyRuntimeGenExecutionSources(...)
    • 共通のクリーンアップ API:CleanupLocalComponentsImmediate(...)
  • 出力選択の要点となるクラス:
    • 高密度の描画には UPCGStaticMeshSpawnerSettings
    • インタラクティブまたは状態を持つ出力には UPCGSpawnActorSettings
  • Shape Grammar の要点となるクラス:
    • UPCGSubdivisionBaseSettings::GrammarSelection
    • 非推奨の文法フィールド(bGrammarAsAttribute_DEPRECATED、Grammar_DEPRECATED)には依存しないでください。

グラフステージの要件

  • 各ステージで、以下を明示的に宣言する必要があります:
    • 入力データ型(EPCGDataType またはアセットソース)
    • コアノード/クラス(最低 2 つ)
    • 必須パラメーター(シード、タグ、範囲、半径、またはスタイルキー)
    • 出力データ型
    • デバッグ方法(ノードレベルの確認、デバッグノード、またはログ/アサートの手順)
  • これら 5 項目を満たせない場合、グラフ設計は未完成として扱ってください。

ワークフロー

1) 入力

  • 入力データ型:アクター/スプライン/ポイントソース。
  • コアノード/クラス:UPCGDataFromActorSettings、UPCGGetActorPropertySettings、UPCGCreatePointsSettings。
  • 必須パラメーター:区画タグフィルター、地区/スタイルタグ、シードソース、ソースの境界。
  • 出力:順序が安定した、正規化済みの区画ポイントまたはスプラインデータ。
  • デバッグ方法:入力ステージの後に UPCGDebugSettings を実行し、ポイント数と境界を確認します。

2) フィルター

  • 入力データ型:入力ステージからのポイント/スプラインデータ。
  • コアノード/クラス:UPCGAttributeFilteringSettings、UPCGDensityFilterSettings、UPCGFilterByTagSettings。
  • 必須パラメーター:傾斜範囲、除外タグ、区画の最小面積/幅、占有制約。
  • 出力:建設可能な区画/候補のみ。
  • デバッグ方法:フィルター前後の候補数を比較し、除外されたタグの分布を確認します。

3) 変換

  • 入力データ型:フィルター済みの建設可能な候補。
  • コアノード/クラス:UPCGCopyPointsSettings、UPCGCreateSplineSettings、UPCGApplyScaleToBoundsSettings。
  • 必須パラメーター:階高、ピボット規則、ファサードの向きの基準、ローカル軸。
  • 出力:フットプリントのトランスフォームと各階のトランスフォーム。
  • デバッグ方法:出力ポイントのトランスフォーム軸と階インデックス属性を確認します。

4) 文法

  • 入力データ型:変換ステージからのセグメント/スプライン/ポイントデータ。
  • コアノード/クラス:UPCGSubdivideSplineSettings、UPCGSubdivideSegmentSettings、UPCGSelectGrammarSettings。
  • 必須パラメーター:GrammarSelection、モジュールサイズの制限、スタイルベースの文法キーのマッピング。
  • 出力:文法によって解決されたモジュール配置/属性。
  • デバッグ方法:UPCGPrintGrammarSettings を使用して、文法の解析とトークンを検証します。
  • ルール:GrammarSelection のみを使用し、非推奨の文法フィールドは避けてください。

5) 出力

  • 入力データ型:文法解決済みの配置。
  • 中核となるノード/クラス:UPCGStaticMeshSpawnerSettings、UPCGSpawnActorSettings、UPCGCreateTargetActor。
  • 必須パラメーター:
    • 静的メッシュ経路:メッシュセレクター、インスタンスパッカー、ISM/HISM ポリシー。
    • アクター経路:アクタークラス、スポーン属性、状態/インタラクションの要件。
  • 出力:生成された建物と、オプションのインタラクティブな建物要素。
  • デバッグ方法:出力をレイヤー/タグごとに分割し、各レイヤーの数を検証します。
  • デフォルトポリシー:Static Mesh Spawner を優先し、状態を持つ動作が必要な場合にのみ Spawn Actor を使用します。

6) 検証

  • 入力データ型:最終的なスポーン結果と実行時の生成状態。
  • 中核となるノード/クラス:UPCGDebugSettings、UPCGComponent、UPCGSubsystem。
  • 必須パラメーター:セルの想定範囲、更新ごとの最大スポーン予算、ナビゲーション/コリジョンの想定。
  • 出力:合否のシグナルと修正アクション。
  • デバッグ方法:オーバーラップ、ナビゲーションへの影響、セルごとの生成時間、決定論的な再生について、段階的なチェックを実行します。

制約

  • バージョン固有の注記が必要な場合を除き、メインのパイプラインは UE5.6-UE5.8 と互換性を保ちます。
  • 実行時生成では、次の項目を明示的に設定する必要があります。
    • GenerationTrigger = GenerateAtRuntime
    • 明示的な GenerationRadii(暗黙のデフォルトに依存しないでください)
    • 予測可能なスケジューラー動作のための明示的な SchedulingPolicyClass
  • 大量の出力には ISM/HISM スタイルを優先し、小さなパーツごとに負荷の大きいアクターをスポーンしないでください。
  • 範囲を制限しないワールド全体の再生成を避けるため、実行時生成の境界を明示してください。
  • 実行時生成を想定している場合は、エディター専用データへの隠れた依存を避けてください。
  • 実行時のスコープでは、World Partition の境界を厳格な制約として扱ってください。

障害への対処

  • 症状:建物がスポーンされない。
    • 確認箇所:入力ステージの出力数、ソースの境界、区画タグ。
    • 修正:ソースアクター/スプラインの取り込みと区画フィルターのタグを確認し、候補セットが空でないことを確かめます。
  • 症状:エディターのプレビューには出力されるが、実行時には出力されない。
    • 確認箇所:GenerationTrigger と、実行時の半径/スケジューリング設定。
    • 修正:GenerateAtRuntime、半径のオーバーライド、有効なスケジューリングポリシーを設定します。
  • 症状:実行時の更新で広すぎる範囲が再生成される。
    • 確認箇所:実行時の半径と生成ソースの移動。
    • 修正:生成/クリーンアップの半径を縮小し、ソースの境界を狭めます。
  • 症状:ルールを縮小した後も、古い生成パーツが残る。
    • 確認箇所:クリーンアップ経路とローカルコンポーネントのライフサイクル。
    • 修正:コンポーネントの削除動作でクリーンアップを実行し、必要に応じてローカルクリーンアップを強制します。
  • 症状:実行時生成中に大きな一時停止が発生する。
    • 確認箇所:セルあたりのポイント数、アクターのスポーン数、更新ごとの作業負荷。
    • 修正:セルごとの複雑さを軽減し、アクターのスポーン数に上限を設け、インタラクティブでないパーツを静的メッシュのインスタンスに移します。
  • 症状:同じシードで決定論的な再生結果が一致しない。
    • 確認箇所:上流のポイント順序が不安定、またはシードを使用していないランダム分岐。
    • 修正:ランダム選択の前に順序を正規化し、すべての確率的な経路を明示的なシード入力に結び付けます。
  • 症状:ファサードの文法でエラーが発生する、または空のモジュールが生成される。
    • 確認箇所:文法の解析ログとモジュールのトークンマッピング。
    • 修正:文法文字列、モジュール辞書、セグメントサイズの制約を検証します。
  • 症状:オーバーラップとコリジョンの問題が発生する。
    • 確認箇所:フィルターのしきい値と最終配置の制約。
    • 修正:出力ステージの前にクリアランス/傾斜フィルターと占有拒否を追加します。
  • 症状:生成された建物の周辺でナビメッシュの品質が低下する。
    • 確認箇所:スポーンされた出力のコリジョンプロファイルとナビゲーションに影響するフラグ。
    • 修正:ナビゲーションに影響する出力と影響しない出力を分け、必要な場所でのみナビゲーションを再構築します。
  • 症状:パラメーターを編集しても実行時に変更が反映されない。
    • 確認箇所:スケジューラーの更新フロー。
    • 修正:変更したコンポーネント、またはすべての実行時コンポーネントについて、実行時スケジューラーの更新を要求します。

ランタイムスケジューラーの運用

  • 1つのランタイムコンポーネントでスタイル、角丸、スケジューリング入力が変更された場合は、コンポーネントの更新を使用します。
  • 多数のランタイムコンポーネントでスタイルやグローバルルールが変更された場合は、グローバル更新を使用します。
  • 境界が縮小した場合やパーティションの所有権が変更された場合は、ローカルのクリーンアップを直ちに実行します。
  • クリーンアップ後は、影響を受けるランタイム範囲に限ってローカルの再生成をトリガーします。

UE5.6~UE5.8 の互換性に関する注意事項

  • 上記のコアランタイムトリガーおよび文法 API は、UE5.6~UE5.8 で安定しています。
  • UE5.8 では、非破壊的な手動編集と複雑なメタデータ属性値が追加されています。これらは、バージョンをまたいでグラフを使用するための必須要件ではなく、UE5.8 固有のオプション機能として扱ってください。
  • サブシステムのヘッダーパスの違い:
    • UE5.6 では、一般に Public/PCGSubsystem.h を使用します。
    • UE5.7/UE5.8 では、Public/Subsystems/PCGSubsystem.h を使用し、Subsystems/PCGSubsystem.h をインクルードします。
  • UE5.8 では、コンポーネント名を使用するスケジューラー更新呼び出しが非推奨になっています。UE5.8 のコードでは IPCGGraphExecutionSource ベースの API を使用し、コンポーネントベースの呼び出しは UE5.6/UE5.7 の分岐でのみ保持してください。

エスカレーション

  • アーキテクチャでカスタム C++ PCG 要素やエンジンプラグインの拡張が必要な場合は、エスカレーションしてください。
  • 都市規模の生成を World Partition のストリーミングポリシーと統合する必要がある場合は、エスカレーションしてください。
  • 生成されたレイアウトをセーブ/ロードやマルチプレイヤーの権限ルールと同期する必要がある場合は、エスカレーションしてください。

コメント