BEFORE YOU BUILD
不用一次做对,随时可以接着做。
准备一台电脑、鼠标和 Blockbench ↗。本课使用 Generic Model(通用 / 自由模型),不需要先安装 Minecraft,也不需要写代码。第一次做可以分两次完成:先建模,再做动画。
下载本课练习包 · 24 KB ↓01-shell外壳完成 · 第 2 步后02-carved-face笑脸完成 · 第 3 步后03-textured-structure纹理 / 分组 / 枢轴就绪 · 第 6 步后04-finished-animated全部完成 · 含两段动画
包内是 4 个 .bbmodel 与 PNG 纹理,均可独立打开。下面 8 张“实机操作”图来自本机中文版 Blockbench:打开本课检查点,展示对应阶段的工具面板、模型和动画时间线。检查点已内嵌纹理,因此早期工程也带颜色;结构示意图另行标注。点击软件截图可查看原图,手机上也能放大看参数。
打开你的工作台
先让一个方块出现在工作台上。
- 打开 Blockbench,新建 Generic Model。项目名填
pumpkin_lantern,纹理尺寸设为 64 × 64,使用逐面 UV(不要启用 Box UV)。界面语言不同,可以对照括号里的英文。 - 添加一个立方体(Add Cube)。选中它,找到 Position(位置)、Size(尺寸)、Rotation(旋转)三个字段。后面的表格都按 X / Y / Z 顺序填写。
- 用鼠标拖动视角、滚轮缩放。将工程保存为
my-pumpkin.bbmodel;之后每完成一小步,就保存一次。
- 格式选“通用模型”;截图里的文件名是 pumpkin_lantern。
- 默认 UV 模式用“逐面 UV”,宽、高均为 64,确认后再添加立方体。
先搭空心外壳
不是先造实心盒子,而是像搭积木一样围出空间。
把刚才的立方体改名为 left_wall,再添加 3 个立方体。分别填入下表,放进名为 Shell 的分组。我们先做左右两面墙、背板和底板;前面留给表情,顶部留给盖子。
- 右下“大纲”里选 left_wall;蓝色轮廓告诉你正在编辑哪一块。
- 右上“位置”和“尺寸”与下表对应。中间只围出墙和底板,前面、顶部仍是空的。

| 部件名称 | Position · X / Y / Z | Size · X / Y / Z |
|---|---|---|
| left_wall | 0 / 0 / 1.5 | 1.5 / 14 / 14.5 |
| right_wall | 14.5 / 0 / 1.5 | 1.5 / 14 / 14.5 |
| back_wall | 1.5 / 0 / 14.5 | 13 / 14 / 1.5 |
| base | 1.5 / 0 / 1.5 | 13 / 1.5 / 13 |
拼出一张镂空笑脸
留下橙色的部分,眼睛和嘴巴自然就空出来了。
这一步不需要“布尔挖洞”。把前脸想成 16 列 × 14 行的方格纸:橙色是保留的方块,深绿色是空洞。每一行里连续的橙色格,合成一条长方体。
- 右侧选中 carved_face_y3_x0:从 X=0、Y=3 开始,宽 4、高 1、厚 1.5。
- 中央的眼睛与嘴巴是真正的空隙;下面的方格图用来规划每一条的位置。

