Files
AIGame/Doc/Design/Character/CharacterUnitArtProc.md

97 lines
6.2 KiB
Markdown
Raw Permalink 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.
# 角色与单位美术制作 / 验收流程
本流程把「设计图 → 混元 → 减面烘焙 → 入库 Prefab → 验收场景」固定成可重复步骤。验收只在编辑器专用场景里做,不进开战运行时。
配套清单:`character_unit_review_manifest.json`
Pipeline:`AIClient/AgentScripts/BuildCharacterReview.cs`、`SetupCharacter.cs`
## 目录约定
| 用途 | 路径 |
| --- | --- |
| 设计原稿 | `Doc/Design/Character/{英文名称}/`(不进 Bundles) |
| 高模 / 烘焙中间件 | `Tools/output/{name}_3d/`、`Tools/output/{name}_game/` |
| 游戏资源 | `AIClient/Assets/Bundles/Characters/{Kind}/{英文名称}/` |
| 验收场景 | `Assets/Bundles/Scenes/Review/CharacterUnitReview.unity` |
| 验收报告 | `Tools/output/character_review/CharacterUnitReview/review_report.json` |
`Kind` 建议:
- `Human`:人形(T Pose,目标身高约 1.8m)
- `Animal`:非人生物 / 宠物正式模型(站姿或四足,目标身高按物种登记)
- 后续武器/道具走 `GameResProductProc` 独立物件节,可先在本验收场景并排放下对比尺度
网格约定与附录 B 一致:Y-up、原点在底面中点、局部 **+Z 为正面**。
## 制作步骤(单件)
1. **设计图**:纯白底、全身入画。人形角色用正面正交 T Pose、双手空、比例 `2:3`,必须原样加入 [GameResProductProc.md「二.2.A 人物角色」](../../../GameResProductProc.md#a-人物角色) 的完整固定英文姿态提示词,并按该节要求目视核对;非人用可辨识站姿,比例按体型选 `2:3` 或 `1:1`。
2. **混元图生 3D**:`Tools/hunyuan_3d_generate.py --faces 50k`。
3. **减面烘焙**:`Tools/model_tools/model_lowpoly_bake.py --tris <目标> --size 1024`。人物约 3000;非人/宠物默认 800~2000,在 manifest 的 `maxTriangles` 写死验收上限。
4. **入库**:`python Tools/install_character_bundles.py -a {Name} --kind {Kind} -b Tools/output/..._xpbr`
5. **Prefab**:
`unity command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScripts/SetupCharacter.cs --entry SetupCharacter.Run --args '["Animal","LmCat",0.42]'`
6. **登记**到 `Doc/ResDesc_Model.md` / `Doc/ResDesc_Picture.md`。
7. **验收**:把该件追加进 `character_unit_review_manifest.json` 的 `subjects`,再执行下方 Pipeline。
### 人形角色蒙皮(默认)
静态模型验收通过后,人形角色默认采用 **固定 Mixamo 骨架 + TokenRig 只预测蒙皮权重**。先按角色体型拟合骨架并固定,清除参考模型既有权重,使用已有骨架模式预测权重;随后装回固定骨架并校验骨名、层级、骨轴与休息矩阵,检查和清理跨部位错误影响,归一化后导出。保留原网格、UV 和烘焙贴图。
Unity Pipeline 配置 Humanoid 与角色自己的 Avatar,并对实际所需动作进行形变、脚踝交叉及接地验收;动画 Prefab 和资源登记完成后才接入业务。详细约定见 [GameResProductProc.md「二.2.A 人物角色」](../../../GameResProductProc.md#a-人物角色)。现有固定 41 骨与局部约束工具需按新角色拟合、验收。
## 验收场景(专用)
场景里固定包含:
- 地面与刻度(身高参考柱 0.5 / 1.0 / 1.8m)
- 每个 subject 脚下的 **+Z 正面箭头**
- 方向光 + 验收相机
- 按 `spacing` 横向排列的 Prefab 实例
### Pipeline 入口
```powershell
# 校验 manifest 与 Prefab 是否齐全
unity command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScripts/BuildCharacterReview.cs --entry BuildCharacterReview.ValidateOnly
# 生成 / 覆盖验收场景,并写报告
unity command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScripts/BuildCharacterReview.cs --entry BuildCharacterReview.Build
# 打开场景并框住全体
unity command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScripts/BuildCharacterReview.cs --entry BuildCharacterReview.OpenReview
# 自动量身高、面数、XPbr、底面贴地
unity command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScripts/BuildCharacterReview.cs --entry BuildCharacterReview.ValidateReview
# 截 Scene View 留档
unity command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScripts/BuildCharacterReview.cs --entry BuildCharacterReview.CaptureReview
```
### 验收门槛
- Prefab 可加载,材质为 `Test/XPbr`(manifest 可对旧件关闭 `requireXpbr`)
- 包围盒底面 `min.y` 接近 0(±0.05)
- 身高在 `expectedHeight ± heightTolerance`
- 三角面数 ≤ `maxTriangles`
- 人工目视:局部 +Z 朝向相机前的箭头、无悬浮、无穿模、贴图无品红缺贴图
通过后,才允许把该 Prefab 接到开战/营地替换简模。
非人绑骨/三动作见 `GameResProductProc` 二.3.B:先验收静态模,再 `--mesh` 已验收 FBX 跑 TokenRig+UniMate → `install_animal_rigged` → `SetupAnimalAnimator`(挂回 XPbr)。`{Name}_Rigged` 并排验收(`requireAnimator` + `requireXpbr`),勿覆盖静态 Prefab。
带 `Motion` 参数的单位会挂 `CharacterReviewAnimCycle`,在 Scene 视图自动轮播 Idle→Walk→Attack(约 2.8s/段,名称旁显示当前动作)。
诊断新骨架时可先设 `requiredClips: ["Walk"]` 验证单动作;正式敌方必须恢复三动作检查。RockBall现已在同一12骨上补齐Idle/Walk/Attack,正式流程见 [EnemyCharacterProduction.md](EnemyCharacterProduction.md)。单Walk历史见 [RockBall/WalkRiggingFix.md](RockBall/WalkRiggingFix.md)。
## 与开战的关系
敌方角色制作采用 [EnemyCharacterProduction.md](EnemyCharacterProduction.md):同角色骨架、空间对齐、三动作来源哈希、离线收尾、Enemy视觉Prefab与整段验收。岩团团已从单Walk阶段升级到Idle/Walk/Attack;总验收按三动作检查。
本场景**不**被 `PrototypeFlow` 加载。开战仍用 `PrototypeArena` 简模,直到某宠物正式模型验收通过并单独做替换任务。
### 朝向兼容(2026-10-24)
新 subject 默认 `localForward: "+Z"`,新资源相机应位于其 +Z 正面一侧。历史 manifest 中的旧件已显式标注 `localForward: "-Z"`,沿用原相机和旧件朝向,脚下标记按各自配置生成。渲染辅助 `AuditCharacterVisual.Capture` 的 `forwardZ` 默认 +1;旧 -Z 件必须传 -1。