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,69 @@
# 岩甲犀 RockRhino · T1 伙伴制作记录
2026-10-21完成。伙伴ID=5,前排控制,主动技能“碎岩震荡”(kind=slow)。蓝灰身体、青色岩甲、象牙独角与四足体态沿用原型身份,风格与现有正式伙伴一致。交付角色视觉;Config/Gameplay/greenfield.json玩法数值未修改。
## 交付
| 项目 | 路径 |
| --- | --- |
| 静态伙伴 | `AIClient/Assets/Bundles/Characters/Animal/RockRhino/RockRhino.prefab` |
| 动画伙伴入口 | 同目录 `RockRhino_Companion.prefab` |
| 骨架中间Prefab | 同目录 `RockRhino_Rigged.prefab` |
| 独立验收场景 | `AIClient/Assets/Bundles/Scenes/Review/Companion_RockRhino_Review.unity` |
| 并排/Play截图 | `AIClient/Assets/Screenshots/companion_rockrhino_{review,play}.png` |
| 正式配方 | `Config/Art/Companions/RockRhino.json` |
| 来源与验收状态 | `Tools/output/companions/RockRhino/production_manifest.json`,status=validated |
0.55m、2000三角面/990原始顶点,1024² base/mix、Test/XPbr;每顶点最多4个归一化权重。Unity Y-up、底面中心、局部-Z为正面。外层逻辑根单位缩放/旋转identity,关闭Root Motion;未通过运行时补转、改骨或临时造动画修正朝向。
## 来源与朝向
内置image_gen参考 `AIClient/Assets/Bundles/UI/Texture/Prototype/proto_pet_5.png` 的角色身份及 `Doc/Design/Character/FireCat/firecat.png` 的风格生成 `rockrhino.png`,1536×1024,白底四角RGB最小251。完整最终提示词、生成模式与参考保存在design_prompt.txt;设计原稿留在Doc,不进Bundles。
用户明确授权本角色设计图提交腾讯混元3D(3d.hunyuan.tencent.com),以及后续模型/骨架发送项目内网DGXA(192.168.132.46)完成绑骨和三动作。官方网页50k任务 `4d627ad034af4ca18079d3dbfd188718` 得到 `Tools/output/rockrhino_3d/rockrhino.glb`,实测49992 tris,内嵌贴图解码通过。
首版静态模在Unity正面显示朝向偏侧,保留 `static_audit_initial` 为诊断。原高模离线绕Blender Z +70°并重置底面中心,得到 `rockrhino_forward.glb`,再统一减面烘焙和绑骨;此次角度来自本角色检查,不沿用泡泡龟参数。最终Unity前/侧/背视图确认鼻角和头朝-Z、前后脚方向正确。刚性校准保留源形状和UV,无运行时补转。
正式烘焙目录 `Tools/output/rockrhino_game_forward/rockrhino_forward_xpbr/`。Blender5减面/UV/烘焙到2000 tris/1024贴图;Pipeline只导入FBX与两张PNG,在Unity创建XPbr材质和Prefab。初始侧向烘焙仅作诊断。
## 同源骨架与蒙皮
同角色forward高模经DGXA TokenRig original生成自身29骨。骨架 `Tools/output/rockrhino_dgx/high_rig/rigged.glb`,来源回执rig_request.json。rig SHA256:`26e215886fb538baa3b58bbb511b8d21bd3ce00ef4ddf316d7d8c5d210f86ca0`。三段UniMate源动作均在该rig上新生成、CUDA成功,回执保留英文提示词/任务号/rig与FBX哈希;先通过单Walk门禁及五相位目视,再生成Idle/Attack。
自身映射:root0、chest1、neck2、head3、嘴部链4、耳链5..8;前右下腿/蹄尖11/12、前左15/16、后右19/20、后左27/28,尾链21..24。编号只属于本角色,禁止套用其它伙伴。Armature导出轴约定与三动作保持一致,不单独清零。
低模Y-up→Blender Z-up,对齐底面中心/等比尺寸后转权重,保留网格与UV。表面距离最大0.005907/RMS0.002024(源高约0.738),绑定后对照静态模最大顶点误差0.000041m。
按本角色网格检查设置离线skinRegions:岩甲/胸背区影响231个源顶点、200个全权重至chest1;头角区379个、341个全权重至head3;四蹄分别影响77/87/82/82个源顶点。每区保留渐变与范围报告,不改几何。耳部随头部整体运动;本版未制作独立耳部次级动作。
skinRegions采用原静态FBX坐标/高度,其Z与Unity相反;armorRegion与hornRegion采用Unity归一化坐标供独立QA。刚性验收覆盖350个岩甲区/73个头角区Unity顶点,扣除对应骨骼刚性变换后误差在报告精度为0,门槛均1mm。四脚实际采样127/146/129/124个蒙皮顶点。
## 三动作与验收
| 动作 | 成品行为 | 各121帧实际蒙皮结果 |
| --- | --- | --- |
| Idle | 2.0秒循环,4%源变化与轻微头部呼吸 | 最大形变0.00724m,身体倾角0.818°,四脚支撑 |
| Walk | 1.4秒原地循环,12%源变化与四拍短步,20%摆动窗口 | 四脚步幅0.05979/0.05962/0.05976/0.05963m,抬脚0.01468/0.01531/0.01596/0.01599m,至少三脚支撑,身体倾角1.125° |
| Attack | 1.2秒单次,4%源变化与头肩后收→低头短冲→恢复 | 最大形变0.09503m,头前送0.04145m/回收0.01373m,肩前送0.02507m,头转角11.208°,角区相对头枢轴降低0.03277m,身体倾角2.845°,四脚支撑 |
Attack初版保留8%源变化时一只后蹄离地0.00408m,未通过四脚撑地门槛。将该角色attackSourceWeight调为4%后,最大后蹄离地降至0.00177m,其余蹄≤0.00098m;低头/肩部前送仍通过。未放宽3mm撑地门槛,也未重新标记旧动作来源。
三段首尾顶点差均0、逻辑根XZ漂移0。Walk实际整体脚底范围[-0.000045,0.000164]m,Idle/Attack约±0.001mm;岩甲和独角保持刚性。静态四向、Walk五相位、Idle中段、Attack蓄力/命中/恢复四向近景均已检查,未见明显拉伸或穿模。
控制器验证Idle↔Walk、两者进入Attack、单次Trigger只攻击一次、结束返回所请求状态及过渡贴地通过。实际10秒Play观察到Idle/Walk/Attack,最大身体倾角2.826°、外层根固定,完成后退出Play。独立X=120场景包含Static/Idle/Walk/Attack/Cycle五组,Pipeline Additive创建,保留已有场景。
完整标准入口已用最终配方执行成功,清单status=validated。现场Editor导入后曾出现脚本调度超时;流程脚本现在为run_script显式设置服务器90秒/CLI120秒窗口,不在未知执行结果上自动重试写入。QA在失败时另存last_failure.txt用于诊断;该文件保留修正前失败历史,当前结果以verification.txt与validated清单为准。
## 调用与复现
Animator在Model节点:Motion Int 0=Idle、1=Walk;Attack Trigger触发一次头肩冲撞。Attack在0.6秒发送OnCompanionAttackImpact,事件接收器需位于Animator节点或转发。
当前交付为可调用的角色视觉资产。真实冲锋/目标选择、减速结算、震荡特效、音效及关卡简模替换仍由技能系统接入,不表示本次已完成。
```powershell
python Tools/character_animation_pipeline.py --recipe Config/Art/Companions/RockRhino.json --build-review --play-check
```
quadruped_heavy/braced_bash为本次已验证解剖分支,复用四足步态基础,独立检查胸背/头颈/四蹄和岩甲/独角刚性、肩部前送与可见低头。其它四足仍需检查自身映射与完整验收。初始RockRhino.draft.json继续boneMappingReady=false,仅作禁用历史草稿。
报告位于Tools/output/companions/RockRhino:production_manifest.json、verification.txt、walk_verification.txt、play_verification.txt、walk_processing.txt、motion_processing.txt、RockRhino_Rigged.skin.json;近景为static_audit、walk_audit、idle_audit、attack_audit。资源分别登记Picture/Model/Animation/Config,并将静态及伙伴追加总验收manifest,仅ValidateOnly、不重建总场景。
@@ -0,0 +1,18 @@
Mode: built-in image_gen (generate; stylized-concept)
Date: 2026-10-21
Output: Doc/Design/Character/RockRhino/rockrhino.png
References:
- AIClient/Assets/Bundles/UI/Texture/Prototype/proto_pet_5.png (identity)
- Doc/Design/Character/FireCat/firecat.png (style)
Final prompt:
Use case: stylized-concept.
Asset type: production concept for the Unity game AIGame, one T1 companion RockRhino / 岩甲犀, ID 5.
Input images: Image 1 is the EXISTING prototype identity reference: blue-gray rhino, ivory horn, cyan angular armor; preserve this recognizable palette and identity while replacing its primitive proxy geometry. Image 2 is STYLE ONLY: match the FireCat companion's friendly polished chibi 3D game render, big expressive glossy eyes, appealing rounded volumes and clean readable shapes. Do not add cat features or fur to the rhino.
Subject: one small friendly stocky FOUR-LEGGED rhinoceros with a broad rounded blue-gray head and muzzle, two large expressive dark eyes, small rounded ears, ONE short sturdy ivory horn centered on its nose, a thick squat blue-gray body, a few broad softly beveled cyan / teal stone armor plates integrated across shoulders and back. Short visible tail. Compact strong legs with simple rounded gray hooves. Stone plates are solid continuous attached armor, with shallow seams, not floating shards.
Pose: calm neutral rigging-friendly quadruped standing pose. Four distinct stout legs, all four separate hooves grounded on a common flat plane, visible gaps between each leg and belly. Bilaterally symmetrical anatomy and level back. Head held naturally forward at rest, not attacking, not grazing. Neck readable and separable from shoulders for a later short braced head-and-shoulder bash animation.
Composition: single full-body character, centered, landscape 3:2 composition, very shallow front three-quarter view (about 15 degrees off frontal) to show horn, both eyes, body length and all four legs; no exaggerated perspective or foreshortening. All horn, ears, tail and hooves fully in frame, generous white margin.
Scene: pure solid white #FFFFFF background to all four corners, soft neutral studio lighting and minimal subtle contact shadow directly beneath feet.
Material: smooth matte blue-gray skin, rounded stylized cyan stone armor, ivory horn; high quality soft 3D game art, simple surfaces suitable for 2000-triangle mobile-game reconstruction and 1024 textures. T1 base creature with restrained armor, no equipment.
Constraints: exactly ONE rhino, ONE nose horn, FOUR legs; no text, no lettering, no watermark, no borders, no reference panels, no UI, no floor base, no scenery, no other characters, no saddle, no accessories, no magical glow, no particles, no floating stones, no attack effect, no biped pose.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB