做游戏最卡人的一环常常是 3D 模型:没有美术,买素材又贵又不合用。这篇教程给出一条几乎不花钱的流水线:道具、建筑、载具用代码在 Blender 里生成;角色和生物用图像转 3D 生成器出初始网格;之后的清理、绑骨、权重、动画和导出,全部在免费的 Blender 里完成,由 Agent 写脚本。
文中的价格和硬件数字取自教程素材的作者说明,生成器的价格和政策经常变,使用前请以官方页面为准。
学完你能做到
- 按物体类型选对路线:代码生成、本机显卡生成,还是付费 API。
- 让 Agent 用可测量的参考图在 Blender 里生成不漂浮、面数低的道具。
- 把生成器出的"一整块外壳"拆开,绑上骨骼,让衣服不再跟着手臂一起被拉扯。
- 用代码写动画片段,并用数字检查,而不是只靠眼睛。
- 导出成 Unity 或 Roblox 能直接用的文件,并避开常见的导入坑。
准备
- 安装免费的 Blender,以及 Claude Code。
- 所有提示词都在 Claude Code 终端里、同一个项目文件夹里运行。它会写 Python、无窗口地运行 Blender,并打开自己渲染的图。
- 告诉 Agent 你的 Blender 在哪里。比如在 Mac 上,路径一般是
/Applications/Blender.app/Contents/MacOS/Blender。把路径连同这一句写进CLAUDE.md:
运行 Blender 的方式:blender -b file.blend --python script.py
- 每一步都存成一个
.py文件,这样改动之后可以重跑。
几个会遇到的词
| 词 | 意思 |
|---|---|
| 网格(mesh) | 由三角形组成的 3D 形状;GLB、FBX 是保存它的文件格式 |
| 正交视图 | 没有透视的平视图,像蓝图 |
| UV 和贴图 | 包在网格上的图片;法线贴图用来"假装"出小细节 |
| 减面(decimate) | 减少三角形数量 |
| 骨架(armature、rig) | 骨骼;权重决定每块骨头带动每个顶点多少 |
| 静止姿势 | 骨架建立时的姿势;A 姿势是手臂向下约 45 度 |
| IK | 手或脚固定不动,手臂或腿弯曲去够它 |
第一部分:先选路线
原则很简单:能拿尺子量出来的,用代码;需要雕出来的,用生成器。
不按次收费的路线(仍需要你的 Claude 订阅)

图片来自 Hunyuan3D-2 官方仓库。
- Blender 里写 Python:枪、箱子、房子、整个街区、载具、家具。尺寸精确、面数低、零件能按数字改。Agent 不擅长照图片复制有机形状,用代码做角色,只会得到一个玩具机器人。
- 本机显卡:Hunyuan3D 2.0 能根据概念图生成形状和贴图,每个模型几分钟。官方给的显存要求是形状加贴图共 16 GB;有人用社区打包版在 8 GB 的笔记本显卡上跑,脸会更糊、手会和手里的东西粘在一起、面数上限约 4 万。它的许可证不适用于欧盟、英国和韩国,用之前先读许可证。
付费的最低价路线
- Tripo API:1 个点数约 0.01 美元。按素材的说法,多视图生成一个模型,纯几何约 20 到 30 点,贴图另加 10 到 30 点,带精细贴图总共大约 60 点,也就是 0.6 美元;失败和取消的任务不收费。
- 只为"生成"付钱。 Tripo 也卖重拓扑(10 到 40 点)和自动绑骨(25 点),但这两步在 Blender 里都能免费做。
第二部分:用纯代码做低面数道具

