Files
AIGame/Doc/Design/Scene/SceneReviewGeneration.md
T

3.9 KiB

Unity 关卡场景四阶段生成流程

每个新关卡都按“设计选择 → 组件拆分 → 3D 资产 → Unity 场景”推进。每一阶段都有输入、输出和状态登记;没有完成上一阶段时,不进入下一阶段。

1. 生成设计图并选择方案

根据当前关卡要求维护 battlefield_design_prompts.json,用项目图像生成工具生成多张总览方案。总览图只表达路线、地表和组件类别,不直接作为 Unity 贴图。

python Tools/generate_battlefield_designs.py --design all
python Tools/battlefield_scene_pipeline.py status
python Tools/battlefield_scene_pipeline.py select A

生成回执和选择结果写入 battlefield_scene_manifest.json。人工在 Doc/Design/Scene/Battlefield/ 查看方案后,才执行 select。

2. 按方案拆分组件设计图

选中的总览图拆成独立地表图和组件图,输出到 Doc/Design/Scene/Battlefield/<design>/。组件类型先与资源库匹配:如果 AIClient/Assets/Bundles/ 已存在同名 Unity Prefab,则登记为 generationStatus: reused,跳过该组件的新设计图;没有现成 Prefab 的组件才调用图像生成。

python Tools/generate_battlefield_components.py --design A

默认复用已有组件。需要刻意重做某个组件时使用:

python Tools/generate_battlefield_components.py --design A --force-new-components

组件拆分完成后先审核地表图和组件图,再进入 3D 阶段。组件复用路径、生成状态和设计图路径都写回 manifest。

3. 根据新设计图生成 3D 模型

只有新组件才执行图生 3D;复用组件直接使用 manifest 中的 existingPrefab/prefab。新组件按统一链路生成:

组件设计图
  → Hunyuan 3D 50k GLB
  → Blender 减面、重拓扑、UV 与 XPbr 烘焙
  → AIClient/Assets/Bundles/Scenes/.../<type>/<type>.fbx + 贴图 + Prefab

每个组件的模型路径、目标面数、烘焙回执和 Prefab 路径必须登记到 manifest。FBX 遵循 Y-up、底面中心原点、局部 -Z 正面;导入和 Prefab 制作只能走 Unity Pipeline。

4. 生成 Unity 场景并交给人工审核

场景装配脚本读取 manifest,把独立地表、路线、出生点/终点和组件 Prefab 保存为总 Prefab。审核场景再从总 Prefab 生成持久化 .unity,加入固定 ReviewCamera、ReviewKeyLight 和 ReviewLabel。

$project = 'D:/UD/AI/AIGame/AIClient'
unity command --project-path $project run_script --file AgentScripts/BuildBattlefieldScene.cs --entry BuildBattlefieldScene.Build
unity command --project-path $project run_script --file AgentScripts/BuildBattlefieldScene.cs --entry BuildBattlefieldScene.VerifyBuilt
unity command --project-path $project run_script --file AgentScripts/BuildSceneReview.cs --entry BuildSceneReview.BuildAndOpenReview

审核输入由 scene_review_manifest.json 指定:

  • sourcePrefab:第 4 阶段装配出的总 Prefab。
  • outputScene:审核场景的 .unity 路径。
  • cameraPosition、cameraTarget:固定审核机位,便于不同版本比较。
  • reportPath:生成结果和审核步骤记录。

人工审核 Hierarchy、Scene View 和 Game View,重点检查组件穿插、悬空、朝向、地表碰撞和路线可读性。审核场景只用于编辑器审阅,不加入正式 Build Settings,也不由运行时代码创建。

一键编排与状态门

四阶段可以由编排器按顺序执行。它默认复用已有组件,只打印第 3 阶段的模型任务,不会在模型未登记前调用 Unity:

python Tools/run_battlefield_scene_pipeline.py --design A --dry-run

确认设计和组件图后,去掉 --dry-run;需要重做设计或组件时分别使用 --force-design、--force-new-components。Unity Editor 和 Pipeline 运行后,再加 --run-unity 执行第 4 阶段。