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>
This commit is contained in:
udx
2026-10-21 12:23:55 +08:00
co-authored by Claude Opus 5.5
parent 6c64210331
commit 89e0fa246f
780 changed files with 7117051 additions and 15906 deletions
@@ -0,0 +1,63 @@
# 芽芽 BudBud · T1 伙伴制作记录
2026-10-20完成正式版本。伙伴ID=2,草元素支援/治疗定位;奶油圆脸、五片绿叶瓣、头顶黄花苞、短叶臂和双足,与火喵保持相同美术风格。本次交付角色视觉资产,不改变战斗数值。
## 交付
| 项目 | 结果 |
| --- | --- |
| 静态伙伴 | `AIClient/Assets/Bundles/Characters/Animal/BudBud/BudBud.prefab` |
| 动画伙伴入口 | `AIClient/Assets/Bundles/Characters/Animal/BudBud/BudBud_Companion.prefab` |
| 骨架中间Prefab | 同目录 `BudBud_Rigged.prefab` |
| 验收场景 | `AIClient/Assets/Bundles/Scenes/Review/Companion_BudBud_Review.unity` |
| 并排/Play截图 | `AIClient/Assets/Screenshots/companion_budbud_{review,play}.png` |
| 正式配方 | `Config/Art/Companions/BudBud.json` |
| 来源与状态 | `Tools/output/companions/BudBud/production_manifest.json`,status=validated |
尺寸0.50m,2000三角面、1002原始顶点,1024² base/mix贴图,Test/XPbr材质,每顶点最多4个归一化权重。Y-up、底面中心原点、局部-Z正面;逻辑外层根缩放1/旋转identity,Root Motion关闭。
## 来源与制作
1. 内置imagegen参考 `FireCat/firecat.png` 风格与 `proto_pet_2.png` 身份生成 `budbud.png`,1024×1536,白底四角RGB最小253。完整提示词/模式/参考见 `design_prompt_formal.txt`。
2. 用户明确授权后提交腾讯混元3D官方网页50k图生3D,得到 `Tools/output/budbud_3d/budbud.glb`(50000 tris),内嵌贴图解码通过。任务回执 `hunyuan_status.json`。
3. Blender5减面、UV、烘焙到2000 tris/1024 XPbr;产物 `Tools/output/budbud_game/budbud_xpbr/`。Pipeline只导入FBX和两张PNG,在Unity创建材质/Prefab,不复制离线mat/meta。
4. 同一混元高模经项目DGXA TokenRig original模板得到自身22骨,保存在 `Tools/output/budbud_dgx/high_rig/`。rig SHA256:`729fbbd33dee63977da22ae809762a2d4894882da04df9c0512291b27e44af98`。
5. 已验收低模Y-up转Blender Z-up,再等比尺寸/底面中心对齐后转权重,保留网格与UV。对齐距离最大0.004639、RMS0.001779(源模型高约1.131);本角色无需额外skinOverrides。绑定后对静态模最大顶点误差0.000026m。
6. 先生成并验收单Walk的121帧蒙皮和四个相位的正侧背面,再补Idle与治疗施法Attack。三段均为同一rig的UniMate新生成源动作,本次均CUDA成功,回执记录rig/源FBX哈希、原始英文提示词和远程任务号。
7. 源动作经离线绑定空间校准、贴地、循环闭合与语义编辑保存为正式.anim;不依赖运行时反向旋转或临时生成动画。统一入口完成Edit及实际Play验收。
自身骨骼检查:root=bone_0、chest=bone_3、头部链bone_4/5;X正侧手臂bone_7/踝bone_16/脚尖bone_17,X负侧手臂bone_11/踝bone_20/脚尖bone_21。正面参考使用不同的左右踝骨16/20;编号只适用于本次芽芽rig。花瓣与花苞随头部链运动,无独立花瓣次级骨。
## 动作与验收
| 动作 | 正式行为 | 121帧实际蒙皮结果 |
| --- | --- | --- |
| Idle | 1.6秒循环,8%源变化+轻呼吸,首尾绑定参考 | 最大形变0.01614m;根倾角1.539°;脚底误差≤0.019mm |
| Walk | 1.1秒原地循环,35%源变化+交替短步 | 左右步幅0.05763/0.05558m;根倾角7.950°;脚底误差≤0.137mm |
| Attack | 1.1秒单次,12%源变化+双叶手抬起前推治疗施法,恢复Idle | 最大形变0.10955m;根倾角2.199°;脚底误差≤0.156mm;内部视觉位移0.002m |
Walk原始根倾角65.349°,并非静态模up改变;用全骨骼源首帧相对绑定姿态校准,保留相对运动后离线收尾。仅改Armature +90°X不能解决,正式资产保留正确绑定空间。
三段首尾顶点误差均为0;Idle/Walk逻辑根水平不漂移。控制器通过Idle↔Walk、两状态进入Attack、单触发一次及恢复请求状态;实际10秒Play观察到Idle、Walk、Attack,最大根倾角7.915°,根位置固定,结束已退出Play。
正侧背静态、Walk四相位、施法蓄力/出手/恢复近景已目视检查;花瓣头与花苞、叶臂和背部小叶无明显拉扯或塌陷。预览可在验收场景的Static/Idle/Walk/Attack/Cycle五组查看,X=60,与火喵X=40隔开。该场景未接入正式关卡。
## 调用与复现
Animator在Model节点:`Motion` Int,0=Idle、1=Walk;`Attack` Trigger触发一次治疗施法。Attack在0.55秒发送 `OnCompanionAttackImpact`,事件接收器应在Animator所在节点或由该处转发。该事件仅提供表现时机,实际回血、范围选取、治疗特效和音效由技能系统接入。
```powershell
python Tools/character_animation_pipeline.py --recipe Config/Art/Companions/BudBud.json --build-review --play-check
```
默认使用哈希校验后的本地来源;显式 `--generate Idle Walk Attack` 才请求新动作。初始 `BudBud.formal.draft.json` 继续保持boneMappingReady=false,仅作禁用草稿记录。
验收报告位于 `Tools/output/companions/BudBud/`:`verification.txt`、`walk_verification.txt`、`play_verification.txt`、`walk_processing.txt`、`motion_processing.txt`、`BudBud_Rigged.skin.json`。近景在 `static_audit/`、`walk_audit/`、`idle_audit/`、`attack_audit/`。
## 旧草稿留档
原Blender程序化1804 tris/8骨版本未通过Unity验收,已由本正式版本替换。原离线文件、配方与文档在 `Tools/output/budbud_offline_draft_20261020/`;原Unity资产通过Pipeline复制至 `AIClient/Assets/Temp/BudBud_OfflineDraft_20261020/`,新GUID且不进入Bundles。旧记录仅作历史,不作为正式来源。
AIClient使用图形batchmode+Unity Pipeline完成本次制作;启动时空白未命名场景(0对象、无修改)已通过Pipeline保存在 `Assets/Temp/BudBud_BatchStartup_20261020.unity`,以允许Additive创建验收场景,未丢弃任何场景内容。
制作结束后,已确认仅打开本次两个已保存场景,并通过Pipeline正常退出本次启动的batch Editor,释放项目锁供人工打开。其他Unity项目未操作。