Files
AIGame/Doc/Design/Scene/SceneModelProduction.md

79 lines
5.5 KiB
Markdown

# 新场景组件默认模型生产流程
自 2026-10-26 起,所有新场景组件(含独立地表)默认使用:
```text
分件设计图
→ 混元网页 50k GLB 高模
→ 3D Studio 低模
→ 3D Studio UV
→ Blender 同源高低模对齐、保留 Studio UV 烘焙
→ 超出目标 30% 时 Blender 保留 UV 减面
→ XPbr base/mix + FBX → Unity Pipeline 导入、Prefab 与场景验收
→ 美术收尾(Lit 材质、平铺地表、烘焙光照、后处理)→ 对图评分
```
场景级的美术基准、分层拆件、收尾和对图评分见 [SceneReviewGeneration.md](SceneReviewGeneration.md) 的“商业化品质基线”和第 5 阶段。
## 制作要求
1. 分件图通过审核后再制作模型;地表单独生产。复用已验收 Prefab 时跳过新模型生产。
2. 混元使用 `--faces 50k`。保留任务号、原始 GLB、哈希和日志,校验文件头及内嵌贴图解码。
3. Studio 低模和 Studio UV 分别保留任务回执。不得用 Blender 自动展 UV 替代 Studio UV。
4. 烘焙前将 Studio 低模对齐到确切来源高模,保留 Studio UV,烘焙颜色、法线、AO、金属度、粗糙度并打包 XPbr。
5. 减面条件为 `actualTriangles * 10 > targetTriangles * 13`;等于 130% 不触发。未超出时登记跳过,超出时减至目标附近,保留 UV 和贴图;必要时向最终低模补同源投射烘焙,不重展 UV。
6. 模型完成不等于外观通过。单件四向检查、UV/面数/贴图检查、地表水平与碰撞检查通过后才拼场景。
7. 新 FBX 为 Y-up、底面中心原点、局部 +Z 正面。坐标与正面必须实测;历史 -Z 资源按已登记配置复用。
8. 分件图尺寸按场景 manifest 的 `artDirection.scaleChart` 标注真实米制尺寸,导入 Unity 后按该尺寸缩放,不在拼装时目测缩放。
## 面数预算(按屏占比)
`targetTriangles` 按组件层级和正式机位下的屏占比确定,不再对所有组件统一用 300~2000:
| 层级 | 参考预算 | 适用 |
| --- | ---: | --- |
| A 主体 | 3000~6000 | 主建筑、地标;造型复杂(带遮阳棚、阳台、烟囱)取上限 |
| B 中景 | 1000~3000 | 侧屋、摊位、台阶、拱门、大树 |
| C 点缀 | 200~800 | 花盆、木箱、岩石、灌木 |
| 地表几何 | 2000~6000 | 只承载起伏和轮廓,表面细节交给平铺材质 |
整场景在正式机位视锥内的参考上限为 6 万三角面、80 个 Draw Call,以真机验收结果为准。HomeCamp 首版整场景只有 9987 面,瓶颈在面数预算过低导致的碎面,而不是性能。
## Studio 低模失败时的处理顺序
出现碎面、破洞、反面或贴图黑斑时,按以下顺序处理,每一步都要登记回执,不能直接降级成平面贴片了事:
1. **提高预算重跑 Studio 低模**:目标面数提高到原来的 1.5~2 倍,但不超过本层级上限。
2. **拆分组件**:把遮阳棚、烟囱、花箱等附件拆成独立分件,分别走五步流程,在 Prefab 里组合。
3. **修复反面与黑斑**:统一面朝向,检查烘焙 cage 距离和射线距离;黑斑通常来自高低模没对齐或 cage 太小,需要重新对齐后再烘焙。
4. **重做分件图**:造型过于细碎时,简化设计图里的镂空和细杆结构后重新生成高模。
5. 以上都失败时,才允许用替代表现(例如树改成卡片),并在 manifest 标注 `fallback` 和原因。替代表现同样要满足第 5 阶段的 Lit 材质和阴影要求。
## 统一工具入口
`Tools/scene_component_pipeline.py` 从场景 manifest 读取 `sceneId`、组件 `id`/`type`、`designImage`、`highpoly`/`highPoly` 和 `targetTriangles`。若有单独的 `modelReferenceImage`,混元计划使用该图。`ground` 独立登记;普通组件放在 `components`。`modelPipeline.textureSize` 默认 1024。
先查看计划,不调用远程服务或 Blender:
```powershell
python Tools/scene_component_pipeline.py --manifest Doc/Design/Scene/Battlefield/battlefield_scene_manifest.json --part tree --dry-run
```
计划会打印混元 50k 高模命令及来源/输出路径。先使用 `Tools/hunyuan_3d_generate.py` 完成高模,再用 LLM3DGraphics 虚拟环境执行后续生产:
```powershell
& D:/UD/AI/XModel/LLM3DGraphics/.venv/Scripts/python.exe Tools/scene_component_pipeline.py --manifest Doc/Design/Scene/Battlefield/battlefield_scene_manifest.json --part tree
```
普通场景默认中间目录为 `Tools/output/scene_models/<sceneId>/<part>/`,可用 manifest 的 `modelOutputDir` 或 `--output-dir` 指定其他 `Tools/output/` 内目录。不得覆盖来源或设置不匹配的旧生产记录。已有完成记录按哈希复用。
`Tools/homecamp_model_pipeline.py --part ...` 是该入口的 HomeCamp 兼容包装,保留既有输出目录和修复步骤。
## 收尾与历史资源
- `production.json` 记录任务、面数、减面执行/跳过、烘焙和输出哈希;模型路径、回执和 Prefab 路径须登记回场景 manifest。
- 仅复制源 FBX 和贴图入 `AIClient/Assets/Bundles/Scenes/`;导入、材质、Prefab、碰撞体、场景制作均通过 Unity Pipeline。
- 图片登记 `Doc/ResDesc_Picture.md`,模型、贴图和 Prefab 登记 `Doc/ResDesc_Model.md`。
- `model_lowpoly_bake.py` 保留用于已有资源的历史复现与其他明确使用它的工具;不再作为新场景组件的默认入口。
- 既有战场 A 的 Blender 减面/UV/烘焙回执保留真实来源,不自动重生成,也不标为已执行 Studio 低模/UV。