这一行在 X = 4 和 X = 11 留空,所以添加 3 条:Position 0 / 12 / 0 → Size 4 / 1 / 1.5Position 5 / 12 / 0 → Size 6 / 1 / 1.5Position 12 / 12 / 0 → Size 4 / 1 / 1.5
每条的高度都是 1,厚度都是 1.5。完成后全部放进 Shell。这张笑脸一共使用 30 条长方体;不用数格猜尺寸,完整表格在下面。
展开完整前脸尺寸表 · 30 条
| 部件名称 | Position · X / Y / Z | Size · X / Y / Z |
|---|---|---|
| carved_face_y0_x0 | 0 / 0 / 0 | 16 / 1 / 1.5 |
| carved_face_y1_x0 | 0 / 1 / 0 | 16 / 1 / 1.5 |
| carved_face_y2_x0 | 0 / 2 / 0 | 16 / 1 / 1.5 |
| carved_face_y3_x0 | 0 / 3 / 0 | 4 / 1 / 1.5 |
| carved_face_y3_x12 | 12 / 3 / 0 | 4 / 1 / 1.5 |
| carved_face_y4_x0 | 0 / 4 / 0 | 3 / 1 / 1.5 |
| carved_face_y4_x7 | 7 / 4 / 0 | 2 / 1 / 1.5 |
| carved_face_y4_x13 | 13 / 4 / 0 | 3 / 1 / 1.5 |
| carved_face_y5_x0 | 0 / 5 / 0 | 2 / 1 / 1.5 |
| carved_face_y5_x5 | 5 / 5 / 0 | 1 / 1 / 1.5 |
| carved_face_y5_x10 | 10 / 5 / 0 | 1 / 1 / 1.5 |
| carved_face_y5_x14 | 14 / 5 / 0 | 2 / 1 / 1.5 |
| carved_face_y6_x0 | 0 / 6 / 0 | 2 / 1 / 1.5 |
| carved_face_y6_x4 | 4 / 6 / 0 | 8 / 1 / 1.5 |
| carved_face_y6_x14 | 14 / 6 / 0 | 2 / 1 / 1.5 |
| carved_face_y7_x0 | 0 / 7 / 0 | 6 / 1 / 1.5 |
| carved_face_y7_x10 | 10 / 7 / 0 | 6 / 1 / 1.5 |
| carved_face_y8_x0 | 0 / 8 / 0 | 7 / 1 / 1.5 |
| carved_face_y8_x9 | 9 / 8 / 0 | 7 / 1 / 1.5 |
| carved_face_y9_x0 | 0 / 9 / 0 | 16 / 1 / 1.5 |
| carved_face_y10_x0 | 0 / 10 / 0 | 2 / 1 / 1.5 |
| carved_face_y10_x5 | 5 / 10 / 0 | 6 / 1 / 1.5 |
| carved_face_y10_x14 | 14 / 10 / 0 | 2 / 1 / 1.5 |
| carved_face_y11_x0 | 0 / 11 / 0 | 3 / 1 / 1.5 |
| carved_face_y11_x5 | 5 / 11 / 0 | 6 / 1 / 1.5 |
| carved_face_y11_x13 | 13 / 11 / 0 | 3 / 1 / 1.5 |
| carved_face_y12_x0 | 0 / 12 / 0 | 4 / 1 / 1.5 |
| carved_face_y12_x5 | 5 / 12 / 0 | 6 / 1 / 1.5 |
| carved_face_y12_x12 | 12 / 12 / 0 | 4 / 1 / 1.5 |
| carved_face_y13_x0 | 0 / 13 / 0 | 16 / 1 / 1.5 |
加上盖子与烛火
把一只空盒子,变成一盏有内部结构的灯。
添加一个 square_lid,位置 0 / 14 / 0,尺寸 16 / 2 / 16,放进 Lid 分组。瓜梗和小叶片放进 Stem;烛台、蜡烛和灯芯放进 Candle;3 小块火焰放进 Flame。
- 演示时点击大纲右侧的眼睛,暂时隐藏 Shell 和 Face_Glow;上方浮着的是仍然可见的盖子,不是零件错位。
- 选中 wax_body 可检查蜡身参数;右侧还能看到烛台、蜡滴、灯芯和 Flame 分组。看完后恢复可见。


暂时隐藏盖子,方便操作内部。最后加入 Face_Glow 分组和 warm_light_behind_cutouts 薄片,放在洞口后方。它让笑脸有暖色底,但不是游戏里的灯光代码。
展开盖子、瓜梗、烛火与暖光板的完整尺寸
| 部件名称 | Position · X / Y / Z | Size · X / Y / Z |
|---|---|---|
| square_lid | 0 / 14 / 0 | 16 / 2 / 16 |
| stem_base | 6.5 / 16 / 6.5 | 3 / 1 / 3 |
| stem_tip | 7 / 17 / 7 | 2 / 1.5 / 2 |
| leaf_base | 9 / 16.05 / 7 | 2 / 0.4 / 2 |
| leaf_tip | 11 / 16.05 / 7.5 | 1.5 / 0.3 / 1 |
| candle_tray | 5 / 1.5 / 5 | 6 / 0.5 / 6 |
| wax_body | 6.25 / 2 / 6.25 | 3.5 / 5.5 / 3.5 |
| wax_drip | 5.95 / 5.2 / 7.5 | 0.5 / 2.2 / 1 |
| wick | 7.7 / 7.5 / 7.7 | 0.6 / 0.6 / 0.6 |
| flame_base | 7.1 / 8 / 7.1 | 1.8 / 1.5 / 1.8 |
| flame_middle | 7.4 / 9.5 / 7.4 | 1.2 / 1.4 / 1.2 |
| flame_tip | 7.6 / 10.9 / 7.6 | 0.6 / 0.8 / 0.6 |
| warm_light_behind_cutouts | 1.5 / 2 / 2.6 | 13 / 11 / 0.15 |
用像素给它上色
模型决定形状,纹理负责让它像一颗南瓜。
- 在纹理(Textures)面板导入练习包里的
halloween-pumpkin-skin.png,尺寸是 64 × 64。切到 Paint,选 1 像素画笔,在橙色区域画深浅竖纹;先改一小片,观察模型上的变化。 - 切回 Edit,选中一个立方体,再在 UV 面板选中要贴图的面。为它指定表皮纹理,然后把 UV 框移动到对应色块。UV 就是“这张面到图片的哪里取颜色”。
- 火焰和暖光板使用第二张暖光纹理。手工制作时可先用包里的
halloween-pumpkin-glow-static.png,把 UV 铺满 16 × 16;无需先做贴图动画,也能继续做第 7 步的形变动画。

