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

5.5 KiB
Raw Blame History

新场景组件默认模型生产流程

自 2026-10-26 起,所有新场景组件(含独立地表)默认使用:

分件设计图
  → 混元网页 50k GLB 高模
  → 3D Studio 低模
  → 3D Studio UV
  → Blender 同源高低模对齐、保留 Studio UV 烘焙
  → 超出目标 30% 时 Blender 保留 UV 减面
  → XPbr base/mix + FBX → Unity Pipeline 导入、Prefab 与场景验收
  → 美术收尾(Lit 材质、平铺地表、烘焙光照、后处理)→ 对图评分

场景级的美术基准、分层拆件、收尾和对图评分见 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:

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 虚拟环境执行后续生产:

& 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。