Files
AIGame/GameResProductProc.md
T
udxandClaude Opus 5.5 89e0fa246f Add formal enemies, remaining formal partners and synthesized UI SFX
- UI SFX v3: procedurally synthesized one-shots (Tools/synth_ui_sfx.py) wired to
  buttons, rewards, errors and red dots via UiSfx, gated by the SFX setting.
- Five formal enemies (Hornlet, Dashlet, Shellhorn, HornCaptain, GreatHorn):
  Hunyuan 50k -> 2000-tri XPbr, DGXA TokenRig, Idle/Walk/Attack, nested per type
  in PrototypeArena; PrototypeBattle.Enemy gains presentation-only Moving/Strikes.
- Formal partners for all ten pets in the arena and portraits, including new
  VineSprite, ThunderLeopard and TideWhale.
- Pipeline fixes: reject local TokenRig fallback, drop loose mesh islands,
  configurable Unity run_script timeout, companion static stage.
- Also includes concurrent work from another tool in this working tree
  (FlameLion, enemy combat FX, challenge mode, home explorer, server updates).
- Resources registered in Doc/ResDesc_*.md; verified on isolated :18081.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 12:23:55 +08:00

348 lines
25 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 游戏资源生产流程
> 本文说明游戏内各类资源从设计到入库的生产步骤。
> 工具用法见 [`ResourceCreate.md`](ResourceCreate.md)。生成完成后必须登记 [`Doc/ResDesc.md`](Doc/ResDesc.md) 对应分册,未登记视为流程未完成。
当前状态:**框架已立**。各条的细化与实跑验证按文末清单逐条进行;标「待细化」的条目只保留步骤骨架,不写未经验证的命令。
---
## 0. 总则
1. **画图**一律走项目画图方案(见附录 A)。设计图、UI 原图、序列帧、粒子贴图的生成底为**纯白**。
2. **3D**一律走 3D 模型生成流程(见附录 B)。面数是减面后的游戏用三角面,不是混元高模面数。游戏 FBX:**Y-up**、原点在**底面中点**、局部 **-Z 为正面**(设计图朝向相机的那面)。摆放时正面朝向目标,不要按 Unity 默认 +Z forward。
3. **中间件**放 `Tools/output/`,不进正式包。**游戏用资源**放 `AIClient/Assets/Bundles/` 对应目录。
4. **设计原稿**放 `Doc/Design/{类型}/{名称}/`,**不要拷进** `AIClient/`。`{类型}` 与下文各大类对应(如 `Scene`、`Character`、`UI`、`Weapon`、`Prop`、`Effect`)。
5. **英文名称**用于 Bundle 目录与文件名:帕斯卡或既有角色名风格均可,目录内保持一致,不含空格与中文。
6. **确认点**写在步骤里的,必须等人确认后再进入下一步。
7. **Unity 操作**一律走 Unity Pipeline(`unity command …`),见 [`UNITY-GUIDE.md`](UNITY-GUIDE.md) 与 `unity-pipeline` 技能。不要用 Unity MCP;场景、Prefab、材质、导入设置、以及 `Assets/` 下文件的移动/重命名/删除,都通过 Pipeline 完成。
| 登记 | 文件 |
| --- | --- |
| 图、设计原稿、UI 切图 | `Doc/ResDesc_Picture.md` |
| 模型、贴图、Prefab | `Doc/ResDesc_Model.md` |
| 动画 | `Doc/ResDesc_Animation.md` |
| 特效 | `Doc/ResDesc_Effect.md` |
| 音乐、音效 | `Doc/ResDesc_Sound.md` |
---
## 一、2D 资源
### 1. 设计图
状态:已跑通。样例为轻松休闲 UI、小镇广场、轻科幻曹操(2026-09-28)。
1. 用 `Tools/gpt_image_generate.py` 出图。默认模型 `gpt-image-2.5`,`--quality high`。背景写进提示词:纯白 `#FFFFFF`,不要场景底、渐变和纸纹。
2. 比例用字符串,不要自己传大于 1K 的像素。本次实测映射为:
| 用途 | `--aspect-ratio` | 实测尺寸 |
| --- | --- | --- |
| 竖屏 UI | `9:16` | 940×1672 |
| 场景总览 | `1:1` | 1254×1254 |
| 全身角色 | `2:3` | 1024×1536 |
3. 需要锁已有风格时加 `-i` 参考图。UI 样例参考 `Doc/Design/ui_design.jpg`。
4. 原稿放到 `Doc/Design/{类型}/{名称}/`,文件名用英文。本次:
| 类型 | 路径 |
| --- | --- |
| UI | `Doc/Design/UI/Casual/casual_ui.png` |
| Scene | `Doc/Design/Scene/TownSquare/town_square.png` |
| Character | `Doc/Design/Character/CaoCao/caocao.png` |
5. 检查四角 RGB。接近 255(本次均 ≥253)即视为纯白通过。
6. 在 `Doc/ResDesc_Picture.md` 登记路径、用途、模型与尺寸。
角色若接着走 3D,设计图按人物条目画成正面 T Pose、双手空、全身入画。本次曹操已按此出图。
本条产出不进 `Bundles`。场景总览画出后先归纳物件类型(10 种以内)等人确认,再进入分件。
```bash
python Tools/gpt_image_generate.py --result-only --quality high --aspect-ratio 9:16 -i Doc/Design/ui_design.jpg -o Doc/Design/UI/Casual/casual_ui.png -p "..."
python Tools/gpt_image_generate.py --result-only --quality high --aspect-ratio 1:1 -o Doc/Design/Scene/TownSquare/town_square.png -p "..."
python Tools/gpt_image_generate.py --result-only --quality high --aspect-ratio 2:3 -o Doc/Design/Character/CaoCao/caocao.png -p "..."
```
### 2. UI 图
状态:待细化。切图与 Sprite 导入已有样例(`Doc/UI_Normal_Set.md`、`Tools/slice_ui_normal_atlas.py`、`Assets/Bundles/UI/Texture/Common/`),新风格组件仍按本条重走一遍并核对。
1. 参考既有 UI 范例图,用项目画图方案绘制新的风格组件图,背景纯白。
- 视觉基准:`Doc/Design/ui_design.jpg`、`Doc/Design/UI_Design_Principles.md`。
- 范例图集:`Doc/UI_Simple_Set.md`、`Doc/UI_Normal_Set.md`。
- 原稿放到 `Doc/Design/UI/{名称}/`。
2. 把组件图拆成单张图。
3. 导入 Unity,贴图类型改为 **Sprite (2D and UI)**。
- 落点:`AIClient/Assets/Bundles/UI/Texture/Common/`(或该套组件的子目录)。
- 现有 Common 图:`spriteMode: 1`(Single),`textureType: 8`(Sprite),`spritePixelsToUnits: 100`,关闭 Mip Map。
4. 业务界面仍走 JSON→Prefab,见 `Doc/UI_AutoGen_Overview.md`。不要用运行时代码拼业务 UI。
5. 登记 `Doc/ResDesc_Picture.md`。
---
## 二、3D 资源
### 1. 场景
状态:a / b / c / d 已用 `TownSquare` 跑通;战斗战场方案 A「绿野三岔口」也已跑通到开战加载。
战斗战场专用流程见 [`Doc/Design/Scene/Battlefield/BattlefieldSceneGeneration.md`](Doc/Design/Scene/Battlefield/BattlefieldSceneGeneration.md):三张总览图选一 → 分件 → 混元图生 3D → 减面烘焙 → Pipeline 拼装 → 嵌进开战预制体。战场地表必须独立制作;装饰组件硬上限 15 类(推荐 8~12 类),清单与目标面数在 `battlefield_scene_manifest.json`。未选择方案不得生成模型或 Prefab。
**a. 整体设计图(需确认)**
1. 用项目画图方案绘制整场景设计图(样例:`Doc/Design/Scene/TownSquare/town_square.png`)。
2. 从设计图归纳场景物件类型;TownSquare 历史模板控制在 **10 种以内**(含地表),战斗战场按专用流程控制在 **15 种以内**,地表单独计件。
3. **停在这里等人确认**类型清单与整体设计图。未确认不画组件、不生成模型。
4. 原稿放到 `Doc/Design/Scene/{场景号}/`。
`TownSquare` 已确认 8 类:地表、店铺、树、路灯、告示牌、喷泉、长椅、灌木花箱。
**b. 分件设计图**
确认后,总览图作 `-i` 参考,一类一张、单件、纯白底、3/4 视角。文件放在 `Doc/Design/Scene/{场景号}/`,英文短名:
| 类型 | 文件 |
| --- | --- |
| 地表 | `ground.png` |
| 店铺 | `shop.png` |
| 树 | `tree.png` |
| 路灯 | `lamp.png` |
| 告示牌 | `board.png` |
| 喷泉 | `fountain.png` |
| 长椅 | `bench.png` |
| 灌木花箱 | `bush.png` |
提示词约束:只画该类型一件,不要把总览里的其它物件带进来。分件必须对齐总览(本次喷泉第一次出成三层,已按总览改回两层)。比例默认 `1:1`;瘦高件(路灯)用 `2:3`。四角纯白检查同「一.1」。登记 `Doc/ResDesc_Picture.md`。
```bash
python Tools/gpt_image_generate.py --result-only --quality high --aspect-ratio 1:1 -i Doc/Design/Scene/TownSquare/town_square.png -o Doc/Design/Scene/TownSquare/{name}.png -p "..."
```
**c. 生成模型并入库**
1. 分件设计图逐一走附录 B:混元 `--faces 50k` → `model_lowpoly_bake.py --tris <目标> --size 1024`。
2. 减面后面数 **300~2000**。`TownSquare` 取值:地表 800、店铺 1800、树 1500、路灯 500、告示牌 800、喷泉 1800、长椅 700、灌木 500。
3. 碎叶类(灌木)普通 collapse 会卡在约 2 万面;减面脚本在超差且仍高于目标 2 倍时改用**体素重网格**回退。本次灌木最终 **436** 面。
4. 校验 GLB 文件头须为 `glTF`,且**内嵌贴图能解码**(`hunyuan_3d.glb_check`)。中断拷贝可能得到全 0 文件;贴图 CRC 损坏时 Blender 当缺贴图处理,颜色烘焙会出品红(路灯曾中招)。
5. 最终资源放到 `AIClient/Assets/Bundles/Scenes/{类型}/{场景号}/{英文短名}/`,含 `{名}.fbx`、`{名}_base.png`、`{名}_mix.png`、`{名}.mat`。设计图留在 `Doc/Design/Scene/{场景号}/`,不进 Unity。
- 样例:`AIClient/Assets/Bundles/Scenes/Town/TownSquare/{ground,shop,tree,lamp,board,fountain,bench,bush}/`
6. 高模与烘焙中间件留在 `Tools/output/townsquare_3d/`、`Tools/output/townsquare_game/`。编排脚本:`Tools/output/run_townsquare_pipeline.py`。
7. 登记 `Doc/ResDesc_Model.md`。
**d. 摆场景(可进游戏)**
状态:已用 `TownSquare` 跑通(Unity Pipeline)。
1. 所有 Unity 操作走 Pipeline:`unity command run_script --file AgentScripts/BuildTownSquare.cs --entry BuildTownSquare.Run`。
2. 每个分件做成 Prefab(缩放、XPbr),再拼 `TownSquare.prefab`。游戏 FBX 与混元 GLB 同为 Y-up,原点在底面中点,**正面为局部 -Z**。地表 Prefab 加非凸 **MeshCollider**(FBX Read/Write 打开以便烹饪)。其它物件水平位置按总览图 L 形,**Y 用地表碰撞高度**(从上往下打到 MeshCollider)。店铺/告示牌/长椅的 **-Z 朝向广场中心**。只有红顶店网格,两座店共用。运行时角色同样用 `GroundSit` 贴地。
3. 可编辑场景:`AIClient/Assets/Bundles/Scenes/Town/TownSquare/TownSquare.unity`(主相机 + 方向光 + 广场实例)。
4. 运行时由 `TownSquareSpawner` 按地址 `TownSquare` 加载 Prefab(YooAsset Art;编辑器走 AssetDatabase)。`GameplayBootstrap` 先摆广场再刷角色。
5. Art 收集增加 `Assets/Bundles/Scenes`(`PackDirectory` / `AddressByFileName`)。
`TownSquare` 实测三角面:ground 800、shop 1797、tree 1498、lamp 500、board 800、fountain 1798、bench 699、bush 436。
**战斗战场样例 A · 绿野三岔口(2026-10-20)**
1. 设计 / 分件 / 模型:见 `Doc/Design/Scene/Battlefield/`;选中 A;树/岩石/桥/路牌/灌木 + 独立地表均已混元 50k → 减面烘焙 → 入 `Assets/Bundles/Scenes/Prototype/Battlefield/A/`。
2. Pipeline:`BuildBattlefieldAssets.BuildAll` → `BuildBattlefieldScene.Build` → `AttachGreenfield.Build`。输出 `Battlefield_Greenfield.prefab`,嵌为 `PrototypeArena/Greenfield`;方块地面关闭。
3. 桥模型保留(`placeInScene: false`),场景不摆桥。装饰为树、岩石、路牌、灌木。
4. 战斗相机只画第 30 层:Greenfield 整棵子树必须设为 layer 30,否则地表在 Play Mode 不可见。
5. 运行时仍由 `PrototypeFlow` 按地址 `PrototypeArena` 加载(Art/GameplayPrototype 收集)。Play Mode 隔离服验证截图:`Assets/Screenshots/battlefield_play_battle.png`。
### 2. 角色
#### A. 人物角色
状态:已用 `CaoCao` 跑通(约 3000 面、`Characters/Human/{英文名称}`)。
1. 参照风格图绘制设计图:**T Pose**,双手空、全身入画、背景纯白。比例 `2:3`(本次 `1024×1536`)。
2. 原稿放到 `Doc/Design/Character/{英文名称}/`,**不进 Bundles**。样例:`Doc/Design/Character/CaoCao/caocao.png`。
3. 设计图走附录 B:混元 `--faces 50k` → `model_lowpoly_bake.py --tris 3000 --size 1024`。减面后约 **3000** 面。
4. 用 `Tools/install_character_bundles.py -a {英文名称} --kind Human` 拷到 `AIClient/Assets/Bundles/Characters/Human/{英文名称}/`(`{名}.fbx`、`_base.png`、`_mix.png`、`.mat`)。
5. Unity Pipeline 建 Prefab(Y-up、底面原点、局部 -Z 正面,**不要**再绕 X +90°):`unity command run_script --file AgentScripts/SetupCharacter.cs --entry SetupCharacter.SetupCaoCao`。身高缩到 **1.8m**。Art 收集已覆盖 `Assets/Bundles/Characters`。
6. 运行时 `CharacterSpawner` 按地址 `CaoCao` 加载;Y 用 `GroundSit` 打地表 MeshCollider(中心点若未打中,偏 0.35m 再打)。
7. 登记 `Doc/ResDesc_Model.md` 与 `Doc/ResDesc_Picture.md`。
本次实测:高模 49990 面 → 低模 **3000** 面;贴图 1024;Prefab `Assets/Bundles/Characters/Human/CaoCao/CaoCao.prefab`。旧样例 `Characters/MaleExplorer/` 仍是平铺目录、约 5k 面,且 Prefab 带历史 +90°X,不作为新角色模板。
```bash
python Tools/hunyuan_3d_generate.py --result-only --faces 50k -i Doc/Design/Character/CaoCao/caocao.png -o Tools/output/caocao_3d/caocao.glb
python Tools/model_tools/model_lowpoly_bake.py Tools/output/caocao_3d/caocao.glb -o Tools/output/caocao_game --tris 3000 --size 1024 --result-only
python Tools/install_character_bundles.py -a CaoCao --kind Human -b Tools/output/caocao_game/caocao_xpbr -c Doc/Design/Character/CaoCao/caocao.png
# Unity Pipeline: run_script AgentScripts/SetupCharacter.cs --entry SetupCharacter.SetupCaoCao
```
#### B. 非人角色
状态:制作与验收工具已落地;正式宠物模型内容待做。
步骤骨架与人物相同(风格图 → 纯白设计图 → 附录 B → 入库 → 登记)。差异:
- 目录 `Kind`:`Animal`(或后续 `Creature`);样例 `Characters/Animal/LmCat/`。
- 姿势:可辨识站姿/四足,不强制 T Pose;目标身高按物种写进验收 manifest。
- 面数:默认 800~2000,在 `character_unit_review_manifest.json` 的 `maxTriangles` 验收。
- 是否与人形共用骨骼:首批正式宠物各自独立网格,不绑 Mixamo;绑骨/动作用 DGX TokenRig + UniMate(见二.3.B)。
**验收场景(专用,不进开战):**
- 流程说明:`Doc/Design/Character/CharacterUnitArtProc.md`
- 清单:`Doc/Design/Character/character_unit_review_manifest.json`
- Pipeline:`AgentScripts/BuildCharacterReview.cs`(`Build` / `OpenReview` / `ValidateReview`)
- 场景:`Assets/Bundles/Scenes/Review/CharacterUnitReview.unity`
- 已用 CaoCao / LmGirl / LmCat 跑通:身高与 XPbr 校验通过;截图 `Assets/Screenshots/character_unit_review.png`
新非人件:烘焙入库 → `SetupCharacter.Run` → 追加 manifest `subjects` → `BuildCharacterReview.Build` → `ValidateReview` 通过后,才替换开战简模。
### 3. 动画
#### A. 人形角色动画
状态:待细化(Kimodo / Mixamo)。骨架:动作列表确认 → 生成或导入剪辑 → 绑定到对应角色 → 放到该角色目录或统一动画目录 → 登记 `Doc/ResDesc_Animation.md`。
#### B. 非人角色动画(TokenRig + UniMate)
**敌方角色正式标准**:采用 [敌方角色标准制作方案 v1](Doc/Design/Character/EnemyCharacterProduction.md)。统一配方 `Config/Art/EnemyCharacters/{Name}.json`、入口 `Tools/enemy_character_pipeline.py`,交付Idle/Walk/Attack、Enemy视觉Prefab与验证清单。下方旧工具说明保留为阶段记录,敌方制作以新标准为准。
**伙伴角色复用**:统一入口 `Tools/character_animation_pipeline.py`,伙伴配方 `Config/Art/Companions/{Name}.json`,`usage=companion_visual`;不创建敌方Variant。火喵T1已完成同源22骨、Idle/Walk/远程施法Attack、伙伴视觉Prefab与Edit/Play验收,见 [制作记录](Doc/Design/Character/FireCat/ProductionBrief.md)。全骨骼初始姿势校准、附肢权重、动作峰值目视和CPU推理回退见上述标准方案的伙伴复用说明。
状态:工具已落地;依赖 DGX LLM3DGraphics(`http://192.168.130.16:8008`)能力绿灯。
1. **先做静态模(原流程)**:设计图 → 混元网页高模 → `model_lowpoly_bake` → `install_character_bundles` → `SetupCharacter` → CharacterUnitReview 验收通过。**不要**用 DGX Hunyuan3D 重做宠模。
2. **能力门禁**:本机 LLM3DGraphics `tokenrig_ready` + `unimate_ready`(`python Tools/dgx3d_animal_pipeline.py --caps-only`);红灯时先 `nvsync connect DGXA --detach`。
3. **绑骨 + 三动作**:网格仍用原混元/烘焙外观;TokenRig 若在过简低模上骨过少(宠球常见),应对**同角色高模**或可用代理模绑骨,再 `Tools/model_tools/bl_transfer_skin.py` 把骨架权重转到已验收低模,然后 UniMate×3。脚本入口:
`python Tools/dgx3d_animal_pipeline.py --mesh …/{Name}.fbx -o Tools/output/{name}_dgx --name {Name}`
(低模直绑若测得动作幅度过小,改走高模绑骨 + `bl_transfer_skin`。)
4. **入库**:`Tools/install_animal_rigged.py` → `…/Rigged/` 与 `Anims/`。
5. **Prefab / Animator**:`SetupAnimalAnimator`挂回静态模 `{Name}.mat`(XPbr)。现行接口:Motion Int 0=Idle、1=Walk;Attack Trigger单次攻击,结束恢复请求状态。正式敌方入口同时执行离线收尾与验证。
6. **验收**:manifest 增加 `*_Rigged`(`requireAnimator` + `requireXpbr`);Scene 内 `CharacterReviewAnimCycle` 轮播。动作幅度可用剪辑曲线/骨骼角度抽检(Walk 应有明显关节摆动)。
7. 登记 `Doc/ResDesc_Animation.md` / Model。TokenRig/UniMate 细节见 [`DGX3D_AI调用指南.md`](DGX3D_AI调用指南.md)。
**坐标与单动作门禁**:先用一个Walk验证骨架,再扩展三动作。项目FBX在Blender中为Y-up顶点,TokenRig GLB为Z-up,转权重前须 `--low-up Y --align-bounds`;只用同角色高模并检查几何距离。保留一致的Armature表示,动作来源rig哈希必须相同。提示明确解剖和单一动作;生成后离线修正姿态、脚底、步幅和循环,按实际蒙皮验收。岩团团已完成12骨三动作,正式复现 `Tools/enemy_character_pipeline.py --recipe Config/Art/EnemyCharacters/RockBall.json --build-review`。旧单Walk脚本仅诊断使用,历史见 [WalkRiggingFix.md](Doc/Design/Character/RockBall/WalkRiggingFix.md)。
### 4. 独立物件
状态:待细化。生产走附录 B;**入库目录细化时确定**(本框架不先占一个未使用的 Bundle 路径)。
#### A. 武器
骨架:纯白设计图 `Doc/Design/Weapon/{英文名称}/` → 附录 B → 入库 → 登记 Model / Picture。
#### B. 道具
骨架:纯白设计图 `Doc/Design/Prop/{英文名称}/` → 附录 B → 入库 → 登记 Model / Picture。
面数在细化时按物件尺度定,默认参照场景组件的 300~2000,不默认使用角色的 3000。
### 5. 特效
用户提纲里本条与「独立物件」同为第 4 点,流程文档中改为第 5 点。
#### A. 序列帧动画
状态:待细化。
1. 用项目画图方案生成 **4×4** 序列帧,画布 **1024×1024**,背景纯白。
2. 整图缩小为 **256×256**。
3. 在 Unity 中做成 Particle 特效供游戏使用。
4. 图片、Prefab 及相关资源全部放到 `AIClient/Assets/Bundles/Effects/{英文名称}/`。
5. 登记 `Doc/ResDesc_Effect.md`(序列帧图可同时在 Picture 记一笔)。
#### B. 粒子动画
状态:待细化。
1. 用项目画图方案生成粒子图,画布 **1024×1024**,背景纯白。
2. 缩小为 **128×128**。
3. 在 Unity 中做成 Particle 特效供游戏使用。
4. 图片、Prefab 及相关资源全部放到 `AIClient/Assets/Bundles/Effects/{英文名称}/`。
5. 登记 `Doc/ResDesc_Effect.md`。
---
## 三、声音资源
技能音效使用TangoFluxService,遵循 `D:/UD/AI/XModel/TangoFlux_AI调用指南.md`:英文提示词、固定seed、1~30秒请求、异步轮询,保留44.1kHz立体声WAV原稿;后期裁切/淡入淡出、试听后经Unity Pipeline导入。现有 `Tools/generate_ui_sfx.py` 可接受通用manifest复用服务调用,技能样例清单为 `Doc/Design/Sound/BattleSkills/manifest.json`,目前仅规划,未生成音频。
技能动作/特效/声音由统一战斗事件调度,详见 [关卡战斗技能系统设计](Doc/Design/Combat/SkillSystem.md)。制作清单不代表已完成资源;正式音效须保留请求/后期/试听记录并登记 `Doc/ResDesc_Sound.md`。背景音乐已有独立制作记录,见该资源登记表。
### 1. 音乐
骨架:确定用途与时长 → 生成或导入 → 放到声音 Bundle 目录 → 登记 `Doc/ResDesc_Sound.md`。目录在细化时确定。
### 2. 音效
骨架同上,与音乐分开登记。
---
## 附录 A. 项目画图方案
节点说明与命令见 [`ResourceCreate.md`](ResourceCreate.md)「文/图生图」。
- 脚本:`Tools/gpt_image_generate.py`
- 边长 ≤1024(含 `1024×1024`):默认模型 `gpt-image-2.5`
- 任一边 >1024:必须用 `gpt-image-2-vip`,并传像素尺寸(如 `2048x2048`),不要用 `"16:9"` 这类比例字符串
- 需要锁风格时用图生图(`--image` / JSON `image`),参考图为对应风格图或 UI 范例图
- 本流程额外约束:**背景纯白**。写进提示词,出图后目视确认,不把灰底、场景底直接交给切图或图生 3D
### 出图尺寸(与上文条目对应)
| 用途 | 尺寸 | 模型 |
| --- | --- | --- |
| 设计图 | 见「一.1」:UI `9:16`、场景 `1:1`、角色 `2:3`(比例字符串,默认模型) | 默认模型 |
| UI 组件图集(沿用现有图集) | `2048×2048` | VIP |
| 序列帧 | 先 `1024×1024`(4×4),再缩到 `256×256` | 默认模型 |
| 粒子图 | 先 `1024×1024`,再缩到 `128×128` | 默认模型 |
缩小在细化时写成固定步骤(脚本或图像工具二选一,选定后写回本节)。
---
## 附录 B. 3D 模型生成流程
节点说明见 [`ResourceCreate.md`](ResourceCreate.md)「腾讯混元 3D」与「高模减面与贴图烘焙」。调用方只改面数、输出目录和登记类型。
```text
纯白设计图
→ 混元图生 3D(Tools/hunyuan_3d_generate.py)→ GLB 高模
→ 减面 + 烘焙 + XPbr(Tools/model_tools/model_lowpoly_bake.py)
→ 安装到对应 Bundles 目录
→ 登记 Doc/ResDesc_*.md
```
- 混元面数档:`--faces 50k|500k|1m`(默认 `50k`)。这是高模档,不是游戏面数。
- 游戏面数用 `--tris` 控制。场景组件 / 地表:**300~2000**。人物:约 **3000**。
- 高模与烘焙中间件留在 `Tools/output/`。
- 角色安装:`Tools/install_character_bundles.py --kind Human` → `Bundles/Characters/Human/{英文名称}/`。场景分件:拷到 `Bundles/Scenes/{类型}/{场景号}/{英文短名}/`(`Tools/output/run_townsquare_pipeline.py`)。设计原稿不进 Bundles。
- 碎叶等非流形:`bl_decimate.py` 在 collapse 卡住后会体素重网格再减面。
- 轴向:混元 GLB = glTF Y-up。烘焙在 Blender 里用 Z-up;**导出 FBX 时** `prepare_game_export` 转回 Y-up,原点放在**底面中点**。**局部 -Z 是正面**,须在Unity正/侧/背面确认角色解剖前方;三分之四设计图可被重建成斜向,不能仅据glTF相机约定推断,须计入FBX到Unity的左右手系转换。需要校准时在静态源离线完成,并用同源模型绑骨。Unity摆放用「-Z指向目标」,不要用 `LookRotation` 默认的+Z forward,也不要再绕X扶正或抬高度。
- 最终 `_base.png` / `_mix.png`(以及烘焙五通道 PNG)写出时做 **PNG 无损压缩**(zlib 最高档;有 Pillow 则 `optimize=True`)。像素不变,只缩小文件。
- 角色 Prefab:Pipeline `AgentScripts/SetupCharacter.cs`(人物样例入口 `SetupCharacter.SetupCaoCao`)。游戏 FBX 已是 Y-up / 底面原点 / -Z 正面,Prefab **不要**再绕 X 扶正。旧菜单 `AIGame/M3/Setup Character Prefab` 只服务 MaleExplorer 历史资源。
---
## 细化验证清单
按表从上到下逐条做。一条通过(步骤可重复执行、路径与登记写回本文)后再做下一条。
| 顺序 | 条目 | 验证时要写回本文的内容 |
| --- | --- | --- |
| 1 | 一.1 设计图 | 已写回:比例与实测尺寸、三张样例路径、四角纯白检查 |
| 2 | 一.2 UI 图 | 参考图、拆单图步骤、Sprite 导入参数、与 JSON→Prefab 的衔接 |
| 3 | 二.1 场景 | a/b/c/d 已写回:TownSquare;另写回战场 A 拼装、嵌开战预制体、layer 30、Play 验证 |
| 4 | 二.2.A 人物 | 已写回:CaoCao、3000 面、`Characters/Human/`、Pipeline Prefab、运行时地址 `CaoCao` |
| 5 | 二.2.B 非人角色 | 已写回:Animal 目录、验收场景/Pipeline、LmCat 样例门槛;正式宠物内容待做 |
| 6 | 二.3 动画 | 非人:DGX TokenRig+UniMate + `dgx3d_animal_pipeline.py` 已写回;人形 Kimodo 仍待细化 |
| 7 | 二.4 独立物件 | 武器与道具的面数和 Bundle 目录 |
| 8 | 二.5 特效 | 缩小步骤、序列帧切格、Particle Prefab 做法 |
| 9 | 三 声音 | 音乐与音效的生成方式和目录 |
### 重型四足伙伴样例补充(2026-10-21)
岩甲犀RockRhino已按同角色高模→静态-Z验收→自身29骨→单四足Walk→同rig Idle/冲撞Attack→离线收尾→Edit/Play完成。配方Config/Art/Companions/RockRhino.json,0.55m/2000tris/1024 XPbr,解剖分支quadruped_heavy与braced_bash必须配对;胸背/头颈/四蹄映射和岩甲/独角刚性区域均按自身检查填写,不能套用泡泡龟探头动画。冲撞需肩部前送、可见低头与四脚支撑,事件不直接结算减速。完整来源、失败修正和验收见Doc/Design/Character/RockRhino/ProductionBrief.md及EnemyCharacterProduction.md。
### 双足火焰伙伴样例补充(2026-10-21)
烈焰狮FlameLion已按同角色50k高模→2000tris/1024 XPbr静态-Z验收→自身远程28骨→单双足Walk→同rig Idle/火焰施法Attack→Edit/Play完成。配方Config/Art/Companions/FlameLion.json,0.60m;biped_short复用双足步态,flame_roar检查自身头颈/双爪/双脚/鬃毛及相对胸背的施法行为。无独立下颌与尾骨,不宣称张嘴口型或尾部次级运动。详情见Doc/Design/Character/FlameLion/ProductionBrief.md及EnemyCharacterProduction.md。