97 lines
6.2 KiB
Markdown
97 lines
6.2 KiB
Markdown
# 角色与单位美术制作 / 验收流程
|
||
|
||
本流程把「设计图 → 混元 → 减面烘焙 → 入库 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。
|