Files
AIGame/Doc/Design/Character/EnemyCharacterProduction.md
T

202 lines
23 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.
# 敌方角色标准制作方案 v1
2026-10-20。标准入口:`Tools/enemy_character_pipeline.py`;角色配置:`Config/Art/EnemyCharacters/{Name}.json`。岩团团为已落地的短腿双足样例。
## 交付与约定
每个敌人交付已验收静态模、同源骨架和蒙皮、Idle/Walk/Attack、Animator、Enemy视觉Prefab、验收场景、来源清单和验证报告。流程到可调用的视觉资产为止,战斗数值、寻路和伤害结算由玩法接入。
统一约定:Unity Y-up、米制、底面中心原点、局部-Z正面。外层逻辑根旋转identity、缩放1,关闭Root Motion;移动和转向由玩法驱动。网格、骨架和动画必须共用绑定空间,不能靠运行时反向旋转补救。
| 动作 | 标准行为 | 岩团团参数 |
| --- | --- | --- |
| Idle | 原地循环、轻呼吸、首尾连续 | 1.6秒 |
| Walk | 原地循环、交替迈步 | 1.1秒;步幅0.06m、抬脚0.018m |
| Attack | 蓄力→命中→恢复;只播放一次 | 1.0秒;0.25蓄力结束、0.45命中、0.90恢复完成(归一化) |
## 1. 静态模先验收
设计图→混元高模→减面/UV/烘焙→XPbr→静态Prefab。遵循 `GameResProductProc.md` 和 `CharacterUnitArtProc.md`,保留同角色高模。普通敌人以1500~2000三角面、每顶点最多4权重为起点,具体上限写配方;精英/首领显式配置预算与尺寸。
绑骨前先验尺寸、底面、正面、贴图与面数,后续不重做另一个形体替换已验收外观。最终绑定姿态与静态模的默认顶点误差≤2mm。P0可见敌人目标≤40个,仍须在战场做多实例性能验收;单角色通过不代表40实例性能已通过。
## 2. 同角色骨架与空间对齐
先尝试验收网格的TokenRig;过简低模导致关键关节缺失时,对**同角色高模**绑骨再转权重。骨数不能代替关节和动作质量验收。
项目静态FBX导入Blender后仍为Y-up顶点,TokenRig GLB为Blender Z-up。`bl_transfer_skin.py --low-up Y --align-bounds` 先转Y→Z,再以底面中心平移/等比缩放对齐,最后转权重,保留原UV与三角面。几何距离门槛:最大≤尺寸3%、RMS≤1%;不满足就停止检查来源或对齐,不能对另一角色强行蒙皮。
配方记录 `rigSource`,每个动作回执记录rig SHA256,导入前要求完全一致;新生成回执还校验FBX SHA256。Unity检查骨路径与父子关系,禁止按bone_N同名混用其它rig。Armature的+90°X可保留,不单独清零。
## 3. 解剖类型与动作生成
已实现并验证 `biped_short`(短腿双足、两侧短臂,岩团团12骨)、`avian_grounded`(地面鸟型,闪闪雀28骨)、`quadruped_turtle`(四足龟,泡泡龟26骨)及 `quadruped_heavy`(重型四足,岩甲犀29骨)。各自配方记录自身身体/前肢或四脚/脚尖/头颈与正面参考骨;骨数与bone编号只属于各自样例,不能跨角色套用。
其它短腿双足敌人需换成自己的骨名、尺寸和节奏并完整验收。其它四足、长腿人形、飞行或无脚敌人需要对应解剖适配器,当前入口拒绝未知profile;不能直接套双足步幅。标准人形可沿用Mixamo/Kimodo动作来源,仍需同源绑定和三动作验收。
非人动作在同一TokenRig上用UniMate生成。英文提示词写清体型与单一动作,Walk不混jump,Attack不只写move;显式指定左右正面骨,保留实际提交文本、任务号和哈希。三个动作顺序生成。
生成器在独立任务目录工作,成功后才替换当前FBX,最后提交回执;失败不得把旧FBX标成新产物。默认入口使用有效本地缓存,`--generate`才请求DGXA推理。
## 4. 编辑期收尾
源动作是制作中间件,最终.anim必须离线编辑保存,不能依赖运行时临时改骨骼。清单注明“生成源动作+离线编辑”。
- Walk:校准初始根姿态、保留相对变化;锁水平根位移;选重复步态相位、平滑闭合;按解剖配方编辑步幅/抬脚;烘焙实际蒙皮贴地。
- Idle:以绑定姿态为循环参考,保留轻微生成变化并编辑呼吸幅度,首尾一致。
- Attack:以Idle参考开始/结束;编辑清楚的蓄力、命中与恢复;短冲在配方范围内,循环关闭。
这些编辑强度必须写配方,不能把岩团团数值作为所有敌人的统一值。
## 5. Animator与战斗接口
`Motion`(Int):0=Idle,1=Walk。`Attack`(Trigger):请求一次攻击。支持Idle/Walk进入Attack,结束根据Motion返回Idle/Walk;单次Trigger不自动重复攻击。
```csharp
animator.SetInteger("Motion", moving ? 1 : 0);
animator.SetTrigger("Attack");
```
Attack包含 `OnEnemyAttackImpact` 动画事件,时刻=`attackImpact * attackSeconds`。预览允许无接收器;玩法接入时由现有攻击事件或表现桥接处理,避免重复结算。美术事件不直接扣血,不替代服务器/战斗判定。
视觉Prefab输出 `Assets/Bundles/Characters/Enemy/{Name}/{Name}_Enemy.prefab`。新敌人源资产通常放 `Characters/Enemy/{Name}/`;岩团团复用已有 `Characters/Animal/RockBall/` 的模型、动画、XPbr,通过Variant交付Enemy目录,不复制贴图材质。转向时以局部-Z对准目标。
## 6. 验收门槛
| 检查 | 门槛 |
| --- | --- |
| 来源 | 三动作rig哈希一致;新生成FBX与回执哈希一致 |
| 绑定 | 静态形状、尺寸、底面、面数预算、XPbr通过 |
| 整段动作 | 每段121帧实际蒙皮;脚底偏差≤配方容差(样例3mm),倾角/高度合理 |
| Idle/Walk | 循环开启;首尾顶点差<1mm;呼吸/左右迈步可见 |
| Attack | 循环关闭;动作可读;恢复Idle;一个命中事件且时间正确 |
| 切换 | Idle↔Walk;二者均可进入Attack;单次触发一次;结束返回请求状态,过渡不明显穿地 |
| Play | 真实观察到三状态、逻辑根不漂移、方向不翻转 |
| 目视 | 静态/三动作/自动轮播并排,检查正面、贴图、穿模、脚滑与攻击可读性 |
不能用SkinnedMeshRenderer的保守剔除包围盒判断脚底。Edit验收通过骨骼矩阵和bindposes计算实际顶点;Play验收观察状态/骨骼/逻辑根,不为测试永久打开网格Read/Write。
## 7. 制作入口与复现
```powershell
python Tools/enemy_character_pipeline.py --recipe Config/Art/EnemyCharacters/RockBall.json --validate-recipe
python Tools/enemy_character_pipeline.py --recipe Config/Art/EnemyCharacters/RockBall.json --build-review --play-check
# 重新生成指定动作,再完整制作
python Tools/enemy_character_pipeline.py --recipe Config/Art/EnemyCharacters/RockBall.json --generate Idle Attack --build-review --play-check
```
复制配方后修改id、kind/assetRoot、静态/骨架来源、Enemy输出、尺寸/预算、全部骨名、动作来源与文本。先验配方,再生产和验收;配置合法不等于资产通过。
执行链:`SetupAnimalAnimator.Run`→`FinalizeAnimalWalk.RunFor`→`FinalizeEnemyMotions.Run`→`VerifyEnemyMotions.Run`→`BuildEnemyReview.Publish/Build/Capture`。验收场景Additive创建、隔离渲染层,保留其它场景未保存编辑。
输出 `Tools/output/enemy_characters/{Name}/production_manifest.json`、`verification.txt`、动作处理记录、原始回执;完成后登记Model/Animation/Picture,并将总验收manifest的requiredClips设为三动作。旧 `run_rockball_walk.ps1` 只作单Walk诊断,会缩减控制器,正式制作使用新入口。
`--play-check`执行实际Play轮播,截图后自动退出Play。清单只有 `status=validated` 且qa两项均通过才表示完整交付;不带Play检查仅标 `edit_validated`。制作中标 `building`,不能将未完成结果视作通过。
## 岩团团样例
配方 `Config/Art/EnemyCharacters/RockBall.json`;视觉Prefab `Assets/Bundles/Characters/Enemy/RockBall/RockBall_Enemy.prefab`;场景 `Assets/Bundles/Scenes/Review/Enemy_RockBall_Review.unity`。横躺原因和单Walk历史保留在 `RockBall/WalkRiggingFix.md`,本方案是其三动作生产版本。
本次Idle/Attack在同一rig上重新生成;Walk沿用已验收源。三动作离线收尾后各121帧通过:Idle最大形变0.00635m,Walk左右步幅约0.06216/0.06124m,Attack最大形变0.13320m、最大根倾角14.098°;三段脚底误差均<0.6mm、首尾顶点差为0。控制器单次攻击与状态恢复、实际Play三状态轮播均已通过。3项配置/生成失败保护测试通过,完整一键生产命令已执行成功。
## 伙伴复用说明(2026-10-20)
同角色骨架、三动作离线处理与验收也供伙伴使用,统一入口为 `Tools/character_animation_pipeline.py`;原 `Tools/enemy_character_pipeline.py` 命令保持兼容。
伙伴配方使用 `usage: companion_visual`、`visualPrefab` 和独立 `reviewOriginX`,输出仍在对应角色的 `Characters/Animal/{Name}`,不创建敌方Variant。伙伴验收对象与相机使用含角色名的 `CompanionReview_{Name}` 前缀,避免与已加载的敌方验收对象重名;构建仍以Additive方式保留其他场景。
远程伙伴可选 `attackStyle: ranged_cast`,通过离线双臂抬起/前伸表现施法;`attackReach` 是小幅骨骼前伸,`attackLunge` 只控制模型内部的视觉位移。`attackEvent` 可配置,伙伴默认 `OnCompanionAttackImpact`,敌方沿用 `OnEnemyAttackImpact`。事件是视觉时机接口,接入实际火球与伤害前不表示玩法已完成。
新角色必须检查自身TokenRig后填写骨骼映射;禁止复用岩团团的bone编号。`boneMappingReady: false` 的草稿会被入口拒绝,不能当作完成资产。火喵正式配方为 `Config/Art/Companions/FireCat.json`,已完成1998 tris/1024 XPbr、自身22骨、Idle/Walk/施法Attack、伙伴视觉Prefab及Edit/Play验收;初始draft保留为禁止运行的制作记录。
火喵Walk的源动作在根骨之外还带有腿部坐姿偏移。此类来源使用 `walkBindCalibration: true`:每根骨骼以源首帧为参考,把相对运动应用到同rig的绑定姿态,并以 `walkSourceWeight` 控制幅度,然后再处理短步、贴地和循环。只纠正根骨不能保证腿部姿势正确;必须查看完整蒙皮的多个走路相位。旧岩团团配方默认沿用已验收处理方式。
DGXA显存不足时,可对指定动作加 `--generation-device cpu`(统一入口)或 `--device cpu`(generate_enemy_motions.py),只修改本次任务的独立采样配置;生成回执记录设备,不停止其他模型服务。火喵Attack首次CUDA运行因节点同时运行混元与音频服务而失败,保留失败日志并改用CPU重试。无需重新生成已经有效的Idle/Walk。
若自动骨架遗漏尾骨等附肢且权重错误跟随前臂,必须在最大动作幅度下检查蒙皮。配方可用 `skinOverrides` 以原静态模坐标/高度归一化的seed选取表面测地距离区域,在fullDistance到fadeDistance间渐变到指定已存在骨骼;该编辑只影响权重,不改变网格、UV或动作骨架。必须保留几何距离与受影响顶点范围报告,检查区域未误选头/躯干,完成绑定对照及动作峰值目视。火喵尾部175个顶点转到根骨后通过;目前没有独立尾骨的次级摆动。
对新角色先完成单Walk数值门禁(`VerifyEnemyMotions.Walk(recipePath)`)及多个相位目视,再交付完整三动作。数值门禁不能代替动作语义检查:施法必须能看出双爪前推,Idle不能大幅摇摆。最终配方支持 `idleSourceWeight` / `attackSourceWeight` 调整源运动幅度。
## 地面鸟型伙伴适配(2026-10-20)
闪闪雀配方 `Config/Art/Companions/SparkBird.json` 与制作记录 `SparkBird/ProductionBrief.md` 为 `avian_grounded` 已验收样例。它有自身28骨,不能复用短臂生物的骨名或把飞行作为Walk。该适配仅覆盖双足地面行走及挥翼施法;持续飞行、悬停与飞行切换需另建适配器。
`attackStyle=wing_cast` 与avian_grounded必须成对使用。通用rightArm/leftArm字段表示各自翼根,额外提供rightWingTip/leftWingTip;检查左右骨独立、翼根分居身体两侧。离线负X旋转把初始向外/向上的鸟翼向局部-Z扫出,两侧相反的Z旋转按wingSpreadDegrees展翼,attackReach可加小幅前伸。抬翼不能用身体前倾冒充;VerifyEnemyMotions扣除根骨转动后检查每侧翼尖相对身体前挥>1cm,并仍通过完整蒙皮/脚底/高度/循环/恢复/事件/控制器及Play门禁。
闪闪雀先完成单Walk再生成Idle/Attack,均同rig且CUDA成功;0.9秒Walk,1.4秒Idle,1.0秒Attack,0.45秒OnCompanionAttackImpact。双翼实际相对前挥约3.4/3.7cm,尾羽/冠羽无独立次级骨但峰值形状目视通过。伙伴Prefab、X=80独立场景、Edit/Play均已交付;5项流程保护测试和2个C#脚本编译通过。参数只属于该角色,复制到其它鸟型时须重查自身解剖和重新验收。
## 四足龟伙伴适配(2026-10-21)
泡泡龟 `Config/Art/Companions/BubbleTurtle.json` 为已验收quadruped_turtle/turtle_bubble样例,最终26骨、0.35m/2000tris;详情见BubbleTurtle/ProductionBrief.md。该适配覆盖水平四足龟和缩颈探头施法,其它四足仍需检查解剖与动作类型,不能直接套用。
前右/前左/后右/后左踝及脚尖全部独立映射,FinalizeAnimalWalk.RunQuadruped将源变化校准到绑定姿态,四拍20%摆动窗口保证每次一脚抬起,固定脚部朝向并烘焙实际蒙皮贴地。VerifyQuadrupedMotions每段121帧计算四只脚各自的实际网格步幅/抬脚/支撑,Walk至少三脚支撑,Idle/Attack四脚撑地。骨点移动不能代替实际网格移动;泡泡龟后左脚原步幅不足,经离线paw权重区域修正后四脚均达约3.4~3.5cm,门槛未放宽。
shellRegionMin/Max在Unity归一化空间选取壳区,扣除shellBone刚性变换后检查≤1mm形变;可见身体倾角使用壳体相对绑定姿态的世界up,不能用固定根骨掩盖身体倾斜。skinRegions在原静态FBX顶点/高度空间控制权重,两者Z方向转换必须明确;每个区域保留影响数和范围,保持几何/UV不变。
静态三分之四设计图可能生成斜向躯干。先离线统一高模和后续绑定源,再在Unity前/侧/背面确认;glTF相机约定不能代替游戏朝向检查,须计入FBX左右手转换。新增绑定门禁要求头及前脚位于后脚的-Z方向,泡泡龟最终采用原高模Blender Z +45°;17骨斜向/11骨反向均留诊断,正式动作只用26骨同一rig哈希。
标准入口自动选择四足Walk与专用验证器,Idle/Attack使用离线turtle_bubble收尾:四脚固定、缩颈→探头→恢复,0.6秒OnCompanionAttackImpact。三动作/壳刚性/接缝/控制器/实际Play均通过,6项Python保护测试和4个C#脚本编译通过;真实泡泡投射物/缓速/音效仍由技能系统接入。
## 重型四足伙伴适配(2026-10-21)
岩甲犀 `Config/Art/Companions/RockRhino.json` 为quadruped_heavy/braced_bash已验收样例:0.55m/2000tris/自身29骨。先离线统一高模朝向,再静态Unity三视图确认-Z;检查本角色胸背、头颈及四蹄映射,禁止套用龟的探头施法或其它角色bone编号。
重型四足复用RunQuadruped四拍步态;Attack独立编辑胸背前送、头颈短促推进和低头,四蹄撑地,逻辑根固定。配方必须给出armorRegion与hornRegion及各自≤2mm刚性预算(样例均1mm),对应chestBone/headBone;QA扣除各自刚性变换后检查实际顶点,另检查肩部前送和角区相对头枢轴降低,不能用根骨运动或纯转向冒充冲撞。区域坐标与蒙皮源空间的Z转换沿用明确登记原则。
岩甲犀先通过单Walk,再生成Idle/Attack。Attack源变化8%时后蹄离地4.08mm失败,调整为4%后降至1.77mm,通过原3mm门槛;头前送4.15cm、肩前送2.51cm、可见头转约11.21°,岩甲/头角区域刚性通过。四脚步幅约5.96~5.98cm、抬脚约1.47~1.60cm,至少三脚支撑;三段首尾与根XZ误差0,Edit/控制器/实际Play通过,0.6秒伙伴事件。详情见RockRhino/ProductionBrief.md。
入口run_script显式使用服务器timeout_ms=90000、CLI --timeout 120,覆盖现场Editor刷新后的调度延迟;不自动重试结果未知的写入。四足验证失败另存last_failure.txt后仍抛错,不能以旧失败文件或CLI外层成功替代当前verification与validated状态。7项Python流程保护测试覆盖重型分支错误配对、缺失刚性区域、共享头胸和四蹄映射;泡泡龟只读回归验收通过。
## P0 五类正式敌人(2026-10-21)
5 类敌人都按短腿双足 `biped_short`/`body_slam` 制作,共用一个已验证的解剖适配器,不需要新的四足或飞行适配器。设计、来源与验收结果见 `Doc/ResDesc_Model.md`「P0 五类正式敌人」;配方在 `Config/Art/EnemyCharacters/`。
| type | 敌人 | 配方 | 高度 | 骨数 | Walk/Idle/Attack |
| --- | --- | --- | --- | --- | --- |
| 0 | 小角怪 | Hornlet.json | 0.50m | 22 | 1.0/1.6/1.0s |
| 1 | 疾跑怪 | Dashlet.json | 0.50m | 22 | 0.8/1.4/0.9s |
| 2 | 硬壳怪 | Shellhorn.json | 0.50m | 28 | 1.2/1.8/1.0s |
| 3 | 角怪队长 | HornCaptain.json | 0.60m | 22 | 1.1/1.8/1.0s |
| 4 | 大角首领 | GreatHorn.json | 0.80m | 22 | 1.3/2.0/1.2s |
流程:设计草图(内网本地 Turbo)→ 用户选定 → 混元官网 50k → Blender 八向渲染确认正面 → `Tools/enemy_static_pipeline.py {Name} {height}`(烘焙、安装、静态 Prefab、四向检查)→ `Tools/rig_character_source.py --generate`(DGXA)→ 检查骨架填写配方 → `Tools/generate_enemy_motions.py`(DGXA)→ `character_animation_pipeline.py --build-review --play-check`。
本批次新增的注意事项:
- **DGXA 调用必须从 PowerShell 启动。** NVIDIA Sync 的 SSH 别名 `DGXA` 写在 `~/.ssh/config` 的 Windows 路径 Include 里,只有 Windows OpenSSH 能解析。Git Bash 下 ssh 解析失败,TokenRig 会静默回退本机 SkinTokens,得到单链退化骨架。`rig_character_source.py` 现在遇到回退会直接报错。DGXA 未连接时先运行 `Tools/dgx_ensure_ready.py`。
- **生图后释放显存。** 本地 Turbo 生图模型会占用 DGXA 约 43GB,导致 TokenRig 显存不足;3D 前调用 `POST /api/local-images/prepare-3d`。
- **DGXA 任务串行。** TokenRig 与 UniMate 并发时出现过 `No module named 'Animation'`,重试即可,应避免同时提交。
- **检查游离网格岛。** 混元高模可能把细尾尖等做成悬浮的独立网格,TokenRig 会丢弃,导致 `bl_transfer_skin` 报 bind geometry mismatch。先焊接 UV 接缝统计网格岛;有游离岛时用 `Tools/model_tools/bl_keep_main_island.py` 生成 `_main.glb`,烘焙和绑骨都用它。
- **验收后关闭验收场景。** 验收场景以 Additive 方式留在编辑器中,其相机 depth 很高,会盖住游戏 Play 画面。
战场接入:`BuildPrototype.ApplyFormalEnemies` 在 `PrototypeArena` 每个 `Enemies/EnemyN` 下嵌套 `Type0~4`,统一 1.2 单位高。`PrototypeFlow` 按 type 显示对应模型;`PrototypeBattle.Enemy` 新增仅供表现的 `Moving`/`Strikes`,移动时 Motion=1,每次出手触发一次 Attack,受击只做轻微缩放。`VerifyFormalEnemies.Assets`/`PlaySeeded`/`Cleanup` 为验收入口。
## 双足火焰施法伙伴适配(2026-10-21)
烈焰狮 `Config/Art/Companions/FlameLion.json` 为biped_short/flame_roar已验收样例:0.60m/2000tris/自身远程28骨。profile仍为双足;新attackStyle要求自身头颈/胸背/双臂与爪尖/双脚、鬃毛区域与≤2mm刚性预算,禁止套用火喵编号或按大头外观改成四足。
离线施法固定双脚与逻辑根,编辑头部前送/抬头、双爪前送/展开,开始与结束为Idle参考。QA对头鬃区实际网格扣除头骨刚性变换检查,对头部和双爪扣除胸背转动检查释放行为,并对两脚实际顶点测步幅/抬脚/支撑。不能只看脚骨或用身体前倾冒充施法。烈焰狮没有独立下颌或尾骨,本版无张嘴口型与独立尾摆;尾部58个源顶点跟随髋骨。
头鬃宽空间区域与尾部相邻时,bl_transfer_skin先执行skinRegions,再由精细skinOverrides测地距离覆盖,防止尾簇被头部或前臂带动。两种规则必须按自身网格检查,不能盲抄;此前已有伙伴未同时启用两种覆盖,其原单类行为不变。
烈焰狮先通过单Walk再补同rig Idle/Attack。25%Walk源变化导致左脚实际抬脚6.71mm失败,降至12%后11.91mm通过,未放宽门槛;两脚实际步幅48.66/67.37mm。Attack头前送16.24mm/抬头6.654°、双爪前送约6cm/外展约2cm,双脚支撑、鬃毛刚性及Edit/实际Play通过,0.6秒伙伴事件。详情见FlameLion/ProductionBrief.md。
本机TokenRig回退曾产出异常33骨长链,不可按生成回执直接当可用骨架。`rig_character_source.py --backend remote`要求远程回执且拒绝隐式本机回退;显存错误需保留诊断、验证GPU状态后重试,不停止其它服务。最终烈焰狮只接受DGXA28骨哈希。8项流程保护测试与火喵只读回归通过。
并排截图使用BuildEnemyReview.Capture隔离Prefab实例,在PreviewScene采样指定相位并异步等待渲染更新,避免已有Animator状态让Attack列显示旧Idle姿势;不改写或暂停真实验收场景。该方法已实际编译执行、峰值截图核对通过。
## 敌人攻击/受击表现衔接(2026-10-21)
五类正式敌人已接入8套攻击/命中特效与8条TangoFlux短音效,受击不再只有缩放。资产放在 `Assets/Bundles/Effects/EnemyCombat/` 和 `Assets/Bundles/Sound/SFX/EnemyCombat/`;完整方案见 [../Combat/EnemyCombatFx/Production.md](../Combat/EnemyCombatFx/Production.md)。继续制作敌人时需检查类型映射、攻击与目标命中位置、硬甲分类、音效开关及池回收;不能让动画事件扣血或把减速Pulse当成实际命中。现有规则即时结算与动画前摇的对齐属于下一阶段技能时序改造。
## Studio低模/UV与原动作复用试验(2026-10-21)
大角首领已完整跑通官网Studio低模13,159面→官网UV→Blender坐标对齐/贴图烘焙→超过2000面目标30%后保留UV减面至2000→Blender转原22骨→直接复用原Avatar/控制器/三段成品动作。交付为独立GreatHornStudio,未替换正式角色;详情 [GreatHorn/StudioTrial.md](GreatHorn/StudioTrial.md)。
新增门禁:Studio模型可能被居中和归一化,必须先对齐高低模再烘焙,且保留官网原始下载文件与UV哈希;不能假设坐标沿用上传源。原动作脚底收尾依赖旧网格,新拓扑必须重新采样实际蒙皮;本例两个新脚底顶点各1毫米局部适配后通过3毫米贴地门槛,原骨骼/UV/动作不变。保留UV减面不等于保留Studio原13k网格的所有关节布线优势,最终2000面仍需目视评估。
## 四敌人Studio流程复验完成(2026-10-21)
Hornlet、Dashlet、Shellhorn、HornCaptain均按大角首领2~5步流程完成独立Studio版,绑定各自原骨架并直接复用原Avatar/控制器/三段成品动作。使用通用StudioTrial脚本按本角色骨数、尺寸及实际动作约束验收;禁止照搬大角首领骨编号或脚底顶点。生成、修正、Edit/Play及资源路径见 [StudioEnemies/Production.md](StudioEnemies/Production.md)。