Replace TownSquare with HomeCamp art and land humanoid bots, LittleBear, and LmGirl review assets.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
udx
2026-11-03 20:33:08 +08:00
co-authored by Cursor
parent 45e62132c8
commit 9eec364f30
838 changed files with 57978 additions and 12225 deletions
+15 -4
View File
@@ -21,11 +21,11 @@ Pipeline:`AIClient/AgentScripts/BuildCharacterReview.cs`、`SetupCharacter.cs`
- `Animal`:非人生物 / 宠物正式模型(站姿或四足,目标身高按物种登记)
- 后续武器/道具走 `GameResProductProc` 独立物件节,可先在本验收场景并排放下对比尺度
网格约定与附录 B 一致:Y-up、原点在底面中点、局部 **-Z 为正面**。
网格约定与附录 B 一致:Y-up、原点在底面中点、局部 **+Z 为正面**。
## 制作步骤(单件)
1. **设计图**:纯白底、全身入画。人物用 T Pose、比例 `2:3`;非人用可辨识站姿,比例按体型选 `2:3` 或 `1:1`。
1. **设计图**:纯白底、全身入画。人形角色用正面正交 T Pose、双手空、比例 `2:3`,必须原样加入 [GameResProductProc.md「二.2.A 人物角色」](../../../GameResProductProc.md#a-人物角色) 的完整固定英文姿态提示词,并按该节要求目视核对;非人用可辨识站姿,比例按体型选 `2:3` 或 `1:1`。
2. **混元图生 3D**:`Tools/hunyuan_3d_generate.py --faces 50k`。
3. **减面烘焙**:`Tools/model_tools/model_lowpoly_bake.py --tris <目标> --size 1024`。人物约 3000;非人/宠物默认 800~2000,在 manifest 的 `maxTriangles` 写死验收上限。
4. **入库**:`python Tools/install_character_bundles.py -a {Name} --kind {Kind} -b Tools/output/..._xpbr`
@@ -34,12 +34,18 @@ Pipeline:`AIClient/AgentScripts/BuildCharacterReview.cs`、`SetupCharacter.cs`
6. **登记**到 `Doc/ResDesc_Model.md` / `Doc/ResDesc_Picture.md`。
7. **验收**:把该件追加进 `character_unit_review_manifest.json` 的 `subjects`,再执行下方 Pipeline。
### 人形角色蒙皮(默认)
静态模型验收通过后,人形角色默认采用 **固定 Mixamo 骨架 + TokenRig 只预测蒙皮权重**。先按角色体型拟合骨架并固定,清除参考模型既有权重,使用已有骨架模式预测权重;随后装回固定骨架并校验骨名、层级、骨轴与休息矩阵,检查和清理跨部位错误影响,归一化后导出。保留原网格、UV 和烘焙贴图。
Unity Pipeline 配置 Humanoid 与角色自己的 Avatar,并对实际所需动作进行形变、脚踝交叉及接地验收;动画 Prefab 和资源登记完成后才接入业务。详细约定见 [GameResProductProc.md「二.2.A 人物角色」](../../../GameResProductProc.md#a-人物角色)。现有固定 41 骨与局部约束工具需按新角色拟合、验收。
## 验收场景(专用)
场景里固定包含:
- 地面与刻度(身高参考柱 0.5 / 1.0 / 1.8m)
- 每个 subject 脚下的 **-Z 正面箭头**
- 每个 subject 脚下的 **+Z 正面箭头**
- 方向光 + 验收相机
- 按 `spacing` 横向排列的 Prefab 实例
@@ -68,7 +74,7 @@ unity command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScr
- 包围盒底面 `min.y` 接近 0(±0.05)
- 身高在 `expectedHeight ± heightTolerance`
- 三角面数 ≤ `maxTriangles`
- 人工目视:局部 -Z 朝向相机前的箭头、无悬浮、无穿模、贴图无品红缺贴图
- 人工目视:局部 +Z 朝向相机前的箭头、无悬浮、无穿模、贴图无品红缺贴图
通过后,才允许把该 Prefab 接到开战/营地替换简模。
@@ -83,3 +89,8 @@ unity command --project-path D:/UD/AI/AIGame/AIClient run_script --file AgentScr
敌方角色制作采用 [EnemyCharacterProduction.md](EnemyCharacterProduction.md):同角色骨架、空间对齐、三动作来源哈希、离线收尾、Enemy视觉Prefab与整段验收。岩团团已从单Walk阶段升级到Idle/Walk/Attack;总验收按三动作检查。
本场景**不**被 `PrototypeFlow` 加载。开战仍用 `PrototypeArena` 简模,直到某宠物正式模型验收通过并单独做替换任务。
### 朝向兼容(2026-10-24)
新 subject 默认 `localForward: "+Z"`,新资源相机应位于其 +Z 正面一侧。历史 manifest 中的旧件已显式标注 `localForward: "-Z"`,沿用原相机和旧件朝向,脚下标记按各自配置生成。渲染辅助 `AuditCharacterVisual.Capture` 的 `forwardZ` 默认 +1;旧 -Z 件必须传 -1。
@@ -6,7 +6,7 @@
每个敌人交付已验收静态模、同源骨架和蒙皮、Idle/Walk/Attack、Animator、Enemy视觉Prefab、验收场景、来源清单和验证报告。流程到可调用的视觉资产为止,战斗数值、寻路和伤害结算由玩法接入。
统一约定:Unity Y-up、米制、底面中心原点、局部-Z正面。外层逻辑根旋转identity、缩放1,关闭Root Motion;移动和转向由玩法驱动。网格、骨架和动画必须共用绑定空间,不能靠运行时反向旋转补救。
统一约定:Unity Y-up、米制、底面中心原点、局部+Z正面。外层逻辑根旋转identity、缩放1,关闭Root Motion;移动和转向由玩法驱动。网格、骨架和动画必须共用绑定空间,不能靠运行时反向旋转补救。
| 动作 | 标准行为 | 岩团团参数 |
| --- | --- | --- |
@@ -24,7 +24,7 @@
先尝试验收网格的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%;不满足就停止检查来源或对齐,不能对另一角色强行蒙皮。
历史静态FBX曾在Blender中保留Y-up顶点,TokenRig GLB为Blender Z-up。v2标准FBX默认导入后已在Blender Z-up世界中站立,必须读取完整节点变换,不能对新文件再无条件旋转90°。旧输入兼容:`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可保留,不单独清零。
@@ -59,7 +59,7 @@ 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对准目标。
视觉Prefab输出 `Assets/Bundles/Characters/Enemy/{Name}/{Name}_Enemy.prefab`。新敌人源资产通常放 `Characters/Enemy/{Name}/`;岩团团复用已有 `Characters/Animal/RockBall/` 的模型、动画、XPbr,通过Variant交付Enemy目录,不复制贴图材质。新资源转向时以局部+Z对准目标,直接使用 Quaternion.LookRotation(direction)。
## 6. 验收门槛
@@ -199,3 +199,8 @@ shellRegionMin/Max在Unity归一化空间选取壳区,扣除shellBone刚性
## 四敌人Studio流程复验完成(2026-10-21)
Hornlet、Dashlet、Shellhorn、HornCaptain均按大角首领2~5步流程完成独立Studio版,绑定各自原骨架并直接复用原Avatar/控制器/三段成品动作。使用通用StudioTrial脚本按本角色骨数、尺寸及实际动作约束验收;禁止照搬大角首领骨编号或脚底顶点。生成、修正、Edit/Play及资源路径见 [StudioEnemies/Production.md](StudioEnemies/Production.md)。
### +Z 新约定与旧样例
自 2026-10-24 起新资源统一 +Z 正面。本文各日期样例、固定骨架和旧配方的 -Z 门禁描述其已验收的实际空间,保持兼容,不代表项目默认值。旧绑定空间只能在一次完整的网格/骨架/动作迁移中改变,不能仅改验证器符号或粒子挂点。
@@ -0,0 +1,12 @@
LittleBear:人形小熊,双足直立,圆耳、焦糖棕色短毛、奶油色口鼻和腹部,黑鼻与友善深色眼睛。圆润卡通冒险游戏风格,无服装、配饰或手持物。保留清楚的肩肘腕、髋膝踝,手掌为简化熊掌,便于固定 Mixamo 骨架蒙皮。
standard T-pose, front orthographic view, full body,
arms extended horizontally at shoulder height,
straight elbows, palms facing down,
legs straight, feet slightly apart and pointing forward,
symmetrical neutral stance, character modeling reference
纯白背景 #FFFFFF,正面正交视角,全身包括耳尖、指尖、脚底完整入画;对称中立站姿,双手空;无场景、地面阴影、文字、水印。2:3 画幅。
生成方式:内置 imagegen(项目脚本未配置图像服务密钥),1024×1536 RGB。
目标:混元50k高模→Studio低模→Studio UV→1024²烘焙→超出3000面目标30%时保留UV减面→固定Mixamo骨架+TokenRig只预测权重→Unity Humanoid与实际Walking验收。展示身高1.2m。
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

File diff suppressed because it is too large Load Diff
@@ -26,7 +26,8 @@
"heightTolerance": 0.15,
"maxTriangles": 3500,
"requireXpbr": true,
"notes": "人物样例:Y-up、底面原点、局部 -Z 正面"
"notes": "人物样例:Y-up、底面原点、局部 -Z 正面",
"localForward": "-Z"
},
{
"id": "LmGirl",
@@ -36,7 +37,8 @@
"heightTolerance": 0.15,
"maxTriangles": 3500,
"requireXpbr": true,
"notes": "人物样例"
"notes": "人物样例",
"localForward": "-Z"
},
{
"id": "LmCat",
@@ -46,7 +48,8 @@
"heightTolerance": 0.12,
"maxTriangles": 3500,
"requireXpbr": true,
"notes": "非人样例:可作宠物正式模型目录模板 Characters/Animal/{Name}"
"notes": "非人样例:可作宠物正式模型目录模板 Characters/Animal/{Name}",
"localForward": "-Z"
},
{
"id": "RockBall",
@@ -56,7 +59,8 @@
"heightTolerance": 0.12,
"maxTriangles": 2000,
"requireXpbr": true,
"notes": "岩团团正式静态宠模:混元50k→烘焙1500 tris;已通过。开战/营地替换另开任务"
"notes": "岩团团正式静态宠模:混元50k→烘焙1500 tris;已通过。开战/营地替换另开任务",
"localForward": "-Z"
},
{
"id": "RockBall_Rigged",
@@ -72,7 +76,8 @@
"Walk",
"Attack"
],
"notes": "敌方制作标准样例:同角色12骨→空间对齐→低模转权重→Idle/Walk/Attack→离线收尾;Enemy视觉Variant见Characters/Enemy/RockBall。Motion=0/1,Attack使用Trigger。"
"notes": "敌方制作标准样例:同角色12骨→空间对齐→低模转权重→Idle/Walk/Attack→离线收尾;Enemy视觉Variant见Characters/Enemy/RockBall。Motion=0/1,Attack使用Trigger。",
"localForward": "-Z"
},
{
"id": "FireCat",
@@ -82,7 +87,8 @@
"heightTolerance": 0.01,
"maxTriangles": 2000,
"requireXpbr": true,
"notes": "火喵T1伙伴静态模:混元50k→1998 tris/1024 XPbr,隔离正侧背面与尺寸贴地验收通过。"
"notes": "火喵T1伙伴静态模:混元50k→1998 tris/1024 XPbr,隔离正侧背面与尺寸贴地验收通过。",
"localForward": "-Z"
},
{
"id": "FireCat_Companion",
@@ -98,7 +104,8 @@
"Walk",
"Attack"
],
"notes": "火喵T1伙伴视觉:同角色22骨,Walk全骨骼首帧校准,尾部权重修正;Idle/Walk循环,Attack单次双爪施法,0.55秒出手事件。专用Companion_FireCat_Review场景Edit/Play均通过。"
"notes": "火喵T1伙伴视觉:同角色22骨,Walk全骨骼首帧校准,尾部权重修正;Idle/Walk循环,Attack单次双爪施法,0.55秒出手事件。专用Companion_FireCat_Review场景Edit/Play均通过。",
"localForward": "-Z"
},
{
"id": "BudBud",
@@ -108,7 +115,8 @@
"heightTolerance": 0.01,
"maxTriangles": 2000,
"requireXpbr": true,
"notes": "芽芽T1正式静态模,0.50m、Y-up、底面中心、局部-Z正面,正侧背检查通过。"
"notes": "芽芽T1正式静态模,0.50m、Y-up、底面中心、局部-Z正面,正侧背检查通过。",
"localForward": "-Z"
},
{
"id": "BudBud_Companion",
@@ -124,7 +132,8 @@
"Idle",
"Walk",
"Attack"
]
],
"localForward": "-Z"
},
{
"id": "SparkBird",
@@ -134,7 +143,8 @@
"heightTolerance": 0.01,
"maxTriangles": 2000,
"requireXpbr": true,
"notes": "闪闪雀T1正式静态模:混元50k→2000 tris/1024 XPbr,0.45m、Y-up、底面中心、局部-Z正面,四向验收通过。"
"notes": "闪闪雀T1正式静态模:混元50k→2000 tris/1024 XPbr,0.45m、Y-up、底面中心、局部-Z正面,四向验收通过。",
"localForward": "-Z"
},
{
"id": "SparkBird_Companion",
@@ -150,7 +160,8 @@
"Idle",
"Walk",
"Attack"
]
],
"localForward": "-Z"
},
{
"id": "BubbleTurtle",
@@ -160,7 +171,8 @@
"heightTolerance": 0.01,
"maxTriangles": 2000,
"requireXpbr": true,
"notes": "泡泡龟T1正式静态模:混元50k→离线统一朝向→2000 tris/1024 XPbr,0.35m、Y-up、底面中心、局部-Z正面,四向图确认。"
"notes": "泡泡龟T1正式静态模:混元50k→离线统一朝向→2000 tris/1024 XPbr,0.35m、Y-up、底面中心、局部-Z正面,四向图确认。",
"localForward": "-Z"
},
{
"id": "BubbleTurtle_Companion",
@@ -176,7 +188,8 @@
"Idle",
"Walk",
"Attack"
]
],
"localForward": "-Z"
},
{
"id": "RockRhino",
@@ -186,7 +199,8 @@
"heightTolerance": 0.01,
"maxTriangles": 2000,
"requireXpbr": true,
"notes": "岩甲犀T1静态模:官方混元50k→离线+70°统一朝向→2000tris/1024 XPbr,0.55m、Y-up、底面中心、局部-Z正面,四向图确认。"
"notes": "岩甲犀T1静态模:官方混元50k→离线+70°统一朝向→2000tris/1024 XPbr,0.55m、Y-up、底面中心、局部-Z正面,四向图确认。",
"localForward": "-Z"
},
{
"id": "RockRhino_Companion",
@@ -202,7 +216,8 @@
"Idle",
"Walk",
"Attack"
]
],
"localForward": "-Z"
},
{
"id": "Hornlet_Enemy",
@@ -218,7 +233,8 @@
"Walk",
"Attack"
],
"notes": "小角怪(普通,type0):混元50k→2000 tris/1024 XPbr,DGXA同源TokenRig,biped_short/body_slam三动作,Edit/Play通过;战场 Enemies/EnemyN/Type0 嵌套。"
"notes": "小角怪(普通,type0):混元50k→2000 tris/1024 XPbr,DGXA同源TokenRig,biped_short/body_slam三动作,Edit/Play通过;战场 Enemies/EnemyN/Type0 嵌套。",
"localForward": "-Z"
},
{
"id": "Dashlet_Enemy",
@@ -234,7 +250,8 @@
"Walk",
"Attack"
],
"notes": "疾跑怪(快速,type1):混元50k→2000 tris/1024 XPbr,DGXA同源TokenRig,biped_short/body_slam三动作,Edit/Play通过;战场 Enemies/EnemyN/Type1 嵌套。"
"notes": "疾跑怪(快速,type1):混元50k→2000 tris/1024 XPbr,DGXA同源TokenRig,biped_short/body_slam三动作,Edit/Play通过;战场 Enemies/EnemyN/Type1 嵌套。",
"localForward": "-Z"
},
{
"id": "Shellhorn_Enemy",
@@ -250,7 +267,8 @@
"Walk",
"Attack"
],
"notes": "硬壳怪(护甲,type2):混元50k→2000 tris/1024 XPbr,DGXA同源TokenRig,biped_short/body_slam三动作,Edit/Play通过;战场 Enemies/EnemyN/Type2 嵌套。"
"notes": "硬壳怪(护甲,type2):混元50k→2000 tris/1024 XPbr,DGXA同源TokenRig,biped_short/body_slam三动作,Edit/Play通过;战场 Enemies/EnemyN/Type2 嵌套。",
"localForward": "-Z"
},
{
"id": "HornCaptain_Enemy",
@@ -266,7 +284,8 @@
"Walk",
"Attack"
],
"notes": "角怪队长(精英,type3):混元50k→2000 tris/1024 XPbr,DGXA同源TokenRig,biped_short/body_slam三动作,Edit/Play通过;战场 Enemies/EnemyN/Type3 嵌套。"
"notes": "角怪队长(精英,type3):混元50k→2000 tris/1024 XPbr,DGXA同源TokenRig,biped_short/body_slam三动作,Edit/Play通过;战场 Enemies/EnemyN/Type3 嵌套。",
"localForward": "-Z"
},
{
"id": "GreatHorn_Enemy",
@@ -282,7 +301,8 @@
"Walk",
"Attack"
],
"notes": "大角首领(首领,type4):混元50k→2000 tris/1024 XPbr,DGXA同源TokenRig,biped_short/body_slam三动作,Edit/Play通过;战场 Enemies/EnemyN/Type4 嵌套。"
"notes": "大角首领(首领,type4):混元50k→2000 tris/1024 XPbr,DGXA同源TokenRig,biped_short/body_slam三动作,Edit/Play通过;战场 Enemies/EnemyN/Type4 嵌套。",
"localForward": "-Z"
},
{
"id": "FlameLion",
@@ -292,7 +312,8 @@
"heightTolerance": 0.01,
"maxTriangles": 2000,
"requireXpbr": true,
"notes": "烈焰狮T1静态:官方混元50k→2000tris/1024 XPbr,0.60m、Y-up、底面中心、局部-Z正面,四向验收通过。"
"notes": "烈焰狮T1静态:官方混元50k→2000tris/1024 XPbr,0.60m、Y-up、底面中心、局部-Z正面,四向验收通过。",
"localForward": "-Z"
},
{
"id": "FlameLion_Companion",
@@ -308,7 +329,8 @@
"Idle",
"Walk",
"Attack"
]
],
"localForward": "-Z"
},
{
"id": "VineSprite_Companion",
@@ -324,7 +346,8 @@
"Walk",
"Attack"
],
"notes": "藤蔓灵(pet 7)T1:混元50k→2000 tris/1024 XPbr,DGXA同源28骨,biped_short/ranged_cast(治疗施法),Edit/Play通过。"
"notes": "藤蔓灵(pet 7)T1:混元50k→2000 tris/1024 XPbr,DGXA同源28骨,biped_short/ranged_cast(治疗施法),Edit/Play通过。",
"localForward": "-Z"
},
{
"id": "ThunderLeopard_Companion",
@@ -340,7 +363,8 @@
"Walk",
"Attack"
],
"notes": "雷鸣豹(pet 8)T1:混元50k→2000 tris/1024 XPbr,DGXA同源31骨,quadruped_heavy/braced_bash(头肩短扑),Edit/Play通过。"
"notes": "雷鸣豹(pet 8)T1:混元50k→2000 tris/1024 XPbr,DGXA同源31骨,quadruped_heavy/braced_bash(头肩短扑),Edit/Play通过。",
"localForward": "-Z"
},
{
"id": "TideWhale_Companion",
@@ -356,7 +380,32 @@
"Walk",
"Attack"
],
"notes": "潮汐鲸(pet 9)T1:混元50k→2000 tris/1024 XPbr,DGXA同源22骨,biped_short/body_slam,Edit/Play通过。"
"notes": "潮汐鲸(pet 9)T1:混元50k→2000 tris/1024 XPbr,DGXA同源22骨,biped_short/body_slam,Edit/Play通过。",
"localForward": "-Z"
},
{
"id": "LittleBear_Static",
"kind": "Human",
"prefab": "Assets/Bundles/Characters/Human/LittleBear/LittleBear_Static.prefab",
"expectedHeight": 1.2,
"heightTolerance": 0.02,
"maxTriangles": 3000,
"requireXpbr": true,
"localForward": "+Z",
"notes": "人形小熊:正交T-pose设计图→混元50k→Studio低模/UV→1024烘焙→保留UV减面3000。专用验收场景LittleBearReview。"
},
{
"id": "LittleBear",
"kind": "Human",
"prefab": "Assets/Bundles/Characters/Human/LittleBear/LittleBear.prefab",
"expectedHeight": 1.2,
"heightTolerance": 0.02,
"maxTriangles": 3000,
"requireXpbr": true,
"requireAnimator": true,
"requiredClips": ["Breathing Idle", "mixamo.com"],
"localForward": "+Z",
"notes": "固定Mixamo41骨+TokenRig只预测权重,局部约束与裆部连续过渡;自己的有效Humanoid Avatar。Motion=0 Idle/1 Walk,Foot IK开启,共享现有剪辑。250点采样无脚踝交叉;独立LittleBearReview场景验收,未重建总览场景。"
}
],
"workflow": {
@@ -364,6 +413,7 @@
"bakeOutput": "Tools/output/{name}_game/",
"bundleDir": "AIClient/Assets/Bundles/Characters/{Kind}/{Name}/",
"setupEntry": "SetupCharacter.Run",
"reviewEntry": "BuildCharacterReview.Build"
"reviewEntry": "BuildCharacterReview.Build",
"defaultLocalForward": "+Z"
}
}