图片来自 mcp-for-blender 仓库,演示让 Agent 直接操作 Blender。
先弄一张能量的参考图
常见的问题是:AI 画的参考图带透视和阴影,各个视角还互相矛盾(侧视图里脚架是收起的,3D 视图里却是打开的)。Agent 能看图,但不能量图,所以只能猜坐标,零件就会漂在半空。
让图像工具出"为测量而画"的图:
画一件 [道具名称] 的设计图,要求:
- 只要正面、侧面和顶面三个正交视图,没有透视,没有阴影,白底
- 各视图之间的零件位置必须一致,比例相同
- 在每个视图里标出最长边的比例
只有一张拼图时,先让 Agent 把它切成独立视图。缺了哪个视图,就自己写出那个尺寸(比如"枪托宽 5 厘米")。
先写数字,再建几何
看这几张参考图,先不要建模。
列出一份尺寸表:每个零件的长、宽、高,零件之间的相对位置,单位用米,
哪些数值是从图上量出来的,哪些是你估计的。
我确认之后你再开始。
自己检查这张表:错一个数字只要改一行,建完模再发现就要重做。
规则写进 CLAUDE.md,一次一个零件
不变的规则放进 CLAUDE.md,别在每次提示里重复:
然后一个提示一个零件,每个零件开新会话:
读取 dimensions.json 和 CLAUDE.md。
只建"枪管"这一个零件,脚本存成 parts/barrel.py。
建完渲染前视图和侧视图(768 像素),和参考图对比,指出偏差。
原因是:一次让 Agent 做整个道具,每次修改都会重渲所有东西,渲染图堆在上下文里,会话很快触顶。简单的零件(桶、盒子、木板)可以用便宜的模型,轮廓和接缝复杂的才用强的。
检查装配,再导出
把 parts/ 下的所有零件装配成一个道具。
检查:零件之间有没有缝隙或穿插,整体尺寸是否符合 dimensions.json,
三角形总数是多少,有没有朝向不一致的法线。
没问题再导出为 GLB。
建筑和整条街,不要一个个做,让 Agent 写一个生成器脚本,输入几个参数就出一批。不要把建筑和街道道具交给图像转 3D 的生成器:它们出的底面往往接近正方形,一辆公交或一段围栏拉到真实长度就会变得扁平,贴图也会很脏。
第三部分:用生成器做角色
给生成器画概念图
- 角色手里不要拿东西。 手里的东西会和手融在一起,之后切不开。道具单独画一张图。
- 图像工具经常把左视图画成右视图的镜像,导致背带或武器跳到另一侧。只交真正的视图。
把每个视图放进正确的槽位
让 Agent 把概念图切成 view_front.png、view_right.png、view_back.png,每个视图一个文件、高度一致。
Tripo 的多视图接口最多接受 4 张图,按正面、左、背、右放;正面必填,最少 2 张。一定要把每张图放到它所显示的那一侧的槽位里,否则侧视图放错,会让角色后脑勺多出一张脸。
调用前要先申请 API Key,放进环境变量,再让 Agent 照官方文档写一个小客户端:上传图片、发起多视图任务、轮询、下载 GLB。
读 Tripo 的 API 文档,写一个 Python 客户端:
上传 view_front.png、view_right.png、view_back.png,发起多视图任务,
轮询到完成后下载 GLB 到 out/。
API Key 只从环境变量读取,不要写进文件,也不要打印出来。
想省钱的两个办法:发送前先检查视图(视图错了,重做要再付钱);背景角色不要贴图,进引擎后刷成纯色。
清理网格,再谈骨骼
预算参考:Roblox 单个网格上限 2 万三角形;Unity 主角 4 万到 7 万;人群里的小角色 3000。Tripo 的 GLB 默认朝向 +X。
打开 out/character.glb,做清理:
1. 合并重复顶点(必须在设置权重之前,否则接缝处的顶点权重不一样,动起来会裂开)
2. 把朝向转成 Blender 的 -Y 前方,应用变换
3. 删除零长度法线的面,修掉黑三角和白圆片
4. 统一缩放到 1.8 米高
5. 另存一份只有 3000 个三角形的"人群版"
人群版要单独做:几百个 4 万面的模型同时出现,帧率会掉得很厉害。
第四部分:绑骨,别让衣服被拉长
生成器给你的是融在一起的一整块壳:外套焊在腿上,袖子焊在手上。自动权重分不清衣服和身体,所以举起手臂时,外套和胸口都会被拉起来。接下来几步就是为了解决这个问题。
拆成部件
把角色网格按部位拆成多个部件:头、躯干、外套、袖子、手、腿、靴子、围巾等。
同时用"位置"和"颜色"来判断,不要只看颜色:
一块深色的外套如果被标成围巾,会跟着围巾动,背上就会出现一个洞。
输出每个部件的顶点数,渲染一张按部件着色的图让我检查。
从网格上读关节
把角色渲染成正面和侧面的正交图,叠上网格,
在图上标出这些关节点:髋、脊柱、颈、肩、肘、腕、膝、踝。
先把标注图给我看,我确认后再建骨骼。
骨骼命名使用 Mixamo 风格(Hips、Spine、LeftArm……)。
骨骼建之前先检查这些点:肩关节高了 3 厘米,整个袖子都会被拉长。用 Mixamo 命名,Unity 的 Humanoid 导入器会自动映射骨骼。动物走同样的步骤,只是关节换成脊柱、尾巴、四条腿,按 Generic 导入。
用规则设权重
按部件设置权重:
- 躯干和外套只绑躯干相关的骨骼,不要绑手臂骨骼
- 袖子绑上臂和前臂
- 部件之间的边界不做平滑,平滑只在肩、肘、膝附近、且在同一个部件内部做
如果自动权重在有洞的生成网格上失败,就先给它做一个体素重网格的副本,绑到副本上,再把权重传回真正的网格。
不要在两个部件之间平滑权重。 平滑会把手的骨骼漏进外套,从外套上拉出一根尖刺。
按素材的测试,这套规则让手臂举高 90 度时,最长被拉伸的边从 40 倍降到 16 倍。要注意,规则让衣服能跟着手臂走,但也让头部转动和迈步变差了:领子权重在胸口,却碰到了头;髋部的权重沿着大腿往下走。所以下一步的测试和逐点修复不能省。
摆姿势测试,量撕裂
给角色摆这几组测试姿势:双臂抬高 90 度、头左转 60 度、右腿抬起 45 度。
每组姿势下,计算所有边的拉伸倍数,列出最长的 10 条边和它们的位置,
渲染前视图和侧视图。
输出一份报告,告诉我哪里在撕裂。
肩部转动的幅度要保持在静止姿势附近:生成的网格腋下没有多余的几何,转大了上臂就会裂开。
第五部分:动画片段和引擎
在同一个静止姿势上写动画
在这个骨架上写一个 8 帧循环的行走动画,30 帧每秒。
脚落地的帧要平稳,不滑步。写成 Python 脚本 clips/walk.py,参数可调。
战斗动作用同一个套路。动画要写在它将要播放的那个骨架上。 从静止姿势不同的骨架复制过来的动画,腿会坏掉。
用数字检查每个片段
检查 walk 片段:
- 循环的第一帧和最后一帧是否一致
- 脚在接触帧的高度是否为 0
- 关节的最大旋转速度是否超出合理范围
- 有没有任何骨骼翻转(欧拉角突变)
输出一张表。
看起来不对的姿势,还是需要你自己看一眼。
导出
对带骨骼的网格,不要勾选"应用变换",Blender 自己的文档把这个选项标成与骨架配合时有问题;清理阶段已经应用过变换。
Unity:
- 两只手、两条腿、一个头的角色用 Humanoid;动物用 Generic,并自己命名根骨骼。
- 在导入设置里勾选 Loop Time,FBX 不会带这个属性。
Roblox:
- 选"文件 → 导入 3D",骨架类型选自定义。
- 如果有辅助骨骼(比如武器插槽),保持"零影响骨骼"开启,默认是关的。
- 骨骼缩放为 1、旋转为 0,根骨骼在原点,根骨骼上不能有蒙皮权重,每个顶点最多 4 根骨骼。
- 贴图用 1024 像素最稳,法线贴图用 OpenGL 格式。
- 在文件里放一个小的探针立方体,导入后量一下:导入器可能会改变整个文件的缩放。
出问题时怎么查
| 现象 | 多半的原因 |
|---|---|
| 道具零件漂浮 | 参考图带透视,回到"能量的参考图" |
| 一个道具把会话额度用光 | 一次一个零件,渲染用 768 像素 |
| 后脑勺多了一张脸 | 某个视图放错槽位 |
| 多出一条尾巴或肢体 | 生成器只看到了正面,补上背面图 |
| 道具融进了手里 | 概念图里手里有东西 |
| 衣服跟着手臂被拉长 | 躯干和外套绑到了手臂骨骼 |
| 外套上冒出尖刺 | 在不同部件之间平滑了权重 |
| 转头或迈步时头、髋撕裂 | 刚性部件在接缝处碰到了别的骨骼的权重 |
| 动画里膝盖扭曲 | 动画来自另一个静止姿势 |
| 靴子朝后 | 绑骨前先把脚绕小腿转 180 度 |
| 出现白圆片或黑三角 | 有零长度法线的面 |
| 细电线、文字、标志不见了 | 生成器会丢,这些部件用代码做 |


评论(0)
还没有评论,来说第一句。