Add rank, friends, fishing, and camp treasure with T2 studio models and skill presentation.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
udx
2026-10-21 23:01:31 +08:00
co-authored by Cursor
parent 89e0fa246f
commit 079313fb06
677 changed files with 395371 additions and 9692 deletions
@@ -0,0 +1,48 @@
# 大角首领:Studio低模/UV与原动作复用试验
2026-10-21,状态 validated。用户明确授权原始 greathorn.glb 上传腾讯混元3D Studio,实际完成截图流程第2~5步,并在本地Blender绑回原22骨。交付独立试验版;现有关卡继续使用原GreatHorn,未替换正式战场。没有重新调用TokenRig/UniMate,也没有修改原动作。
## 实际结果
| 阶段 | 实际执行与产物 |
| --- | --- |
| 原始高模 | `Tools/output/enemy_3d/GreatHorn/greathorn.glb`,49,976三角面,原文件保留 |
| 02 Studio低模生成 | 官网低模拓扑V1.5,三角面/低;得到13,159三角面。任务及下载记录 `hunyuan_studio.json`/`studio_lowPolyTopologyRsp.json` |
| 03 Studio UV展开 | 上传上一步的准确FBX继续展开;输出带TEXCOORD_0的GLB、FBX、OBJ与UV布局PNG;13,159面,8,120个含UV分裂的顶点;`studio_uvUnwrappingRsp.json`留证 |
| 烘焙前坐标对齐 | Studio将网格居中并归一化,原高模为底面原点。用等比缩放1.05257233、底面中心平移对齐到原高模;UV哈希前后一致;原Studio下载文件保留 |
| 04 Blender贴图烘焙 | 对官网UV网格做selected-to-active,1024² diffuse/normal/AO/metallic/roughness;输出 `model_baked.glb` 和 `bake_maps/`,不重新展UV |
| 05 保留UV减面 | 13,159 > 2,000×1.3,实际触发Collapse减面到2,000面;保留原UV层和烘焙贴图,无再次UV展开。记录 `model_decimated.json`/`decimate.log` |
| 项目格式 | Blender Y-up、底面中心、-Z正面导出FBX,五通道打包1024² XPbr base/mix;转格式前后UV哈希相同 |
| 绑回原骨骼 | Blender从原 `enemy_dgx/GreatHorn/high_rig/rigged.glb` 复制原22骨并转权重,每顶点最多4个归一化权重;骨骼路径/绑定局部TRS与原角色逐项核对 |
| 复用动作 | 试验Prefab的Animator直接引用原Avatar和 `GreatHorn_Animator.controller`,仍播放原 `Clips/Idle.anim`、`Walk.anim`、`Attack.anim`;无重导出/重生成动画 |
所有工作中间件位于 `Tools/output/enemy_studio_trial/GreatHorn/`;完整来源、最终哈希与原资源哈希快照见 `trial.json`。官方低模、UV、烘焙前/后及减面结果分别保存,能够定位差异。
## 关键修正
初次直接使用工作台烘焙函数时出现脸部贴图错投、身体黑块。原高模Blender Z范围约0~1.054628,而Studio原UV模型约-0.500000~0.501953;低模还丢失原来的中心偏移。`bl_align_studio_uv.py` 仅做坐标和尺寸对齐、保持UV,之后重烘焙恢复正确外观。错误烘焙原稿 `diagnostic_unaligned_baked.glb` 只作为诊断保留,未交付到正式资源。
原成品动作是在旧网格脚底上收尾的,新拓扑直接转权重时,Walk/Attack出现约3毫米脚底穿地。检查发现一个脚尖顶点在四个腿骨的任何凸组合下仍会穿地,因此仅调权重不能解决。最终在Blender对新蒙皮网格两个脚底顶点(706/1543)各做游戏空间1毫米的局部上移;原骨骼、全局Transform、三段动作、UV与三角面数均未改变。绑定对照静态试验模的最大顶点差1.0044毫米,仍低于2毫米门槛。此局部形状差异保留于 `sole_fit.json`,没有通过抬整个角色或放宽3毫米门槛处理。
## 交付与验收
- 试验根目录 `AIClient/Assets/Bundles/Characters/Enemy/GreatHornStudio/`:`GreatHornStudio.prefab`(静态)、`GreatHornStudio_Enemy.prefab`(动画)、`GreatHornStudio.fbx`、`Rigged/GreatHornStudio_Rigged.fbx`、`GreatHornStudio.mat`、`GreatHornStudio_base.png`/`GreatHornStudio_mix.png`。
- 独立场景 `AIClient/Assets/Bundles/Scenes/Review/Enemy_GreatHornStudio_Review.unity`:上排原版,下排Studio版,依次Static/Idle/Walk/Attack,使用独立27层与X=300位置;Additive制作与截图后关闭,未重建角色总验收场景。
- 对比图 `AIClient/Assets/Screenshots/greathorn_studio_comparison.png`,1800×900。已目视核对两版静态与三动作采样;坐标修复后脸部、角、披风及身体贴图正常。
- 编辑QA:2000面、22骨、绑定高0.8000002m,原Avatar/控制器/三动作引用逐项一致,所有动画曲线均绑定到现有节点,每顶点最多4权重且归一化。
- 每段121帧采样(共363帧):Idle底面约-0.002~0.044毫米;Walk约-2.178~1.562毫米;Attack约-2.556~1.266毫米,均满足3毫米门槛。三段首尾顶点差0;Idle/Walk水平根漂移接近0,Attack保留原动作约25.07毫米的前冲。报告 `unity_verification.json`。
- 实际Play观察到Idle/Walk/Attack三状态,最大根骨倾角9.736°,外层角色根固定;报告 `play_verification.json`。验证后退出Play。
- `trial.json` 原Prefab、Avatar来源rig、控制器与三段成品动作的SHA256快照复核一致。
## 复现
```powershell
# 使用3D工作台已配置的依赖环境;已完成的Studio产物会复用
D:/UD/AI/XModel/LLM3DGraphics/.venv/Scripts/python.exe Tools/greathorn_studio_trial.py
# 本地格式转换、原骨架转权重、局部脚底适配、Pipeline入库与原动作QA
python Tools/greathorn_studio_finish.py --play-check
```
制作脚本不改写XModel外部工作台代码。Studio调用依赖已有项目混元会话,外传需用户授权;本次已明确授权该模型。Unity操作统一Pipeline并显式指定AIClient项目;有其他Play占用时先保留离线产物,协调后入库。
本次证明Studio低模/UV→烘焙→条件减面→原骨架/原动作复用可以跑通。两版最终同为2000面,Studio减面前13k拓扑的优势在进一步Collapse后需要重新评估;最终新网格为1783个源顶点(包含UV分裂),不能将这个数字与旧版950个焊接源顶点直接当成性能提升结论。正式替换前可结合近景布线、材质接缝、动作极值与目标设备预算决定采用哪版;本试验没有宣称全面优于原版。