- Y 0–15:南瓜外壁的竖向纹理
- Y 16–31:顶盖的方形纹路
- Y 32–47:切边 / 瓜梗 / 蜡身 / 灯芯
- 右上切换“绘画模式”,左上显示 64×64 纹理画布,下面是两张纹理的列表。
- 顶栏可设置画笔大小,右侧选颜色。先另存自己的工程,再试画一小笔,对照中央模型检查位置。
展开 UV 对照:每个色块怎么对应到模型?
下表的坐标是纹理像素,不是模型位置。逐面 UV 使用左上角 (U, V) 与宽高。
| 用途 | 左上角 U / V | 宽 / 高 |
|---|---|---|
| 左右墙 / 背墙 | 16 / 0 或 32 / 0 | 16 / 16 |
| 顶盖所有面 | 0 / 16 | 16 / 16 |
| 底板 / 前脸切边 | 0 / 32 | 16 / 16 |
| 瓜梗与叶片 | 16 / 32 | 16 / 16 |
| 蜡身与蜡滴 | 32 / 32 | 16 / 16 |
| 烛台与灯芯 | 48 / 32 | 16 / 16 |
前脸朝向 North 的面要连续取样:起点为 U = Position X、V = 15 − Position Y,宽等于长条的 X 尺寸,高为 1。例如 Y = 12 的第一条,用 U = 0、V = 3、宽 4、高 1。其侧边、顶面和底面取深橙切边色块;背面可取橙色。
让盖子找到转轴
要像箱盖一样掀开,就先找到它的“合页”。
在大纲(Outliner)里按下面的层级整理分组。把子分组拖进父分组:Stem 必须在 Lid 里面,这样盖子动,瓜梗才会跟着动。火焰可以跟着蜡烛移动,但动画只操作 Flame。
Pumpkin ├─ Shell 外壳与笑脸 ├─ Lid 顶盖 │ └─ Stem 瓜梗与叶片 ├─ Candle 蜡烛与烛台 │ └─ Flame 火焰 └─ Face_Glow 暖光板
- 选中 Lid 分组(不是里面的立方体),在 Pivot Point 中输入 8 / 14 / 15。使用枢轴工具也可以移动这个点。
- Flame 枢轴设为 8 / 8 / 8,缩放时火焰会围绕底部附近变化。其他组的参考枢轴:Pumpkin 和 Shell、Face_Glow 用 8 / 8 / 8;Stem 用 8 / 16 / 8;Candle 用 8 / 1 / 8。
- 在 Edit 临时把 Lid 的 X 旋转改成 30°,检查它是否沿后缘掀开,瓜梗是否一起移动。看完后,把旋转恢复为 0 / 0 / 0,再开始动画。
- 右侧 Lid 高亮,Stem 缩进在它里面;盖子和瓜梗会作为整体运动。
- 右上看“枢轴点”这一行:8 / 14 / 15。截图仍隐藏外壳和暖光板,以便看清内部关系。
让火焰轻轻呼吸
不用让每块火焰单独动,改变整个 Flame 分组就够了。
- 进入 Animate,新建动画
pumpkin.flame_flicker,长度 2 秒,循环方式选 Loop(循环)。 - 选中 Flame 分组,把时间线移到 0 秒,在 Scale(缩放)轨道添加关键帧。按下表移动时间、添加帧并输入 X / Y / Z 缩放值。插值选择 Linear(线性)。
| 时间 / 秒 | Scale X | Scale Y | Scale Z |
|---|---|---|---|
| 0 | 1 | 1 | 1 |
| 0.25 | 0.88 | 1.18 | 0.94 |
| 0.5 | 1.08 | 0.8 | 1.05 |
| 0.85 | 0.93 | 1.1 | 1 |
| 1.25 | 1.12 | 0.88 | 1.04 |
| 1.65 | 0.94 | 1.14 | 0.94 |
| 2 | 1 | 1 | 1 |
再给 Flame 的 Rotation 轨道加 3 帧:0 秒 → 0 / 0 / −6°,1 秒 → 0 / 0 / 6°,2 秒 → 0 / 0 / −6°。它会轻轻左右摆动。最后,给 Lid 的 Rotation 在 0 秒和 2 秒各设一帧 0 / 0 / 0,让切回烛火动画时盖子回到合上的位置。
起点→中间帧
高矮 / 摆动→2 s
回到起点
- 左上选 flame_flicker,右侧选 Flame;底部“缩放”一行有 7 颗菱形关键帧。
- 蓝色菱形是正在编辑的 0.25 秒关键帧,左侧数值为 0.88 / 1.18 / 0.94;蓝色播放头仍在 0 秒。
- 为了看见烛火,演示时暂时隐藏 Shell、Lid 与 Face_Glow。拖动播放头预览,选中关键帧则编辑该帧数值。
掀开盖子,完成作品
最后一次小惊喜:让盖子自己打开。
- 新建第二段动画
pumpkin.open_lid,长度 1.2 秒,循环方式设为 Hold(保持最后一帧)。 - 选中 Lid 分组,在 Rotation 轨道添加下面 3 帧。只有 X 值变化,Y、Z 始终为 0。插值使用 Linear。
- 为了从烛火动画平稳切换,在这段动画中给 Flame 的 Scale 在 0 秒和 1.2 秒各加一帧 1 / 1 / 1。保存工程,再分别播放两段动画。
| 时间 / 秒 | Lid Rotation X / Y / Z | 你会看到 |
|---|---|---|
| 0 | 0° / 0° / 0° | 完全合上 |
| 0.25 | 12° / 0° / 0° | 先开一条缝 |
| 1.2 | 105° / 0° / 0° | 掀开并停留 |
- 先恢复所有分组可见,再选 open_lid 和 Lid;底部“旋转”轨道有 3 个关键帧。
- 把蓝色播放头拖到 1.2 秒,左侧末帧 X=105、Y=0、Z=0。中央盖子沿后缘打开,瓜梗一起转动。

