360 lines
29 KiB
Markdown
360 lines
29 KiB
Markdown
# 游戏资源生产流程
|
||
|
||
> 本文说明游戏内各类资源从设计到入库的生产步骤。
|
||
> 工具用法见 [`ResourceCreate.md`](ResourceCreate.md)。生成完成后必须登记 [`Doc/ResDesc.md`](Doc/ResDesc.md) 对应分册,未登记视为流程未完成。
|
||
|
||
当前状态:**框架已立**。各条的细化与实跑验证按文末清单逐条进行;标「待细化」的条目只保留步骤骨架,不写未经验证的命令。
|
||
|
||
---
|
||
|
||
## 0. 总则
|
||
|
||
1. **画图**一律走项目画图方案(见附录 A)。设计图、UI 原图、序列帧、粒子贴图的生成底为**纯白**。
|
||
2. **3D**一律走 3D 模型生成流程(见附录 B)。面数是减面后的游戏用三角面,不是混元高模面数。游戏 FBX:**Y-up**、原点在**底面中点**、局部 **+Z 为正面**(设计图朝向相机的那面)。摆放时正面朝向目标,与 Unity 默认 +Z forward 一致。
|
||
3. **中间件**放 `Tools/output/`,不进正式包。**游戏用资源**放 `AIClient/Assets/Bundles/` 对应目录。
|
||
4. **设计原稿**放 `Doc/Design/{类型}/{名称}/`,**不要拷进** `AIClient/`。`{类型}` 与下文各大类对应(如 `Scene`、`Character`、`UI`、`Weapon`、`Prop`、`Effect`)。
|
||
5. **英文名称**用于 Bundle 目录与文件名:帕斯卡或既有角色名风格均可,目录内保持一致,不含空格与中文。
|
||
6. **确认点**写在步骤里的,必须等人确认后再进入下一步。
|
||
7. **Unity 操作**一律走 Unity Pipeline(`unity command …`),见 [`UNITY-GUIDE.md`](UNITY-GUIDE.md) 与 `unity-pipeline` 技能。不要用 Unity MCP;场景、Prefab、材质、导入设置、以及 `Assets/` 下文件的移动/重命名/删除,都通过 Pipeline 完成。
|
||
|
||
| 登记 | 文件 |
|
||
| --- | --- |
|
||
| 图、设计原稿、UI 切图 | `Doc/ResDesc_Picture.md` |
|
||
| 模型、贴图、Prefab | `Doc/ResDesc_Model.md` |
|
||
| 动画 | `Doc/ResDesc_Animation.md` |
|
||
| 特效 | `Doc/ResDesc_Effect.md` |
|
||
| 音乐、音效 | `Doc/ResDesc_Sound.md` |
|
||
|
||
---
|
||
|
||
## 一、2D 资源
|
||
|
||
### 1. 设计图
|
||
|
||
状态:已跑通。样例为轻松休闲 UI、场景设计、轻科幻曹操(2026-09-28)。
|
||
|
||
1. 用 `Tools/gpt_image_generate.py` 出图。默认模型 `gpt-image-2.5`,`--quality high`。背景写进提示词:纯白 `#FFFFFF`,不要场景底、渐变和纸纹。
|
||
2. 比例用字符串,不要自己传大于 1K 的像素。本次实测映射为:
|
||
|
||
| 用途 | `--aspect-ratio` | 实测尺寸 |
|
||
| --- | --- | --- |
|
||
| 竖屏 UI | `9:16` | 940×1672 |
|
||
| 场景总览 | `1:1` | 1254×1254 |
|
||
| 全身角色 | `2:3` | 1024×1536 |
|
||
|
||
3. 需要锁已有风格时加 `-i` 参考图。UI 样例参考 `Doc/Design/ui_design.jpg`。
|
||
4. 原稿放到 `Doc/Design/{类型}/{名称}/`,文件名用英文。本次:
|
||
|
||
| 类型 | 路径 |
|
||
| --- | --- |
|
||
| UI | `Doc/Design/UI/Casual/casual_ui.png` |
|
||
| Scene | `Doc/Design/Scene/{SceneId}/overview.png` |
|
||
| Character | `Doc/Design/Character/CaoCao/caocao.png` |
|
||
|
||
5. 检查四角 RGB。接近 255(本次均 ≥253)即视为纯白通过。
|
||
6. 在 `Doc/ResDesc_Picture.md` 登记路径、用途、模型与尺寸。
|
||
|
||
角色若接着走 3D,设计图按「二.2.A 人物角色」使用固定姿态提示词,画成正面正交 T Pose、双手空、全身入画。本次曹操已按正面 T Pose 出图。
|
||
|
||
本条产出不进 `Bundles`。场景总览画出后先归纳物件类型(10 种以内)等人确认,再进入分件。
|
||
|
||
```bash
|
||
python Tools/gpt_image_generate.py --result-only --quality high --aspect-ratio 9:16 -i Doc/Design/ui_design.jpg -o Doc/Design/UI/Casual/casual_ui.png -p "..."
|
||
python Tools/gpt_image_generate.py --result-only --quality high --aspect-ratio 1:1 -o Doc/Design/Scene/{SceneId}/overview.png -p "..."
|
||
python Tools/gpt_image_generate.py --result-only --quality high --aspect-ratio 2:3 -o Doc/Design/Character/CaoCao/caocao.png -p "..."
|
||
```
|
||
|
||
### 2. UI 图
|
||
|
||
状态:待细化。切图与 Sprite 导入已有样例(`Doc/UI_Normal_Set.md`、`Tools/slice_ui_normal_atlas.py`、`Assets/Bundles/UI/Texture/Common/`),新风格组件仍按本条重走一遍并核对。
|
||
|
||
1. 参考既有 UI 范例图,用项目画图方案绘制新的风格组件图,背景纯白。
|
||
- 视觉基准:`Doc/Design/ui_design.jpg`、`Doc/Design/UI_Design_Principles.md`。
|
||
- 范例图集:`Doc/UI_Simple_Set.md`、`Doc/UI_Normal_Set.md`。
|
||
- 原稿放到 `Doc/Design/UI/{名称}/`。
|
||
2. 把组件图拆成单张图。
|
||
3. 导入 Unity,贴图类型改为 **Sprite (2D and UI)**。
|
||
- 落点:`AIClient/Assets/Bundles/UI/Texture/Common/`(或该套组件的子目录)。
|
||
- 现有 Common 图:`spriteMode: 1`(Single),`textureType: 8`(Sprite),`spritePixelsToUnits: 100`,关闭 Mip Map。
|
||
4. 业务界面仍走 JSON→Prefab,见 `Doc/UI_AutoGen_Overview.md`。不要用运行时代码拼业务 UI。
|
||
5. 登记 `Doc/ResDesc_Picture.md`。
|
||
|
||
---
|
||
|
||
## 二、3D 资源
|
||
|
||
### 1. 场景
|
||
|
||
默认流程见 [`Doc/Design/Scene/SceneModelProduction.md`](Doc/Design/Scene/SceneModelProduction.md)。新场景组件(含地表)统一执行:**分件图 → 混元 50k 高模 → Studio 低模 → Studio UV → Blender 烘焙 → 超预算时保留 UV 减面**。战场 A 的已有历史产物按原回执保留。
|
||
|
||
**a. 整体设计图(需确认)**
|
||
|
||
1. 用项目画图方案绘制总览图,确定风格、构图、地表、路线和地标。
|
||
2. 同时产出美术基准包(参考图、色板、比例表、灯光、机位、密度目标),写入 manifest `artDirection`,见 `Doc/Design/Scene/SceneReviewGeneration.md`「商业化品质基线」。
|
||
3. 按 A 主体 / B 中景 / C 点缀分层归纳物件,并按屏占比给出目标三角面预算;战场装饰硬上限 15 类,地表拆为平铺表面加边缘件。
|
||
4. 等人确认整体设计、美术基准与组件清单后再进入分件、模型制作。
|
||
4. 原稿放 `Doc/Design/Scene/{SceneId}/`,生产清单用对应 manifest 管理。
|
||
|
||
**b. 分件设计图**
|
||
|
||
先匹配已验收的可复用 Prefab;没有合适资源时每类画一张白底、单件、完整入画的设计图,通常为 3/4 视角。地表独立,布局审核图与图生模型参考图按用途区分。设计图须人工审核,登记 `Doc/ResDesc_Picture.md`。
|
||
|
||
**c. 生成模型并入库**
|
||
|
||
1. 默认执行混元 50k → Studio 低模 → Studio UV → Blender 同源对齐烘焙,保留 Studio UV。
|
||
2. 仅当实际三角面数严格大于目标的 130% 时保留 UV 减面;其余登记为跳过,不再用 Blender 自动展 UV 替代 Studio UV。
|
||
3. 通用入口:`Tools/scene_component_pipeline.py --manifest <场景manifest> --part <组件id>`;使用 `--dry-run` 只查看计划。混元高模先由 `Tools/hunyuan_3d_generate.py` 完成。
|
||
4. 校验 GLB 文件头、内嵌贴图解码、UV、面数、坐标、包围盒和四向外观;保留任务号、来源哈希与 `production.json`。
|
||
5. 高模和生产中间件留在 `Tools/output/`;游戏 FBX、`_base.png`、`_mix.png` 放 `AIClient/Assets/Bundles/Scenes/{类型}/{SceneId}/{part}/`,材质由 Unity 创建。
|
||
6. 模型、贴图和 Prefab 路径及回执登记到场景 manifest 和 `Doc/ResDesc_Model.md`。
|
||
|
||
**d. Unity 拼装与验收**
|
||
|
||
1. 所有导入、材质、碰撞体、Prefab 和场景操作走 Unity Pipeline,见 `UNITY-GUIDE.md`。
|
||
2. 组件先做成可复用 Prefab,再由 manifest/场景制作脚本拼成总 Prefab 与可编辑 `.unity` 场景。新资源为 Y-up、底面中心原点、局部 +Z 正面;历史 -Z 资产显式兼容。
|
||
3. 地表为独立资源,使用非凸 MeshCollider;物件按碰撞高度贴地,验收路线、朝向、穿插、构图和碰撞。
|
||
4. 当前入口:战场 `BuildBattlefieldAssets.BuildAll` → `BuildBattlefieldScene.Build` → `AttachGreenfield.Build`;主营地 `BuildHomeCamp.BuildAssets` → `CaptureParts` → `Build` → `Verify`。
|
||
5. 拼装后执行美术收尾:可见地面层物件统一 Lit 并接收阴影,地表用 `XTerrain` 平铺,静态机位烘焙 lightmap/AO,加全局 Volume 和雾。随后在正式机位与参考图并排做六项评分,任意一项低于 4 分打回;`verification.txt` 分别写 `TECH` 与 `ART` 结论。
|
||
6. 对图验收通过后,再按实际需求登记资源收集入口并接入游戏;独立审核场景不默认加入正式 Build Settings。
|
||
7. HomeCamp 在用的公共路灯与长椅位于 `Assets/Bundles/Scenes/Common/{lamp,bench}/`。TownSquare 测试场景已于 2026-10-26 删除,不再作为生成、加载或打包入口。
|
||
|
||
**战斗战场样例 A · 绿野三岔口(2026-10-20)**
|
||
|
||
1. 设计 / 分件 / 模型:见 `Doc/Design/Scene/Battlefield/`;选中 A;树/岩石/桥/路牌/灌木 + 独立地表均已混元 50k → 减面烘焙 → 入 `Assets/Bundles/Scenes/Prototype/Battlefield/A/`。
|
||
2. Pipeline:`BuildBattlefieldAssets.BuildAll` → `BuildBattlefieldScene.Build` → `AttachGreenfield.Build`。输出 `Battlefield_Greenfield.prefab`,嵌为 `PrototypeArena/Greenfield`;方块地面关闭。
|
||
3. 桥模型保留(`placeInScene: false`),场景不摆桥。装饰为树、岩石、路牌、灌木。
|
||
4. 战斗相机只画第 30 层:Greenfield 整棵子树必须设为 layer 30,否则地表在 Play Mode 不可见。
|
||
5. 运行时仍由 `PrototypeFlow` 按地址 `PrototypeArena` 加载(Art/GameplayPrototype 收集)。Play Mode 隔离服验证截图:`Assets/Screenshots/battlefield_play_battle.png`。
|
||
|
||
### 2. 角色
|
||
|
||
#### A. 人物角色
|
||
|
||
状态:已用 `CaoCao` 跑通(约 3000 面、`Characters/Human/{英文名称}`)。
|
||
|
||
1. 参照风格图绘制设计图:**T Pose**,双手空、全身入画、背景纯白。比例 `2:3`(本次 `1024×1536`)。
|
||
2. 原稿放到 `Doc/Design/Character/{英文名称}/`,**不进 Bundles**。样例:`Doc/Design/Character/CaoCao/caocao.png`。
|
||
3. 设计图走附录 B:混元 `--faces 50k` → `model_lowpoly_bake.py --tris 3000 --size 1024`。减面后约 **3000** 面。
|
||
4. 用 `Tools/install_character_bundles.py -a {英文名称} --kind Human` 拷到 `AIClient/Assets/Bundles/Characters/Human/{英文名称}/`(`{名}.fbx`、`_base.png`、`_mix.png`、`.mat`)。
|
||
5. Unity Pipeline 建 Prefab(Y-up、底面原点、局部 +Z 正面,**不要**再绕 X +90°):`unity command run_script --file AgentScripts/SetupCharacter.cs --entry SetupCharacter.SetupCaoCao`。身高缩到 **1.8m**。Art 收集已覆盖 `Assets/Bundles/Characters`。
|
||
6. 运行时 `CharacterSpawner` 按地址 `CaoCao` 加载;Y 用 `GroundSit` 打地表 MeshCollider(中心点若未打中,偏 0.35m 再打)。
|
||
7. 登记 `Doc/ResDesc_Model.md` 与 `Doc/ResDesc_Picture.md`。
|
||
|
||
**人形角色设计图固定提示词(必须原样加入)**:
|
||
|
||
```text
|
||
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
|
||
```
|
||
|
||
生成用于 3D 建模的人形角色设计图时,在角色外观、服装和风格描述之外,必须加入以上完整英文提示词,并保留纯白背景、双手空、全身入画与 `2:3` 比例要求。出图后目视检查正面正交视角、双臂肩高水平伸展、肘部伸直、掌心向下、双腿伸直、双脚略分开且朝前、左右对称中立站姿。
|
||
|
||
**人形角色蒙皮默认方案:固定 Mixamo 骨架 + TokenRig 只预测蒙皮权重。**
|
||
|
||
静态模型验收通过后,需要蒙皮的人形角色默认按以下步骤处理:
|
||
|
||
1. **拟合并固定骨架**:使用已验证的 Mixamo 骨架模板,先按角色体型调整关节位置,保留模板骨名、层级和骨轴;拟合确认后记录休息矩阵,作为本角色蒙皮输入与还原校验基准。现有男孩、女孩的固定 41 骨流程可作参考,关节位置需按当前角色拟合。
|
||
2. **仅预测权重**:清除参考模型的既有蒙皮权重,TokenRig 使用已有骨架模式(`--use_skeleton --skeleton_template original`)预测新权重。若需占位权重防止预处理裁掉关节,占位仅用于保留骨架,不作为最终蒙皮。`--skeleton_template mixamo` 的自动生成/重命名路线不作为此默认流程。
|
||
3. **还原与权重收尾**:将预测权重装回已固定的角色骨架,恢复并校验原骨名、父子层级、骨轴和休息矩阵;检查手部受脚/腿/头等跨部位影响,按本角色解剖区域做必要的局部约束与归一化。保留网格几何与 UV,复用原烘焙贴图。
|
||
4. **导出与动态验收**:导出 Y-up、脚底中心原点、局部 +Z 正面的蒙皮 FBX,经 Unity Pipeline 配置 Humanoid 与角色自己的 Avatar。用实际所需动作检查肩、肘、手、颈、髋、膝和脚部形变、脚踝交叉及接地;通过后制作动画 Prefab,并登记 Model/Animation。
|
||
|
||
Mixamo 网站绑定保留为参考、对照或明确选择的替代方案。现有固定骨架工具和局部约束包含角色专用参数,新角色需要拟合与验收;本默认方案不代表已有任意角色的一键通用入口。
|
||
|
||
本次实测:高模 49990 面 → 低模 **3000** 面;贴图 1024;Prefab `Assets/Bundles/Characters/Human/CaoCao/CaoCao.prefab`。旧样例 `Characters/MaleExplorer/` 仍是平铺目录、约 5k 面,且 Prefab 带历史 +90°X,不作为新角色模板。
|
||
|
||
```bash
|
||
python Tools/hunyuan_3d_generate.py --result-only --faces 50k -i Doc/Design/Character/CaoCao/caocao.png -o Tools/output/caocao_3d/caocao.glb
|
||
python Tools/model_tools/model_lowpoly_bake.py Tools/output/caocao_3d/caocao.glb -o Tools/output/caocao_game --tris 3000 --size 1024 --result-only
|
||
python Tools/install_character_bundles.py -a CaoCao --kind Human -b Tools/output/caocao_game/caocao_xpbr -c Doc/Design/Character/CaoCao/caocao.png
|
||
# Unity Pipeline: run_script AgentScripts/SetupCharacter.cs --entry SetupCharacter.SetupCaoCao
|
||
```
|
||
|
||
#### B. 非人角色
|
||
|
||
状态:制作与验收工具已落地;正式宠物模型内容待做。
|
||
|
||
步骤骨架与人物相同(风格图 → 纯白设计图 → 附录 B → 入库 → 登记)。差异:
|
||
|
||
- 目录 `Kind`:`Animal`(或后续 `Creature`);样例 `Characters/Animal/LmCat/`。
|
||
- 姿势:可辨识站姿/四足,不强制 T Pose;目标身高按物种写进验收 manifest。
|
||
- 面数:默认 800~2000,在 `character_unit_review_manifest.json` 的 `maxTriangles` 验收。
|
||
- 是否与人形共用骨骼:首批正式宠物各自独立网格,不绑 Mixamo;绑骨/动作用 DGX TokenRig + UniMate(见二.3.B)。
|
||
|
||
**验收场景(专用,不进开战):**
|
||
|
||
- 流程说明:`Doc/Design/Character/CharacterUnitArtProc.md`
|
||
- 清单:`Doc/Design/Character/character_unit_review_manifest.json`
|
||
- Pipeline:`AgentScripts/BuildCharacterReview.cs`(`Build` / `OpenReview` / `ValidateReview`)
|
||
- 场景:`Assets/Bundles/Scenes/Review/CharacterUnitReview.unity`
|
||
- 已用 CaoCao / LmGirl / LmCat 跑通:身高与 XPbr 校验通过;截图 `Assets/Screenshots/character_unit_review.png`
|
||
|
||
新非人件:烘焙入库 → `SetupCharacter.Run` → 追加 manifest `subjects` → `BuildCharacterReview.Build` → `ValidateReview` 通过后,才替换开战简模。
|
||
|
||
### 3. 动画
|
||
|
||
#### A. 人形角色动画
|
||
|
||
状态:Mixamo标准Bot与精简骨架共享Controller已实测,Kimodo通用流程仍待细化。基本流程:动作列表确认 → 生成或导入剪辑 → 绑定到对应角色 → 放到该角色目录或统一动画目录 → 登记 `Doc/ResDesc_Animation.md`。
|
||
|
||
标准Bot样例:`Common/AnimX`/`AnimY`保存网站无蒙皮动作;动作Humanoid导入使用匹配的标准模型源Avatar(Copy From Other Avatar)。角色模型Humanoid使用Create From This Model,各自生成自己的Avatar;实例用自身Avatar+共享Controller,关闭Apply Root Motion,由业务控制位移。XBot25/XBot41已用自身Avatar共用65骨XBot动作,无需补齐65骨;缺失的手指自由度不能通过Controller恢复。可复用Prefab在 `Common/Prefabs/`,测试入口 `Assets/Review/BotAnimationLab/BotAnimationLab.unity`;具体参数、尺度适配及验证范围见 `Doc/ResDesc_Animation.md` 最新Bot记录。
|
||
|
||
人物蒙皮默认采用「二.2.A」的固定 Mixamo 骨架 + TokenRig 只预测蒙皮权重方案。动作生成/导入与蒙皮分开处理,动作来源不改变该默认蒙皮流程;已有共享 Walking 的 Avatar 与 Foot IK 验证见 `Doc/ResDesc_Animation.md` 最新记录。
|
||
|
||
#### B. 非人角色动画(TokenRig + UniMate)
|
||
|
||
**敌方角色正式标准**:采用 [敌方角色标准制作方案 v1](Doc/Design/Character/EnemyCharacterProduction.md)。统一配方 `Config/Art/EnemyCharacters/{Name}.json`、入口 `Tools/enemy_character_pipeline.py`,交付Idle/Walk/Attack、Enemy视觉Prefab与验证清单。下方旧工具说明保留为阶段记录,敌方制作以新标准为准。
|
||
|
||
**伙伴角色复用**:统一入口 `Tools/character_animation_pipeline.py`,伙伴配方 `Config/Art/Companions/{Name}.json`,`usage=companion_visual`;不创建敌方Variant。火喵T1已完成同源22骨、Idle/Walk/远程施法Attack、伙伴视觉Prefab与Edit/Play验收,见 [制作记录](Doc/Design/Character/FireCat/ProductionBrief.md)。全骨骼初始姿势校准、附肢权重、动作峰值目视和CPU推理回退见上述标准方案的伙伴复用说明。
|
||
|
||
状态:工具已落地;依赖 DGX LLM3DGraphics(`http://192.168.130.16:8008`)能力绿灯。
|
||
|
||
1. **先做静态模(原流程)**:设计图 → 混元网页高模 → `model_lowpoly_bake` → `install_character_bundles` → `SetupCharacter` → CharacterUnitReview 验收通过。**不要**用 DGX Hunyuan3D 重做宠模。
|
||
2. **能力门禁**:本机 LLM3DGraphics `tokenrig_ready` + `unimate_ready`(`python Tools/dgx3d_animal_pipeline.py --caps-only`);红灯时先 `nvsync connect DGXA --detach`。
|
||
3. **绑骨 + 三动作**:网格仍用原混元/烘焙外观;TokenRig 若在过简低模上骨过少(宠球常见),应对**同角色高模**或可用代理模绑骨,再 `Tools/model_tools/bl_transfer_skin.py` 把骨架权重转到已验收低模,然后 UniMate×3。脚本入口:
|
||
`python Tools/dgx3d_animal_pipeline.py --mesh …/{Name}.fbx -o Tools/output/{name}_dgx --name {Name}`
|
||
(低模直绑若测得动作幅度过小,改走高模绑骨 + `bl_transfer_skin`。)
|
||
4. **入库**:`Tools/install_animal_rigged.py` → `…/Rigged/` 与 `Anims/`。
|
||
5. **Prefab / Animator**:`SetupAnimalAnimator`挂回静态模 `{Name}.mat`(XPbr)。现行接口:Motion Int 0=Idle、1=Walk;Attack Trigger单次攻击,结束恢复请求状态。正式敌方入口同时执行离线收尾与验证。
|
||
6. **验收**:manifest 增加 `*_Rigged`(`requireAnimator` + `requireXpbr`);Scene 内 `CharacterReviewAnimCycle` 轮播。动作幅度可用剪辑曲线/骨骼角度抽检(Walk 应有明显关节摆动)。
|
||
7. 登记 `Doc/ResDesc_Animation.md` / Model。TokenRig/UniMate 细节见 [`DGX3D_AI调用指南.md`](DGX3D_AI调用指南.md)。
|
||
|
||
**坐标与单动作门禁**:先用一个Walk验证骨架,再扩展三动作。项目FBX在Blender中为Y-up顶点,TokenRig GLB为Z-up,转权重前须 `--low-up Y --align-bounds`;只用同角色高模并检查几何距离。保留一致的Armature表示,动作来源rig哈希必须相同。提示明确解剖和单一动作;生成后离线修正姿态、脚底、步幅和循环,按实际蒙皮验收。岩团团已完成12骨三动作,正式复现 `Tools/enemy_character_pipeline.py --recipe Config/Art/EnemyCharacters/RockBall.json --build-review`。旧单Walk脚本仅诊断使用,历史见 [WalkRiggingFix.md](Doc/Design/Character/RockBall/WalkRiggingFix.md)。
|
||
|
||
### 4. 独立物件
|
||
|
||
状态:待细化。生产走附录 B;**入库目录细化时确定**(本框架不先占一个未使用的 Bundle 路径)。
|
||
|
||
#### A. 武器
|
||
|
||
骨架:纯白设计图 `Doc/Design/Weapon/{英文名称}/` → 附录 B → 入库 → 登记 Model / Picture。
|
||
|
||
#### B. 道具
|
||
|
||
骨架:纯白设计图 `Doc/Design/Prop/{英文名称}/` → 附录 B → 入库 → 登记 Model / Picture。
|
||
|
||
面数在细化时按物件尺度定,默认参照场景 C 点缀 200~800 或 B 中景 1000~3000,不默认使用角色的 3000。
|
||
|
||
### 5. 特效
|
||
|
||
用户提纲里本条与「独立物件」同为第 4 点,流程文档中改为第 5 点。
|
||
|
||
#### A. 序列帧动画
|
||
|
||
状态:待细化。
|
||
|
||
1. 用项目画图方案生成 **4×4** 序列帧,画布 **1024×1024**,背景纯白。
|
||
2. 整图缩小为 **256×256**。
|
||
3. 在 Unity 中做成 Particle 特效供游戏使用。
|
||
4. 图片、Prefab 及相关资源全部放到 `AIClient/Assets/Bundles/Effects/{英文名称}/`。
|
||
5. 登记 `Doc/ResDesc_Effect.md`(序列帧图可同时在 Picture 记一笔)。
|
||
|
||
#### B. 粒子动画
|
||
|
||
状态:待细化。
|
||
|
||
1. 用项目画图方案生成粒子图,画布 **1024×1024**,背景纯白。
|
||
2. 缩小为 **128×128**。
|
||
3. 在 Unity 中做成 Particle 特效供游戏使用。
|
||
4. 图片、Prefab 及相关资源全部放到 `AIClient/Assets/Bundles/Effects/{英文名称}/`。
|
||
5. 登记 `Doc/ResDesc_Effect.md`。
|
||
|
||
---
|
||
|
||
## 三、声音资源
|
||
|
||
技能音效使用TangoFluxService,遵循 `D:/UD/AI/XModel/TangoFlux_AI调用指南.md`:英文提示词、固定seed、1~30秒请求、异步轮询,保留44.1kHz立体声WAV原稿;后期裁切/淡入淡出、试听后经Unity Pipeline导入。现有 `Tools/generate_ui_sfx.py` 可接受通用manifest复用服务调用,技能样例清单为 `Doc/Design/Sound/BattleSkills/manifest.json`,目前仅规划,未生成音频。
|
||
|
||
技能动作/特效/声音由统一战斗事件调度,详见 [关卡战斗技能系统设计](Doc/Design/Combat/SkillSystem.md)。制作清单不代表已完成资源;正式音效须保留请求/后期/试听记录并登记 `Doc/ResDesc_Sound.md`。背景音乐已有独立制作记录,见该资源登记表。
|
||
|
||
### 1. 音乐
|
||
|
||
骨架:确定用途与时长 → 生成或导入 → 放到声音 Bundle 目录 → 登记 `Doc/ResDesc_Sound.md`。目录在细化时确定。
|
||
|
||
### 2. 音效
|
||
|
||
骨架同上,与音乐分开登记。
|
||
|
||
---
|
||
|
||
## 附录 A. 项目画图方案
|
||
|
||
节点说明与命令见 [`ResourceCreate.md`](ResourceCreate.md)「文/图生图」。
|
||
|
||
- 脚本:`Tools/gpt_image_generate.py`
|
||
- 边长 ≤1024(含 `1024×1024`):默认模型 `gpt-image-2.5`
|
||
- 任一边 >1024:必须用 `gpt-image-2-vip`,并传像素尺寸(如 `2048x2048`),不要用 `"16:9"` 这类比例字符串
|
||
- 需要锁风格时用图生图(`--image` / JSON `image`),参考图为对应风格图或 UI 范例图
|
||
- 本流程额外约束:**背景纯白**。写进提示词,出图后目视确认,不把灰底、场景底直接交给切图或图生 3D
|
||
|
||
### 出图尺寸(与上文条目对应)
|
||
|
||
| 用途 | 尺寸 | 模型 |
|
||
| --- | --- | --- |
|
||
| 设计图 | 见「一.1」:UI `9:16`、场景 `1:1`、角色 `2:3`(比例字符串,默认模型) | 默认模型 |
|
||
| UI 组件图集(沿用现有图集) | `2048×2048` | VIP |
|
||
| 序列帧 | 先 `1024×1024`(4×4),再缩到 `256×256` | 默认模型 |
|
||
| 粒子图 | 先 `1024×1024`,再缩到 `128×128` | 默认模型 |
|
||
|
||
缩小在细化时写成固定步骤(脚本或图像工具二选一,选定后写回本节)。
|
||
|
||
---
|
||
|
||
## 附录 B. 3D 模型生成流程
|
||
|
||
**场景新组件(含地表)默认采用 [Studio 场景模型流程](Doc/Design/Scene/SceneModelProduction.md),不使用下述历史 Blender 自动减面/展 UV 链路。** 下述工具保留供旧资源复现及明确仍使用它的角色等流程。
|
||
|
||
节点说明见 [`ResourceCreate.md`](ResourceCreate.md)「腾讯混元 3D」与「高模减面与贴图烘焙」。调用方只改面数、输出目录和登记类型。
|
||
|
||
```text
|
||
纯白设计图
|
||
→ 混元图生 3D(Tools/hunyuan_3d_generate.py)→ GLB 高模
|
||
→ 减面 + 烘焙 + XPbr(Tools/model_tools/model_lowpoly_bake.py)
|
||
→ 安装到对应 Bundles 目录
|
||
→ 登记 Doc/ResDesc_*.md
|
||
```
|
||
|
||
- 混元面数档:`--faces 50k|500k|1m`(默认 `50k`)。这是高模档,不是游戏面数。
|
||
- 游戏面数用 `--tris` 控制。场景组件按层级:A 主体 **3000~6000**、B 中景 **1000~3000**、C 点缀 **200~800**、地表几何 **2000~6000**(见 `SceneModelProduction.md`)。人物:约 **3000**。
|
||
- 高模与烘焙中间件留在 `Tools/output/`。
|
||
- 角色安装:`Tools/install_character_bundles.py --kind Human` → `Bundles/Characters/Human/{英文名称}/`。场景分件:经统一 Studio 流程后,拷到 `Bundles/Scenes/{类型}/{场景号}/{英文短名}/`。设计原稿不进 Bundles。
|
||
- 碎叶等非流形:`bl_decimate.py` 在 collapse 卡住后会体素重网格再减面。
|
||
- 轴向:混元 GLB = glTF Y-up。烘焙在 Blender 里用 Z-up;**导出 FBX 时** `prepare_game_export` 准备 Y-up 网格缓冲、把原点放在**底面中点**;随后必须调用 `export_fbx_source_yup`(v2:临时副本恢复 Blender Z-up,再烘焙为 Y-up FBX,节点旋转 0/缩放 1),避免顶点与场景重复轴转换。验收须读取完整节点变换后的世界几何,不能仅检查顶点高度轴或 `axis_up` 参数。**局部 +Z 是正面**,这是验收目标,不能假定混元原始高模已符合;`axis_forward="-Z"` 不会自动识别并旋转人物脸部。须在Unity正/侧/背面确认角色解剖前方;三分之四设计图可被重建成斜向,不能仅据glTF相机约定推断,须计入FBX到Unity的左右手系转换。需要校准时在静态源离线完成,并用同源模型绑骨。Unity摆放用「+Z指向目标」,使用 `LookRotation(direction)` 默认的 +Z forward,也不要再绕X扶正或抬高度。
|
||
- 最终 `_base.png` / `_mix.png`(以及烘焙五通道 PNG)写出时做 **PNG 无损压缩**(zlib 最高档;有 Pillow 则 `optimize=True`)。像素不变,只缩小文件。
|
||
- 角色 Prefab:Pipeline `AgentScripts/SetupCharacter.cs`(人物样例入口 `SetupCharacter.SetupCaoCao`)。游戏 FBX 已是 Y-up / 底面原点 / +Z 正面,Prefab **不要**再绕 X 扶正。旧菜单 `AIGame/M3/Setup Character Prefab` 只服务 MaleExplorer 历史资源。
|
||
|
||
---
|
||
|
||
## 细化验证清单
|
||
|
||
按表从上到下逐条做。一条通过(步骤可重复执行、路径与登记写回本文)后再做下一条。
|
||
|
||
| 顺序 | 条目 | 验证时要写回本文的内容 |
|
||
| --- | --- | --- |
|
||
| 1 | 一.1 设计图 | 已写回:比例与实测尺寸、三张样例路径、四角纯白检查 |
|
||
| 2 | 一.2 UI 图 | 参考图、拆单图步骤、Sprite 导入参数、与 JSON→Prefab 的衔接 |
|
||
| 3 | 二.1 场景 | 新组件默认 Studio 低模/UV 流程;战场 A 已接入开战,HomeCamp 已交付独立场景;测试场景已清理 |
|
||
| 4 | 二.2.A 人物 | 已写回:CaoCao、3000 面、`Characters/Human/`、Pipeline Prefab、运行时地址 `CaoCao` |
|
||
| 5 | 二.2.B 非人角色 | 已写回:Animal 目录、验收场景/Pipeline、LmCat 样例门槛;正式宠物内容待做 |
|
||
| 6 | 二.3 动画 | 非人:DGX TokenRig+UniMate + `dgx3d_animal_pipeline.py` 已写回;人形 Kimodo 仍待细化 |
|
||
| 7 | 二.4 独立物件 | 武器与道具的面数和 Bundle 目录 |
|
||
| 8 | 二.5 特效 | 缩小步骤、序列帧切格、Particle Prefab 做法 |
|
||
| 9 | 三 声音 | 音乐与音效的生成方式和目录 |
|
||
|
||
### 重型四足伙伴样例补充(2026-10-21)
|
||
|
||
岩甲犀RockRhino已按同角色高模→静态-Z验收→自身29骨→单四足Walk→同rig Idle/冲撞Attack→离线收尾→Edit/Play完成。配方Config/Art/Companions/RockRhino.json,0.55m/2000tris/1024 XPbr,解剖分支quadruped_heavy与braced_bash必须配对;胸背/头颈/四蹄映射和岩甲/独角刚性区域均按自身检查填写,不能套用泡泡龟探头动画。冲撞需肩部前送、可见低头与四脚支撑,事件不直接结算减速。完整来源、失败修正和验收见Doc/Design/Character/RockRhino/ProductionBrief.md及EnemyCharacterProduction.md。
|
||
|
||
### 双足火焰伙伴样例补充(2026-10-21)
|
||
|
||
烈焰狮FlameLion已按同角色50k高模→2000tris/1024 XPbr静态-Z验收→自身远程28骨→单双足Walk→同rig Idle/火焰施法Attack→Edit/Play完成。配方Config/Art/Companions/FlameLion.json,0.60m;biped_short复用双足步态,flame_roar检查自身头颈/双爪/双脚/鬃毛及相对胸背的施法行为。无独立下颌与尾骨,不宣称张嘴口型或尾部次级运动。详情见Doc/Design/Character/FlameLion/ProductionBrief.md及EnemyCharacterProduction.md。
|
||
|
||
|
||
### 2026-10-24 正面约定更新
|
||
|
||
新资源统一为 Y-up、脚底中心原点、局部 +Z 正面,配置见 `Config/Art/ModelConvention.json`。男孩 CampGuideStudio 与女孩 LmGirlTpose 的当前静态 FBX 已经沿用腾讯高模的 +Z 正面,无需绕 Y 轴补转。`axis_forward="-Z"` 仍是 FBX 坐标转换参数,不表示模型必须朝 -Z。
|
||
|
||
既有 -Z 模型、骨架、动画、PrototypeArena 布局及相应制作记录保留原绑定空间和旧资源适配;文中的旧角色样例不能视为已经批量迁移。新资源不得额外套用旧资源的 180° 转向补偿。
|