Files

49 lines
5.9 KiB
Markdown
Raw Permalink 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.
# 大角首领: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个焊接源顶点直接当成性能提升结论。正式替换前可结合近景布线、材质接缝、动作极值与目标设备预算决定采用哪版;本试验没有宣称全面优于原版。