kicker: 技术方案 title: Sect Management作品 · 3D 资产生产体系 总体建设方案 cover_lines:
- Sect Management作品
- 3D 资产生产体系
- 总体建设方案
cover_sub:
- PC 端 · 窗口化 · Q 版低模(《部落冲突》风格)
- Sect Management + 挂机 + SLG
meta:
- 文档性质:整合总方案(资产标准 / 生成管线 / 工具设计 / 成本模型 / 执行计划)
- 核 心 形 态:2D 全自动接入 + 3D 人工网页订阅 + 文件为接口
- 版本:v1.0 整合版
- 日期:2026-09-16
- 状态:方案待评审,尚未投入实现
Sect Management作品 · 3D 资产生产体系 总体建设方案
项目:PC 端 · 窗口化 · Q 版低模(《部落冲突》风格)· Sect Management + 挂机 + SLG 文档性质:整合总方案(覆盖资产标准、生成管线、工具设计、成本模型、执行计划) 版本:v1.0 整合版 · 2026-09-16 状态:方案待评审,尚未投入实现
摘要 · 一页速览
核心架构:三段式,以文件为唯一跨系统接口。
资产描述 → [2D 生成] 全自动 → [3D 生成] 人工网页订阅 → [文件投放] → [规整导入] 全自动
豆包 MCP Hyper3D 网页版 inbox Blender 脚本
¥0.2/张 ¥2.88/可用模型 唯一接口 免费
五个关键决策
| # | 决策 | 依据 |
|---|---|---|
| 1 | 技术路线 A:真 3D 等距,非 2D 预渲染精灵 | PC 端窗口化,性能预算宽松,资产可复用性高 |
| 2 | 2D 走 MCP 全自动 | 豆包 Seedream MCP 存在且专为 WorkBuddy 设计;¥0.2/张,失败不计费 |
| 3 | 3D 走网页 + 订阅,不接入系统 | 同时拿到三重好处:免费抽卡 + TAPose + 订阅制低价;且零集成成本 |
| 4 | AI 只出单体零件 | 复合建筑由 AI 一次生成会失控;零件化后可跨建筑复用 |
| 5 | 材质走 B 路线:统一顶点色(已定) | 贴合色板 + 可合批 + 省贴图内存;flat shading 让顶点色的"色块感"成为免费红利(见 8.4) |
关键数字
| 项目 | 数值 |
|---|---|
| 2D 单资产成本 | ¥2.6(13 张候选) |
| 3D 订阅(Creator 年付) | ¥2074/年 → ¥2.88/可用模型 |
| 3D 订阅(Business 年付) | ¥8294/年 → ¥1.66/可用模型 |
| 对比:直购 credit | ¥5.4/模型(贵 87%) |
| 对比:API/MCP 路径 | ≈¥14.4/可用模型(贵 5 倍,因抽卡也扣费) |
| 首期 60 资产预估 | ≈¥2230(2D ¥156 + 订阅 ¥2074) |
第一章 项目与产出目标
1.1 作品画像
| 维度 | 设定 |
|---|---|
| 平台 | PC 端,窗口化运行 |
| 美术风格 | Q 版低模,硬边平面着色,参照《部落冲突》造型语言 |
| 玩法 | Sect Management + 挂机 + SLG |
| 场景特征 | 同屏大量建筑与单位、长时间挂机、密集 UI |
1.2 技术路线(已定:路线 A)
《部落冲突》的技术真相是 2D 等距预渲染(3D 建模 → 渲染成 2D 精灵图),但本项目的选择是路线 A:真 3D 等距。
| 路线 A:真 3D 等距(已选) | 路线 B:2D 预渲染精灵 | |
|---|---|---|
| 资产形态 | 3D 模型(FBX)实时渲染 | 3D 渲染成序列帧 → 图集 |
| Unity 用法 | Mesh + 场景相机 | Sprite / 图集 |
| 资产量 | 每资产 1 份 | 每资产 × 朝向数 × 帧数 |
| 适合 | 需自由缩放、旋转、换装、LOD | 视角固定、想极致省运行时性能 |
选 A 的理由:PC 端窗口化性能预算远比手机宽松;资产可复用性高,后续做换装、缩放、新建筑都方便;不必为每个资产渲染几十张图。
⚠️ 本方案全部内容基于路线 A。若日后改走路线 B,规整脚本与资产标准需重做。
1.3 资产需求概览
| 类别 | 典型资产 | 数量级 | 建议来源 |
|---|---|---|---|
| 核心建筑 | 山门、大殿、练功房、藏经阁、丹房、演武场、议事厅 | 8~15 | AI 生成(门派辨识度靠这些) |
| 功能建筑 | 弟子居所、仓库、厨房、围墙、瞭望塔、钟楼 | 10~20 | AI 生成 + Poly Pizza 混用 |
| 装饰摆件 | 灯笼、石灯、旗幡、香炉、石狮子、水井、匾额 | 20~40 | Poly Pizza 主力 + AI 补缺 |
| 自然物件 | 松、竹、梅、假山、花草、山石 | 15~30 | Poly Pizza 主力 |
| 地块 | 草地、石板路、水面、台阶、田垄 | 10~20 | Poly Pizza 主力或程序化生成 |
| 角色 | 掌门、长老、弟子(多套)、杂役、访客、敌人 | 8~15 | AI 生成(需统一风格 + 骨骼动画) |
| 道具图标 | 武器、丹药、灵石、卷轴、令牌、宝箱 | 20~40 | Poly Pizza + AI,或 UI 直接画 |
门派题材的特殊性:Poly Pizza 约 10,600 个模型以西方奇幻 / 现代 / 科幻为主,中式古建(飞檐、斗拱、琉璃瓦)、国风道具(香炉、蒲团、经卷)、国风装饰(松竹梅、石狮子、匾额)命中率明显偏低。
→ 结论与通用项目相反:门派题材下 AI 生成比例需要上调,而非下调。
第二章 总体架构
2.1 核心决策:三段式 + 文件接口
整个体系切成三段,分界线画在"哪里需要人"和"哪里需要独特能力"上:
| 段 | 通道 | 执行方 | 自动化 | 接入系统 |
|---|---|---|---|---|
| 一 | 2D 生成 | 工具内自动调用豆包 MCP | 全自动 | ✅ 接入 |
| 二 | 3D 生成 | 人工在 Hyper3D 网页操作 | 人工 | ❌ 不接入 |
| 三 | 规整导入 | 工具内自动调用 Blender | 全自动 | ✅ 接入 |
段与段之间的接口只有一个:文件。
第二段与系统之间没有任何代码耦合——工具产出"交接包"(提示词文本 + 图片文件),人工拿去网页生成,下载所得 GLB 丢进 inbox/ 目录,系统从 inbox/ 继续。
2.2 为什么这样分:3D 不接入系统的四重理由
这个决策看似"退让"(放弃自动化),实际是同时拿到四个好处:
| # | 理由 | 说明 |
|---|---|---|
| 1 | 免费抽卡 | 网页工作区官方机制是 "Generation is pay by result: you can preview results before confirming credit spend" —— 确认前免费生成。而 MCP / REST API 都是提交即扣 0.5 credit,且 API 连预览图都看不到。要免费抽卡,只能走网页 |
| 2 | TAPose 可用 | 角色绑骨必须用规范 T-Pose / A-Pose。Hyper3D MCP 的参数集里没有 TAPose(仅 6 个参数,additionalProperties: false),走 MCP 生成的角色拿不到规范姿态,绑骨要美术手调 |
| 3 | 订阅制生效 | 订阅(Creator / Business)在网页工作区直接生效,且年付比按次买 credit 便宜近一半 |
| 4 | 零集成成本 | 不写 API 集成代码 → 不依赖接口稳定性、不受计费规则变动影响、不被限流。将来换成腾讯云混元或任何其他工具,系统一行都不用改 |
代价:3D 环节无法无人值守,需人工操作。这个代价用"抽卡免费"和"订阅低价"换回来了。
结论:老大的形态选择在成本与能力上都是最优的。
2.3 架构图
<!--SVG: _assets/arch.svg-->
2.4 人工职责边界
人工只做四件事,其余全自动:
| # | 动作 | 频率 | 说明 |
|---|---|---|---|
| 1 | 写资产描述(一句中文) | 每资产 1 次 | 创作输入,不可替代 |
| 2 | G1 选图:从候选设定图中选定稿 | 每资产 1 次 | 审美判断 |
| 3 | 网页操作 + 把下载的 GLB 丢进 inbox/ | 每资产 1 次 | 换取免费抽卡能力 |
| 4 | G2 定稿:确认最终交付 | 每资产 1 次 | 质量把关 |
自动完成:提示词拼接、2D 生成与抽卡、三视图裁切、交接包产出、inbox 监视、减面与清理、色板量化与顶点色烘焙、FBX 导出、成本记账、台账登记。
第三章 通道一 · 2D 生成(全自动)
3.1 通道说明
| 项目 | 内容 |
|---|---|
| 执行方 | 工具内自动调用 |
| 接口方式 | MCP(seedream-mcp) |
| 模型 | doubao-seedream-4-0-250828 |
| 单价 | ¥0.20 / 张,输入参考图免费,生成失败(含Review未过)不计费 |
| 限流 | 500 张/分钟(远超本项目需求) |
3.2 MCP 安装与配置
包信息(已核实存在于 npm)
| 项目 | 值 |
|---|---|
| 包名 | seedream-mcp@0.1.1 |
| 描述 | A reusable MCP server for Volcengine Ark Seedream image generation, designed for Tencent WorkBuddy and other MCP clients |
| 许可证 | MIT |
| 依赖 | 仅 2 个(@modelcontextprotocol/sdk、zod),风险可控 |
| 环境要求 | Node.js 20+ |
关键能力(正对本项目需求)
- 文生图 + 图生图 + 参考图编辑
- 参考图支持 HTTP(S) URL、data URL、本地图片路径(本地路径很关键——三视图就存在本地)
- 生成图片立即保存到本地,规避临时 URL 失效问题
- 支持尺寸、模型/接入点、水印、组图模式
- API Key 不出现在状态、结果或日志中
推荐配置方式:本地安装 + 绝对路径
⚠️ Windows 踩坑预案:MCP 客户端不继承终端 PATH,必须写绝对路径,否则报spawn ENOENT(此前在 uvx 上已实测踩过)。且 Windows 下用.cmd做 command 可能无法直接 spawn。
方式一(推荐):本地安装后用 node 直跑
cd <项目目录>
C:/Users/Aowind/.workbuddy/binaries/node/versions/22.22.2-3/npm.cmd install seedream-mcp@0.1.1
{
"mcpServers": {
"seedream": {
"command": "C:/Users/Aowind/.workbuddy/binaries/node/versions/22.22.2-3/node.exe",
"args": ["<项目目录>/node_modules/seedream-mcp/dist/index.js"],
"env": {
"ARK_API_KEY": "<火山方舟 API Key>",
"SEEDREAM_MODEL": "doubao-seedream-4-0-250828",
"SEEDREAM_OUTPUT_DIR": "<项目目录>/work/01_concept"
}
}
}
}
方式二(备选):npx 方式
{
"mcpServers": {
"seedream": {
"command": "C:/Users/Aowind/.workbuddy/binaries/node/versions/22.22.2-3/npx.cmd",
"args": ["-y", "seedream-mcp@0.1.1"],
"env": { "ARK_API_KEY": "<...>", "SEEDREAM_MODEL": "doubao-seedream-4-0-250828" }
}
}
}
配置后须在「连接器管理 → 自定义连接器」点「信任」并完成授权(与 Hyper3D MCP 同一流程)。
SEEDREAM_OUTPUT_DIR 建议显式指定 —— 不配置时会回落到 CODEBUDDY_PROJECT_DIR/seedream/,路径不可控。
3.3 五层提示词模板系统
核心设计:五层拼接。前四层全局固定,只有 L2 随资产变化。
[L1 风格前缀] ← 全局固定
[L2 主体描述] ← 用户输入,唯一变量
[L3 视角姿态] ← 按用途切换(设定图 / 三视图)
[L4 技术约束] ← 全局固定
[L5 负向约束] ← 全局固定(Seedream 无 negative_prompt 参数,只能用自然语言写)
L1 风格前缀(示例,需按风格基准产出定稿)
极简Q版低模作品美术风格,等距视角,硬边平面着色 flat shading,
无平滑法线,几何体块化,轮廓清晰;参考《部落冲突》的建筑与角色造型语言;
主色板严格限定为:朱红#8C3A2B、赭金#C9A227、米白#E8DCC0、深木#6B4A2F、青灰#5A6B72;
光照为柔和顶部主光加环境光,明暗对比中等;画面干净、无噪点。
L2 主体描述(示例)
一座中式门派山门,单层,三开间,重檐歇山顶,朱红廊柱,匾额上书「XX门」
L3-a 设定图视角(阶段 1 用)
主体居中完整展示,正视微俯约15度三分之四视角,正交投影无透视变形,
主体占画面高度75%,四周留白。
L3-b 三视图(阶段 2 用)
生成该对象的正交三视图,分别为正视图、侧视图、背视图,
三个视图等大并排,纯白背景,无阴影,无投影,同一比例与朝向基准。
⚠️ 三视图必须正交投影。 若带透视,3D 生成会把透视变形当成真实形状学进去。
L4 技术约束
纯白色背景#FFFFFF,无地面,无投影,无场景元素,无文字水印,
模型边缘清晰锐利,便于抠图。
L5 负向约束
不要真实感渲染,不要写实材质,不要高清照片风格,不要景深虚化,
不要复杂背景,不要多余装饰物,不要人形比例失调。
模板管理:模板存放于 prompts/,纳入版本管理——模板是资产一致性的真正来源,改模板等于改全项目风格。
3.4 迭代式抽卡策略
一致性不能靠"固定提示词"或随机种子保证(详见 3.5),只能靠迭代收敛:
| 轮次 | 动作 | 张数 | 成本 |
|---|---|---|---|
| R1 | 无参考图,纯文生图 | 4 | ¥0.8 |
| R2 | 取 R1 最接近的一张作参考图,微调 L2 | 4 | ¥0.8 |
| R3 | 取 R2 选定的一张 + 风格锚图作参考 | 4 | ¥0.8 |
| 定稿 | —— | 1 | ¥0.2 |
| 小计 | 13 张 | ¥2.6 / 资产 |
关键点:R2、R3 把上一轮胜出的图作为参考图传入。 这是把"盲抽"收敛成"迭代"的核心手法。
参考图参数
| 参数 | 取值 |
|---|---|
image | 参考图数组,最多 10 张 |
size | "2K";三视图用 2304x1728(4:3) |
sequential_image_generation | "auto"(抽卡)/ "disabled"(单张) |
sequential_image_generation_options.max_images | 4(默认 15;越多越贵且质量易衰减) |
watermark | false(生产必须关) |
seed | 待实测(见 3.5) |
3.5 待实测:Seedream 4.0 是否支持 seed
为什么重要:若支持 seed,可通过固定种子 + 固定提示词获得高度相似的结果,一致性控制会大大简化。
当前证据冲突:
| 来源 | 说法 |
|---|---|
| 火山引擎官方 4.0 示例参数 | 无 seed(仅 model / prompt / image / size / sequential_image_generation / stream / response_format / watermark) |
| 第三方镜像文档 | seed 仅 doubao-seedream-3.0-t2i / seededit-3.0-i2i 支持 |
| 另一第三方网关 | 列出 4.0 含 seed |
验证方法:请求体加 "seed": 42,连发两次,比对结果。
注意:即便支持,官方口径也是"相同 seed 会生成类似结果,但不保证完全一致"。故 seed 只是辅助,参考图锚定链才是主力。
第四章 通道二 · 3D 生成(人工网页 + 订阅)
4.1 通道说明
| 项目 | 内容 |
|---|---|
| 入口 | https://hyper3d.ai → Rodin 工作区 |
| 执行方 | 人工 |
| 计费 | 确认时扣 credit(确认前免费预览) |
| 与系统关系 | 不接入,以文件为接口 |
4.2 订阅方案决策
官方定价(2026-09-16 查官方定价页)
| 计划 | 月付 | 年付 | 年付月均 | 预计输出 | 关键权益 |
|---|---|---|---|---|---|
| Free | $0 | $0 | — | — | 确认前免费生成、10 个私有资产 |
| Creator | $30 | $288 | $24 | 约 60 模型/月 | Multi-image to 3D、Smart Low-Poly、HD Texture、Baked normals、Redos 几何×20/材质×6、无限导出、无限私有资产 |
| Business | $120 | $1152 | $96 | 约 416 模型/月 | Creator 全部 + 完整 API、高分辨率贴图、High-Poly Quads、Redos 几何×50/材质×15、120 RPM |
| Enterprise | 定制 | 定制 | — | — | 本地部署、定制 LoRA、批量折扣 |
credit 换算关系(交叉验证得出)
- Creator:30 credits/月 → 60 模型/月
- Business:208 credits/月 → 416 模型/月
- 两者都是 1 credit = 2 模型,即 0.5 credit / 模型
- 与官方 API 文档的
Base Gen-2.5 generation = 0.5 credits完全吻合 ✓
推荐:Creator 年付 $288
| 理由 | 说明 |
|---|---|
| 不需要 API | Business 的核心卖点是"完整 API 访问",而本项目 3D 不接入系统 → 用不上 |
| 60 模型/月够用 | 首期 60 资产,一个月 Creator 即可覆盖 |
| 无限私有资产 | Free 仅 10 个,抽卡与量产必然超限 → 订阅是必需的 |
| Redos 额度充足 | 几何 ×20 / 材质 ×6,为抽卡留出空间 |
需实测确认:Redos: Geometry x20 的确切机制(是"免费重做 20 次"还是"额度上限")。这直接影响抽卡空间。 额外发现:Creator 计划还包含 Seedream 免费额度(官方原文:"Free Creator tier models - Seedream and default models")以及 OmniCraft 的 HDRI Generator 免费 8K、Texture Generator 免费下载、Image Enhancer 无限 2K/4K。前者可能覆盖部分 2D 成本,后两者对作品场景环境光与材质贴图有直接价值 → 具体额度待实测。
4.3 成本真相:为什么网页 + 订阅是最优解
这是整个方案最重要的一笔账。
单价对比(年付摊销)
| 路径 | 计费方式 | 单次生成成本 |
|---|---|---|
| 网页 + Creator 年付 | 确认时扣 | $288 ÷ 720 = $0.40 ≈ ¥2.88 |
| 网页 + Business 年付 | 确认时扣 | $1152 ÷ 4992 = $0.23 ≈ ¥1.66 |
| 直购 credit | 0.5 credit × $1.5 | $0.75 ≈ ¥5.40(贵 87%) |
| 腾讯云混元 | 生成即计费 | ¥1.0~1.8 |
但真正的差距在"可用模型单价"——因为抽卡是否扣费完全不同
假设按 5 次尝试得到 1 个满意模型:
| 路径 | 30 credits 能做什么 | 可得可用模型 | 可用模型单价 |
|---|---|---|---|
| 网页 + 订阅 | 抽卡免费,credits 只用于确认<br/>30 ÷ 0.5 = 60 次确认 | 60 个 | ¥2.88 |
| API / MCP | 每次都扣费<br/>30 ÷ 0.5 = 60 次尝试,5 抽 1 | 12 个 | ≈¥14.4 |
差距 5 倍。 原因很简单:网页版抽卡不花钱,API/MCP 抽卡也花钱。
这就是"3D 不走 MCP、走网页"的成本依据。 加上 TAPose 与零集成成本,这个决策无可挑剔。
4.4 网页操作 SOP(人工照此执行)
工具产出的交接包应包含:
| 文件 | 作用 |
|---|---|
提示词.txt | 已拼好的 L2 描述(可直接粘贴进网页提示词框) |
front.png / left.png / back.png | 裁切规整后的三视图(直接拖入上传区) |
README.txt | 该资产的参数建议(tier / 面数 / 是否开 TAPose) |
人工步骤:
| 步 | 动作 | 要点 |
|---|---|---|
| 1 | 打开 https://hyper3d.ai,进入 Rodin 工作区 | 确认已订阅 |
| 2 | 上传三视图(按 正 → 侧 → 背 顺序) | 顺序即语义,不要打乱 |
| 3 | 粘贴 提示词.txt 内容到提示词框 | 作为方向性引导 |
| 4 | 按 README.txt 建议设置 tier / 面数 | 角色务必勾 TAPose |
| 5 | 生成,预览结果 | 此步骤不扣 credit,可反复重试 |
| 6 | 满意 → 点确认下载 | 此时才扣 credit |
| 7 | 把下载的 GLB 丢进 inbox/ | 命名须合规(见第五章) |
抽卡的正确姿势:在第 5 步反复生成直到满意,不满意直接丢弃重新生成,不要点确认。这是"零成本试错"的用法。
4.5 网页版参数建议
网页工作区支持完整的参数集(比 MCP 的 6 个参数丰富得多):
| 参数 | 角色 | 建筑 | 道具 / 装饰 | 说明 |
|---|---|---|---|---|
| tier | Gen-2.5-Medium | Gen-2.5-Medium | Gen-2.5-Low / Extreme-Low | 网页版有五档 |
| mesh_mode | Quad | Quad | Quad | 四边形拓扑利于绑骨与精修 |
| 目标面数 | 4000~8000 | 8000 | 2000~4000 | 后续仍需 Blender 减面 |
TAPose | ✅ 必开 | — | — | 角色绑骨必需 |
is_symmetric | balanced | symmetric | balanced | |
geometry_instruct_mode | faithful | faithful | faithful | 默认 creative 偏想象,要忠实还原设定图须改 |
material | Shaded | Shaded | Shaded | 取色用(见 8.4);最终形态由 Blender 转顶点色 |
texture_delight | true | true | true | 去除烘焙光照,便于统一色板 |
| 导出格式 | glb | glb | glb | Blender 侧转 FBX |
第五章 接口点 · 文件投放规范
5.1 inbox 机制
inbox/ 是系统与 3D 生成之间唯一的接口。工具监视该目录,任何新出现的 GLB/FBX 自动进入规整流程。
这个设计的价值:将来换任何 3D 生成工具(腾讯云、本地模型、外包建模),只要产物丢进 inbox/,系统行为完全不变。
5.2 命名规范(关键)
命名是自动推断资产类型的唯一依据,必须严格。
格式:<类型前缀>_<资产名>_<序号>.glb
| 类型前缀 | 对应角色 | 面数预算 | 默认尺寸 |
|---|---|---|---|
bld_ | 建筑 | 2000 三角形 | 6.0 m |
chr_ | 角色 | 2500 三角形 | 1.8 m |
prp_ | 道具 | 400 三角形 | 1.5 m |
dec_ | 装饰 | 600 三角形 | 1.5 m |
env_ | 地块 | 2000 三角形 | —— |
示例
bld_shanmen_01.glb 山门
chr_zhangmen_01.glb 掌门
prp_xianglu_01.glb 香炉
dec_denglong_01.glb 灯笼
env_caodi_01.glb 草地
既有脚本已实现 --auto-role,支持中英文关键词推断(实测 13 用例全通过)。但前缀命名比关键词猜测更可靠,建议人工下载时即按规范命名。
5.3 元数据 sidecar(可选但推荐)
抽卡过程会产生大量信息(用了哪个候选、第几次尝试、实际参数)。建议对每个入库文件附一个同名 .json:
{
"asset": "shanmen",
"role": "building",
"channel": "web",
"generated_at": "2026-09-16T15:30:00+08:00",
"tier": "Gen-2.5-Medium",
"mesh_mode": "Quad",
"target_faces": 8000,
"prompt_ref": "prompts/entries/shanmen.txt",
"attempt": 3,
"credits_consumed": 0.5
}
作用:成本归集、参数复现、问题追溯。
第六章 通道三 · 规整与导入(全自动)
6.1 执行方式
python blender_unity_prep.py --batch ./inbox --outdir ./export/unity_fbx \
--preset clash-style --auto-role --flat \
--palette config/palette.json --bake-vertex-color --strip-textures
(--palette / --bake-vertex-color / --strip-textures 为 B 路线新增参数,见 8.4)
6.2 既有脚本能力
blender_unity_prep.py(已在工作区,725 行,逻辑经 mock 测试通过,尚未在真实 Blender 实机运行)
| 功能 | 说明 |
|---|---|
| 统一缩放 | 按角色类型自动设尺寸 |
| 减面 | 减到 clash-style 预设预算 |
| 网格清理 | 清理孤立点、重复面等 |
| 平坦着色 | --flat,硬边低模外观(本身就是强力风格统一器,且与顶点色天然契合) |
| 顶点色烘焙 | --bake-vertex-color --palette:采样 base color → 量化到 12~16 色色板 → 写入 Color Attribute(B 路线新增,见 8.4) |
| 贴图剥离 | --strip-textures:删除全部贴图与材质槽 → 落成 B 的交付形态(B 路线新增) |
| 批量模式 | --batch <目录> --outdir <目录> [--recursive] |
| 角色自动推断 | --auto-role,中英文关键词 |
| FBX 导出 | apply_scale_options='FBX_SCALE_ALL' 规避 100 倍缩放陷阱;须同时勾选导出顶点色 |
| 检查报告 | 顶点数超限、面数超预算、无顶点色、骨骼超 30 全告警(B 路线下「无 UV / 无材质」不再算缺陷) |
clash-style 预设的五种角色预算
| 角色 | 面数预算(三角形) | 默认尺寸 |
|---|---|---|
building | 2000 | 6.0 m(Q 版刻意压矮) |
character | 2500 | 1.8 m |
prop | 400 | 1.5 m |
decor | 600 | 1.5 m |
envtile | 2000 | —— |
6.3 验证闸门
首次只跑 3~5 个资产,在 Unity 里确认尺寸 / 面数 / 顶点色显示正确 / 朝向均正常,并用 Frame Debugger 确认多个资产确实合批(Draw Call 未随资产数线性增长),再全量批处理。
合批验证是 B 路线的成败判据:若合批不成立,B 相对 A 的唯一优势就消失了,须回退检查 shader 与材质共享方式。
第七章 辅助来源 · Poly Pizza
约 10,600 个免费低模,单文件 .glb,需在 poly.pizza Apply免费 API key。
| 项目 | 内容 |
|---|---|
| 成本 | 免费 |
| 适用 | 装饰摆件、自然物件、地块(通用性强,命中率高) |
| 不适用 | 中式古建、国风道具(命中率低,须靠 AI 生成) |
| 筛选要点 | 优先 CC0 许可 + flat-shaded / vertex-colored 标签,避免混入写实风格 |
| 与 B 路线的关系 | B 路线(8.4)下 vertex-colored 资产开箱即用——本身已是顶点色,只需量化到色板,省去烘焙环节 |
与 AI 资产混用的关键:Poly Pizza 上不同作者风格差异极大(写实、卡通、像素、极简都有),必须过同一套规整流程 + 色板归并才能混用,否则一眼看出"这件是买的、那件是生成的"。
第八章 资产标准
8.1 面数预算(三角形)
| 平台 | 小道具 | 主力角色 | 环境地块 | 单场景总量 |
|---|---|---|---|---|
| 移动端休闲 | 100~300 | 500~2k | 200~800 | <25k |
| 移动端中核 | 300~800 | 2k~5k | 500~2k | 25k~75k |
| PC 风格化(本项目) | 500~3k | 3k~15k | 1k~8k | <500k |
本项目采用保守的 clash-style 预设(道具 400 / 装饰 600 / 建筑 2000 / 角色 2500 / 地块 2000),远低于 PC 上限——因为挂机 + SLG 同屏数量大,且需为 LOD 与后续扩展留余量。
8.2 尺寸规范
| 资产类型 | 默认高度 |
|---|---|
| 建筑 | 6.0 m(Q 版刻意压矮,非写实比例) |
| 角色 | 1.8 m |
| 道具 / 装饰 | 1.5 m |
1 Unity unit = 1 米。
8.3 色板(风格一致性的第一道闸)
定死 12~16 色主色板,所有资产(含 Poly Pizza 的)事后统一到该色板。
{
"name": "menpai_v1",
"colors": {
"roof_tile": "#8C3A2B",
"roof_ridge": "#C9A227",
"wall_plaster": "#E8DCC0",
"wood_beam": "#6B4A2F",
"stone_grey": "#5A6B72",
"jade_green": "#4E7A5E"
}
}
8.4 材质路线:B · 统一顶点色(已定)
术语消歧:本节的「B」是材质路线编号(B = 统一顶点色,A = Shaded 直接落地);与摘要决策 1 的「技术路线 A」(真 3D 等距 vs 2D 预渲染精灵)是两套独立编号,勿混读。
决策:采用 B 路线——最终交付形态为「无贴图 + 顶点色 + 单一共享材质」,以换取色板统一、可合批、省贴图内存。放弃 A(Shaded 直接落地)。
| 路线 | 状态 | 理由 |
|---|---|---|
A 省事 · Shaded | 不采用 | 光照烘死、难统一色板、每资产独立材质 → 无法合批 |
| B 统一 · 顶点色 | ✅ 已定 | 贴合色板、可合批、省贴图内存 |
⚠️ 实施前必须澄清的一处参数语义
material=None 是交付形态(最终产物不带贴图),不是传给 Hyper3D 的参数。
若真按字面把 material=None 传给生成端,模型将完全不带颜色信息,Blender 端「量化到色板」就失去了输入——没有原始颜色可供归并,色板一致性无从谈起。
正确的参数组合:
| 环节 | 参数 | 作用 |
|---|---|---|
| Hyper3D 生成端 | material=Shaded | 保留 base color,作为颜色来源 |
| Hyper3D 生成端 | texture_delight=true | 去掉烘焙光照,让颜色接近纯 albedo |
| Blender 规整端 | 量化 → 顶点色 → 删贴图 | 落成 B 的交付形态 |
即:用 Shaded 取色,用 Blender 转成顶点色。最终产物仍是「无贴图 + 顶点色 + 单材质」,与 B 的目标完全一致,但颜色信息得以保留。
官方定义依据(2026-09-16 查证 fal.ai / pixazo 的 Rodin v2.5 参数文档):
material 取值 | 官方定义 | 对 B 路线是否适用 |
|---|---|---|
PBR | physically-based materials with realistic lighting | ✗ 多出 metallic / roughness / normal 整套贴图,对顶点色路线无用,徒增下载量 |
Shaded | baked lighting with no PBR maps | ✓ 只有简单着色,是取色的最省形态 |
All | both PBR and Shaded variants | ✗ 重复产出 |
None | geometry only with no textures | ✗ 无任何颜色,量化失去输入 |
texture_delight 官方定义:removes baked-in lighting and shine from the texture, giving a flat, neutral surface that's easier to relight or edit。它与 Shaded 不是互斥,而是修正:Shaded 自带烘焙光,texture_delight 恰好剥掉,得到 flat、中性的纯 albedo。
结论:material=Shaded+texture_delight=true是 B 路线取色的精确最优组合——PBR冗余、None归零、All浪费。此处曾有一处误判(认为二者"语义冲突"),经查官方定义后已修正。
B 路线四步(Blender 端,需扩展 blender_unity_prep.py)
| # | 步骤 | 要点 |
|---|---|---|
| 1 | 采样 | 逐面读取 base color |
| 2 | 量化 | 最近邻映射到 palette.json 的 12~16 色(硬约束,不可跳过) |
| 3 | 烘焙 | 写入 Color Attribute(顶点色);先按色区边界分割再减面 |
| 4 | 清理 | 删除全部贴图与材质槽,赋 1 个共享顶点色材质,导出 |
顺序不可颠倒:减面必须发生在顶点色烘焙之前,且在减面时保护色区边界。顺序错了会出现颜色渗色(一个面被两个色区的顶点插值成中间色)。
与既有代码的关系(实施成本评估):脚本已有 merge_materials_by_color()(约 40 行),其「从 Principled BSDF 读 Base Color → 量化 → 归并材质槽」的框架正是 B 路线的基础。需两处改造:
| 改造点 | 现状 | B 路线要求 |
|---|---|---|
| 量化目标 | 1/8 色阶近似归并(round(v*8)) | 最近邻映射到 palette.json 的 12~16 个具体色 → 从"近似归并"升级为"强制统一" |
| 输出形态 | 保留归并后的材质槽 | 写入 Color Attribute + 删除全部材质槽 |
取色逻辑(color_key 读 Base Color)可直接复用,净新增工作量集中在「色板最近邻 + 顶点色写入 + 贴图剥离」三块。
收益(量化)
| 维度 | 收益 |
|---|---|
| Draw Call | 所有资产共用 1 个顶点色材质 → 可静态合批;50 个建筑由 50 批降至 1~数批 |
| 显存 / 包体 | 贴图全部退场(Q 版低模通常每资产 512²~1024²,50 个资产即为可观占用) |
| 色板一致 | 量化是硬约束,AI 资产与 Poly Pizza 资产被拉到同一色板 |
代价与规避
代价:颜色分辨率受顶点数限制——顶点色逐顶点插值,色块边界锐度取决于网格密度;减面过狠会使颜色区域粗糙。
规避(本方案的关键红利):flat shading 恰好把这个缺点变成优点。扁平着色本就是硬边、色块分明的表现方式,顶点色边界与面边界天然重合,观感反而比贴图更"低多边形"、更贴合《部落冲突》风格。A 路线想营造的色块感,在 B 路线下是免费副产品。
唯一需要守住的红线:减面预算(8.1)与颜色分区粒度要平衡。若某资产的色区比面片还细,应上抬该资产的面数预算,而非牺牲色板一致性。
Unity 侧落地(不可遗漏)
| 项目 | 要求 |
|---|---|
| Shader | URP 默认 Lit 不读顶点色 → 必须用 Shader Graph 或自定义 shader 读 COLOR 语义 |
| 材质 | 全局维护 1 个共享材质(读顶点色、无贴图),禁止逐资产新建 |
| 合批 | 勾选 Static Batching;或依赖 SRP Batcher(需同一 shader 变体) |
| 验证 | P1 阶段先做 1 个建筑,确认顶点色正确显示且能合批,再全量铺开 |
8.5 Unity 导入设置
| 设置项 | 值 | 原因 |
|---|---|---|
| Scale Factor | 1 | 配合 FBX_SCALE_ALL,避免 100 倍陷阱 |
| Convert Units | 勾选 | 同上 |
| Read/Write Enabled | 关闭 | 否则内存翻倍(顶点色不需 CPU 访问,仍可关闭) |
| Material Creation Mode | None | B 路线不用 FBX 自带材质,改挂共享顶点色材质(见 8.4) |
| 贴图相关(Mip Map / sRGB / Linear) | 不适用 | B 路线贴图全部退场;若某资产仍留贴图,按原规则:Mip 开启、Albedo sRGB、Normal/Metallic/Smoothness/AO 走 Linear |
8.6 其他硬约束
| 项目 | 限制 |
|---|---|
| 单 Mesh 顶点数 | ≤ 65535(16-bit 索引上限,老 Android GPU 超了完全不渲染) |
| 移动端每角色骨骼 | ≤ 30 根 |
| 贴图尺寸 | 取 2 的幂(512 / 1024 / 2048) |
| 角色格式 | 必须 FBX(带骨骼动画时 Unity 原生不支持 GLB) |
8.7 性能优化优先级
对挂机 + SLG,Draw Call 比面数重要得多。
一个建筑 2000 面不算什么,但 50 个建筑 = 50 个 Draw Call 才是瓶颈;挂机作品要长时间稳定运行,内存与 GC 比峰值性能更关键。
优先级:合批 > 顶点色(已定,见 8.4) > LOD > 面数
图集路线未采用:图集方案仍需 UV 且占用图集空间,与 B 路线「贴图全部退场」的目标冲突;顶点色在做到合批的同时连贴图内存一起省掉,是同一目标下更彻底的路径。
第九章 工具设计
9.1 目录结构
asset_forge/
├── config/
│ ├── palette.json # 色板 + 顶点色量化基准(12~16 色,见 8.4)
│ ├── recipes.json # 各通道参数配方
│ └── budgets.json # 成本闸门阈值
├── prompts/
│ ├── style_prefix.txt # L1
│ ├── view_setting.txt # L3-a
│ ├── view_orthographic.txt # L3-b
│ ├── technical.txt # L4
│ ├── negative.txt # L5
│ └── entries/ # 各资产的 L2 描述
├── data/
│ ├── ledger.db # SQLite 台账
│ └── cache/ # 按 hash 缓存,防重复消耗
├── input/
│ └── assets.csv # 名称 / 类型 / 描述
├── work/
│ ├── 01_concept/ # 设定图候选
│ ├── 02_final/ # 定稿
│ ├── 03_views/ # 三视图
│ └── 04_handoff/ # 交接包(提示词 + 图片)
├── inbox/ # ← 人工投放,监视触发
├── export/
│ └── unity_fbx/ # 最终交付
└── forge.py # CLI 入口
9.2 模块职责
| 模块 | 职责 | 关键设计 |
|---|---|---|
prompt_builder | 五层模板拼接 | 模板带版本号,写入台账 |
seedream_client | 2D 生成 | 通过 MCP 调用;重试 + 记账 |
handoff_pack | 交接包产出 | 提示词 txt + 三视图 + README,人工可直接用 |
inbox_watcher | 目录监视 | 文件投放的唯一入口 |
ledger | SQLite 台账 | 全参数、成本、状态 |
gate | 人工闸门 | G1 / G2 通过目录标记或 CLI 确认 |
blender_runner | 调用规整脚本 | subprocess 包装;默认带 --bake-vertex-color --strip-textures(B 路线) |
cost_guard | 预算闸门 | 累计超阈值即停 |
9.3 状态机与幂等
DRAFT → CONCEPT_GENERATING → G1_PENDING → CONCEPT_APPROVED
→ VIEWS_READY → HANDOFF_PACKED
→ [人工网页] → INBOX_INGESTED
→ PREPPING → G2_PENDING → DONE
幂等三原则
- 提交前先查台账:同
(prompt_hash, recipe_hash)已生成过则复用,不重复消耗 - 交接包可重复产出:人工随时可重新拿提示词与图片,不触发任何计费
- 断点续跑:任何阶段中断,从台账
status恢复
9.4 CLI 设计
forge.py concept --asset "山门" --desc "中式门派山门……" --role building --n 4
forge.py approve --asset "山门" --pick 2 # G1 选图
forge.py views --asset "山门" # 生成三视图
forge.py handoff --asset "山门" # 产出交接包
forge.py ingest --watch inbox # 监视人工投放
forge.py prep --all --preset clash-style # 批量规整
forge.py ledger --report cost # 成本报表
第十章 成本模型
10.1 2D 成本(全自动段)
| 项目 | 单价 | 数量 | 小计 |
|---|---|---|---|
| 抽卡 R1~R3 | ¥0.20/张 | 12 张 | ¥2.40 |
| 定稿 | ¥0.20/张 | 1 张 | ¥0.20 |
| 单资产 | ¥2.60 | ||
| 首期 60 资产 | ¥156 |
10.2 3D 成本(人工网页段)
方案对比
| 方案 | 年费 | 年输出 | 可用模型单价 |
|---|---|---|---|
| Creator 年付 | $288 ≈ ¥2074 | 720 个 | ¥2.88 |
| Business 年付 | $1152 ≈ ¥8294 | 4992 个 | ¥1.66 |
| Free | ¥0 | 仅 10 个私有资产 | 不可用于量产 |
| 直购 credit | 按需 | —— | ¥5.40(贵 87%) |
推荐 Creator 年付:3D 不接入系统,Business 的 API 权益用不上;60 模型/月足以覆盖首期与迭代。
10.3 首期投入测算(60 资产)
| 项目 | 金额 | 说明 |
|---|---|---|
| Hyper3D Creator 年付 | ¥2074 | 一年订阅 |
| 豆包 2D 生成 | ¥156 | 60 资产 × ¥2.6 |
| Blender 规整 | ¥0 | 本地 |
| Poly Pizza 素材 | ¥0 | 免费 |
| 合计 | ≈¥2230 | 其中订阅占 93% |
第二年起:若已有订阅,仅需续费 ¥2074;2D 成本按新增资产线性增长(¥2.6/资产)。
10.4 成本结论
订阅费是主要支出,2D 生成成本可忽略。 因此优化重点不是省 2D 的钱,而是提高订阅额度的利用率——即利用"抽卡免费"机制,在确认前充分试错,把每个 credit 都用在确定的成品上。
这与"抽卡免费"的机制相辅相成:抽得越多,摊到每个可用模型上的订阅成本越低。
第十一章 执行计划
11.1 分期推进
| 阶段 | 目标 | 关键动作 | 产出 |
|---|---|---|---|
| P0 准备 | 环境就绪 | 装 Blender 5.2.2 LTS;配置 seedream-mcp;订阅 Hyper3D Creator;跑验证清单 | 可用的环境 |
| P1 风格基准 | 定死风格 | 定 12~16 色色板 + 色板→顶点色的量化映射规则;选 3 张风格锚图;写 L1/L3/L4/L5 模板 | palette.json + 模板文件 |
| P2 单资产打通 | 验证管线 | 用「香炉」这类简单件跑完 2D → 交接包 → 网页 3D → inbox → FBX | 1 个 Unity 可用资产 |
| P3 角色打通 | 验证 TAPose | 用「掌门」跑完流程,重点验证 TAPose 与绑骨可行性 | 1 个可绑骨角色 |
| P4 规整验证 | 验证脚本 | 用 3~5 个资产验证 blender_unity_prep.py 实机运行,重点验证顶点色烘焙与 Unity 合批(B 路线成败判据) | 规整后的 FBX |
| P5 工具成型 | 补自动化 | 实现台账、inbox 监视、成本闸门、CLI | forge.py |
| P6 批量投产 | 上量 | 按资产台账推进,Poly Pizza 并行补齐 | 完整资产库 |
11.2 上线前验证清单
| # | 验证项 | Method | 判定 |
|---|---|---|---|
| 1 | 网页版免费抽卡 | 生成一个模型但不点确认,看 credit 是否变化 | 未扣 → 免费抽卡成立(最关键) |
| 2 | seedream-mcp 可加载 | 配置后确认工具出现在列表 | 出现 → 配置成功 |
| 3 | 豆包 seed 支持性 | 请求体加 seed: 42,连发两次 | 结果相同 → 支持 |
| 4 | 生成图落盘位置 | 检查 SEEDREAM_OUTPUT_DIR | 图片落在预期目录 |
| 5 | Redos 机制 | 对同一资产重做几何,观察 credit 变化 | 明确是否扣费 |
| 6 | Creator 含的 Seedream 额度 | 订阅后查看额度详情 | 明确可省多少 2D 成本 |
| 7 | Blender 实机运行 | 拿 1 个 GLB 跑脚本 | 无报错,FBX 正常 |
| 8 | BlenderMCP 可连通 | uvx mcp-for-blender + Blender 侧栏启动 | 端口连通 |
| 9 | 顶点色烘焙链路 | 1 个 GLB 跑 --bake-vertex-color --palette,在 Blender 里查 Color Attribute | 颜色落进顶点色且贴合色板 |
| 10 | Unity 顶点色 + 合批 | 导入 3 个建筑,Frame Debugger 看 Draw Call | 顶点色显示正确,且 Draw Call 未随资产数线性增长 |
11.3 关键风险
| 风险 | 影响 | 应对 |
|---|---|---|
| 风格不统一 | 最致命(COC 观感靠统一调色板) | 色板 + flat shading + 顶点色量化三道闸;参考图锚定而非纯文字提示词 |
| 顶点色合批不成立 | B 路线唯一优势消失(退化为"更麻烦的 A") | P4 阶段用 Frame Debugger 实测;先做 1 个建筑验链路;确保 shader 读顶点色 + 全局共享 1 个材质 |
| 3D 环节人工瓶颈 | 无法无人值守 | 交接包降低人工操作复杂度;集中批量操作而非逐个 |
| AI 模型面数超预算 | 需减面 | 网页端就选低面数档;Blender 减面量已降到 1.5~10 倍,不破坏外形 |
| 角色绑骨(TAPose 质量) | 影响动画制作 | P3 阶段专门验证 |
| Hyper3D 计费规则变动 | 成本模型失效 | 文件接口设计使系统对 3D 通道无依赖,可随时换腾讯云 |
附录 A · 核心参数速查
豆包 Seedream 5.0 Flash(2D · 2026-09-28 起为默认) POST https://ark.cn-beijing.volces.com/api/v3/images/generations · 模型 doubao-seedream-5-0-flash-260915 单价见 asset-forge/backend/.env 的 ARK_PRICE_PER_IMAGE · 输入图首张免费 · 失败不计费 · 参考图 ≤10 张 · 限流 500 张/分钟 🔴 不支持 sequential_image_generation(连 "disabled" 都回 400)⇒ 抽卡改走「N 路并发单图」 🔴 不支持 size="4K" ⇒ 预设只认 1K / 1.5K / 2K,或显式 宽x高(总像素 921,600~4,624,220) 实测(同区域同提示词):4 张候选墙钟 14.3s(旧 4.0 组图 93.7s)· 单图 2K 11~15s · 1024x1024 原样出图 (旧值:doubao-seedream-4-0-250828 · ¥0.20/张 · 支持组图;seed 支持性仍未验,5.0 亦未验)
Hyper3D 网页版(3D) https://hyper3d.ai · 确认前免费生成 · 订阅制 Creator $288/年(60 模型/月)· Business $1152/年(416 模型/月) 1 credit = 2 模型(0.5 credit/模型) 角色必开 TAPose;geometry_instruct_mode 建议 faithful 材质(路线 B):material=Shaded + texture_delight=true 取色 → Blender 转顶点色 material 四值:PBR(完整PBR贴图)/ Shaded(烘焙光+无PBR解析)/ All / None(仅几何、无颜色,勿用)
四个必须注意的坑
| 坑 | 后果 | 规避 |
|---|---|---|
| MCP 客户端不继承 PATH | spawn ENOENT | 配置里写绝对路径 |
| 三视图带透视 | 3D 把透视变形学成真实形状 | 强制正交投影 |
| FBX 100 倍缩放 | 绑骨 / 代码驱动 transform 时爆出隐藏的 100 | 导出用 FBX_SCALE_ALL,Unity Scale Factor=1 + Convert Units |
material=None 取色 | 模型无任何颜色,色板量化失去输入 | 取色一律用 Shaded(见 8.4) |
附录 B · 与既有文件的关系
| 既有文件 | 关系 |
|---|---|
blender_unity_prep.py | 本方案第六章的规整引擎,直接调用;需扩展 --palette / --bake-vertex-color / --strip-textures(路线 B,见 8.4)。既有 merge_materials_by_color() 的取色逻辑可复用 |
Unity资产生产方案-Sect Management.md | 本方案第一章、第七章、第八章的详细展开(资产台账、路线决策、成本测算原始数据) |
素材生成工具-实现方案.md | 本方案第三、四、五、九章的 v1/v2 版本(含 Hyper3D 三通道横向对比、MCP 参数规格等详查记录) |
| 本文件 | 主方案(整合版),供评审与实施参照 |
核心判断:整套体系的形态是「2D 全自动接入 + 3D 人工网页订阅 + 文件为接口」。这个形态的价值不在"自动化程度",而在用人工换取免费抽卡能力——网页版"确认前免费生成"的机制,使每个可用模型的成本降到 API 路径的 1/5;而"不接入系统"的克制,则让整个体系对 3D 生成工具的变更完全免疫。