YOU MADE IT
一盏灯,已经有了你的想法。
你做的不只是南瓜灯,而是走完了一次完整的 3D 创作:形状 → 纹理 → 分组 → 动画。先保存这个版本,再选一个小变化,把它变成你的作品。
- 换表情:把锯齿笑脸改成惊讶的圆嘴,保留真实空洞。
- 换气氛:试试紫色外皮与青色烛火,看看情绪怎么变。
- 换节奏:把开盖时间延长到 2 秒,做一盏慢慢苏醒的灯。
QUICK RESCUE
出了一点小问题?
盖子转起来像风车,不像掀盖子。
先停止动画,检查 Lid 分组的 Pivot Point 是否为 8 / 14 / 15,再检查关键帧是否在 X 旋转轨道。确认选中的是分组,而不是 square_lid 立方体。
瓜梗没跟着盖子移动。
Stem 应嵌套在 Lid 内,而不是与 Lid 并排。拖入后检查瓜梗、叶片都在 Stem 内。
模型变白、贴图错位或找不到纹理。
打开练习包内的检查点工程对照;它已经内嵌纹理。自己制作时,检查对应面是否分配了纹理、UV 是否落在正确色块,以及是否误开了 Box UV。表皮是 64 × 64,静态暖光是 16 × 16,不要混用。
为什么下载后不能直接放进 Minecraft?
.bbmodel 是可编辑工程,不是 MOD 安装包。Java 方块模型 JSON 不会自动播放这里的骨骼动画;进入游戏还需要为目标版本注册方块并接入合适的渲染与动画方案。下一阶段可到 MOD 开发栏目继续学习。
网页 3D 加载失败,还能学吗?
可以。全部步骤、结构图、尺寸表和练习工程不依赖 3D 预览。实时查看器需要 WebGL 与联网加载 Three.js;也可以下载 .bbmodel,在 Blockbench 本地打开查看。