Files
AIGame/Doc/Design/Character/RockRhino/ProductionBrief.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

70 lines
7.4 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.
# 岩甲犀 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、不重建总场景。