LESSON05

BLOCKBENCH 3D
谁动,谁不动?

六根枪管,
一条旋转轴。

美式加特林风格,
从环形排列到循环动画。

先别让整件作品转起来。让枪身站稳,只把前面的六根枪管交给同一个分组。再给它一笔黄色:当标记绕完一圈,你就看懂了枢轴与循环。

  • 入门进阶
  • 建议 90–120 分钟
  • 65 个方块
  • 2 段旋转动画
实时 3D 作品

正在加载带纹理模型…

拖动旋转 · 滚轮缩放
先关闭视角自动旋转,看看谁在动。枪管旋转 / 慢速观察。两段都是游戏展示动画,不含射击或装填动作。
本次目标把 65 个方块分成动与静,让六管绕同一轴连续旋转。练习包与准备 ↓

BEFORE YOU BUILD

这堂课,学的是“成组运动”。

用现代美式六管加特林的辨识轮廓,做一件 Minecraft 风格游戏外观模型。所有参数都是任意建模单位;不对应现实尺寸,也不制作内部机构。枪管用实心方块,深色端面只是像素造型。

准备 Blockbench 5.x,选择 Generic Model / 通用模型。第一次使用可先做南瓜灯入门课。

下载 5 个阶段工程 · 35 KB ↓
  • 01-body-shell.bbmodel13 部件 · 3 分组 · 0 动画
  • 02-six-barrels.bbmodel54 部件 · 4 分组 · 0 动画
  • 03-textured-details.bbmodel65 部件 · 5 分组 · 0 动画
  • 04-rotating-barrels.bbmodel65 部件 · 5 分组 · 1 动画
  • 05-finished-two-speeds.bbmodel65 部件 · 5 分组 · 2 动画

阶段工程预嵌纹理方便观察。软件截图是在本机中文版 Blockbench 打开相应阶段拍摄的,不是从空白工程连续录屏;结构示意图另行标注。请先另存自己的练习副本。

STEP1

新建工程,确定一条轴

先决定哪边是前,再决定绕哪里转。

  1. 新建 Generic Model,命名 my_gatling_prop,纹理设为 64 × 64,使用逐面 UV,先保存 .bbmodel。
  2. 前端朝 +X,Y 表示高度,Z 表示厚度。建立最外层 Display,Pivot 设为 0 / 10 / 0。
  3. Display 下先建 Body 与 Handles。打开阶段 01 可以对照主轮廓:一共 13 个方块、3 个分组。
X → 枪管长轴Y ↑ 高度Z ↔ 厚度
本机 Blockbench · 中文界面查看原图 ↗
本机 Blockbench 打开的加特林主体阶段
实机 01先看不动的部分
  • 中央看轮廓,右侧大纲看 Body 与 Handles。
  • 先保存自己的副本,再开始调整。
STEP2

先搭不动的主体

先用大块把体积交代清楚。

  1. Body 中建立 body_main,Position −13 / 6 / −4,Size 11 / 8 / 8,Rotation 为 0 / 0 / 0。
  2. 用顶部、底部、后盖与两侧贴片分出层次。Position 是方块起点,不是中心;部件 Pivot 按参数表保留。
  3. Handles 中添加两根上方立柱、一块提把和两个后部握把轮廓。它们与主体一起静止,不放进 Rotor。
本机 Blockbench · 中文界面查看原图 ↗
本机 Blockbench 选中 body_main 的虚拟参数
实机 02一块方块,先核对位置和尺寸
  • 右侧显示当前方块的位置、尺寸和枢轴。
  • Body 与 Handles 不添加旋转关键帧。
加特林模型的灰绿色主体与提把轮廓
结构图 01 / 13 个方块,先把静止部分搭稳。
13 个主体与提把部件参数
部件 / 分组PositionSizeRotation °PivotUV
body_main
Body
-13 / 6 / -411 / 8 / 80 / 0 / 0-7.5 / 10 / 00 / 0 / 16 / 16
body_top
Body
-12 / 14 / -39 / 1.2 / 60 / 0 / 0-7.5 / 14.6 / 016 / 0 / 32 / 16
body_bottom
Body
-12 / 4.8 / -39 / 1.2 / 60 / 0 / 0-7.5 / 5.4 / 032 / 0 / 48 / 16
back_cap
Body
-14.5 / 6.5 / -3.51.5 / 7 / 70 / 0 / 0-13.75 / 10 / 00 / 16 / 16 / 32
side_near
Body
-11 / 7 / 47 / 5 / 0.80 / 0 / 0-7.5 / 9.5 / 4.416 / 0 / 32 / 16
side_far
Body
-11 / 7 / -4.87 / 5 / 0.80 / 0 / 0-7.5 / 9.5 / -4.416 / 0 / 32 / 16
front_collar
Body
-2 / 5 / -52 / 10 / 100 / 0 / 0-1 / 10 / 00 / 16 / 16 / 32
mount_shape
Body
-8 / 2.8 / -23 / 2 / 40 / 0 / 0-6.5 / 3.8 / 032 / 0 / 48 / 16
top_post_back
Handles
-11 / 15 / -0.81.2 / 3.5 / 1.60 / 0 / 0-10.4 / 16.75 / 00 / 16 / 16 / 32
top_post_front
Handles
-4 / 15 / -0.81.2 / 3.5 / 1.60 / 0 / 0-3.4 / 16.75 / 00 / 16 / 16 / 32
top_grip
Handles
-11 / 18.5 / -18.2 / 1.6 / 20 / 0 / 0-6.9 / 19.3 / 032 / 16 / 48 / 32
rear_grip_near
Handles
-16 / 7 / 21.5 / 6 / 1.50 / 0 / 0-15.25 / 10 / 2.7532 / 16 / 48 / 32
rear_grip_far
Handles
-16 / 7 / -3.51.5 / 6 / 1.50 / 0 / 0-15.25 / 10 / -2.7532 / 16 / 48 / 32
STEP3

六根枪管,围成一圈

复制六次之前,先找准六个位置。

在 Display 下建立 Rotor。六根长方体的长度都沿 X:Size 为 23 / 1.5 / 1.5。它们围绕 Y=10、Z=0 排列,中心距为 3.2 个虚拟建模单位。下表给的是中心;填 Position 时,Y、Z 各减 0.75,X 填 0。

部件中心 Y中心 Z
barrel_113.20
barrel_211.62.771
barrel_38.42.771
barrel_46.80
barrel_58.4-2.771
barrel_611.6-2.771

例如 barrel_1 的 Position 为 0 / 12.45 / −0.75。端部小方块、深色端面和亮条也跟随各自枪管排列。两圈装饰框各有 8 块,单块 X 旋转按 0°、45°…315° 设置;这里是外观装饰,不是现实机构。

本机 Blockbench · 中文界面查看原图 ↗
本机 Blockbench 中带六管组的加特林阶段
实机 03六根长块,留出清楚的间隔
  • 阶段 02 共 54 个部件,新增 41 个 Rotor 部件。
  • 绕端面观察,六根枪管之间要有间隔。
灰绿色外壳前方的六管与两圈装饰框
结构图 02 / 同一长度,不同中心,组成环形节奏。
Rotor 全部 41 个部件的参数与 UV
部件 / 分组PositionSizeRotation °PivotUV
rotor_core
Rotor
0 / 9.4 / -0.623 / 1.2 / 1.20 / 0 / 011.5 / 10 / 032 / 0 / 48 / 16
barrel_1
Rotor
0 / 12.45 / -0.7523 / 1.5 / 1.50 / 0 / 011.5 / 13.2 / 016 / 16 / 32 / 32
barrel_tip_1
Rotor
21 / 12.25 / -0.952.1 / 1.9 / 1.90 / 0 / 022.05 / 13.2 / 00 / 16 / 16 / 32
barrel_cap_1
Rotor
23.11 / 12.65 / -0.550.08 / 1.1 / 1.10 / 0 / 023.15 / 13.2 / 032 / 16 / 48 / 32
barrel_marker_1
Rotor
3 / 13.96 / -0.1817 / 0.1 / 0.360 / 0 / 011.5 / 14.01 / 016 / 32 / 32 / 48
barrel_2
Rotor
0 / 10.85 / 2.02123 / 1.5 / 1.50 / 0 / 011.5 / 11.6 / 2.77116 / 16 / 32 / 32
barrel_tip_2
Rotor
21 / 10.65 / 1.8212.1 / 1.9 / 1.90 / 0 / 022.05 / 11.6 / 2.7710 / 16 / 16 / 32
barrel_cap_2
Rotor
23.11 / 11.05 / 2.2210.08 / 1.1 / 1.10 / 0 / 023.15 / 11.6 / 2.77132 / 16 / 48 / 32
barrel_marker_2
Rotor
3 / 12.36 / 2.59117 / 0.1 / 0.360 / 0 / 011.5 / 12.41 / 2.77148 / 16 / 64 / 32
barrel_3
Rotor
0 / 7.65 / 2.02123 / 1.5 / 1.50 / 0 / 011.5 / 8.4 / 2.77116 / 16 / 32 / 32
barrel_tip_3
Rotor
21 / 7.45 / 1.8212.1 / 1.9 / 1.90 / 0 / 022.05 / 8.4 / 2.7710 / 16 / 16 / 32
barrel_cap_3
Rotor
23.11 / 7.85 / 2.2210.08 / 1.1 / 1.10 / 0 / 023.15 / 8.4 / 2.77132 / 16 / 48 / 32
barrel_marker_3
Rotor
3 / 9.16 / 2.59117 / 0.1 / 0.360 / 0 / 011.5 / 9.21 / 2.77148 / 16 / 64 / 32
barrel_4
Rotor
0 / 6.05 / -0.7523 / 1.5 / 1.50 / 0 / 011.5 / 6.8 / 016 / 16 / 32 / 32
barrel_tip_4
Rotor
21 / 5.85 / -0.952.1 / 1.9 / 1.90 / 0 / 022.05 / 6.8 / 00 / 16 / 16 / 32
barrel_cap_4
Rotor
23.11 / 6.25 / -0.550.08 / 1.1 / 1.10 / 0 / 023.15 / 6.8 / 032 / 16 / 48 / 32
barrel_marker_4
Rotor
3 / 7.56 / -0.1817 / 0.1 / 0.360 / 0 / 011.5 / 7.61 / 048 / 16 / 64 / 32
barrel_5
Rotor
0 / 7.65 / -3.52123 / 1.5 / 1.50 / 0 / 011.5 / 8.4 / -2.77116 / 16 / 32 / 32
barrel_tip_5
Rotor
21 / 7.45 / -3.7212.1 / 1.9 / 1.90 / 0 / 022.05 / 8.4 / -2.7710 / 16 / 16 / 32
barrel_cap_5
Rotor
23.11 / 7.85 / -3.3210.08 / 1.1 / 1.10 / 0 / 023.15 / 8.4 / -2.77132 / 16 / 48 / 32
barrel_marker_5
Rotor
3 / 9.16 / -2.95117 / 0.1 / 0.360 / 0 / 011.5 / 9.21 / -2.77148 / 16 / 64 / 32
barrel_6
Rotor
0 / 10.85 / -3.52123 / 1.5 / 1.50 / 0 / 011.5 / 11.6 / -2.77116 / 16 / 32 / 32
barrel_tip_6
Rotor
21 / 10.65 / -3.7212.1 / 1.9 / 1.90 / 0 / 022.05 / 11.6 / -2.7710 / 16 / 16 / 32
barrel_cap_6
Rotor
23.11 / 11.05 / -3.3210.08 / 1.1 / 1.10 / 0 / 023.15 / 11.6 / -2.77132 / 16 / 48 / 32
barrel_marker_6
Rotor
3 / 12.36 / -2.95117 / 0.1 / 0.360 / 0 / 011.5 / 12.41 / -2.77148 / 16 / 64 / 32
band_rear_1
Rotor
1 / 13.8 / -1.82 / 1 / 3.60 / 0 / 02 / 14.3 / 00 / 16 / 16 / 32
band_rear_2
Rotor
1 / 12.541 / 1.2412 / 1 / 3.645 / 0 / 02 / 13.041 / 3.0410 / 16 / 16 / 32
band_rear_3
Rotor
1 / 9.5 / 2.52 / 1 / 3.690 / 0 / 02 / 10 / 4.30 / 16 / 16 / 32
band_rear_4
Rotor
1 / 6.459 / 1.2412 / 1 / 3.6135 / 0 / 02 / 6.959 / 3.0410 / 16 / 16 / 32
band_rear_5
Rotor
1 / 5.2 / -1.82 / 1 / 3.6180 / 0 / 02 / 5.7 / 00 / 16 / 16 / 32
band_rear_6
Rotor
1 / 6.459 / -4.8412 / 1 / 3.6225 / 0 / 02 / 6.959 / -3.0410 / 16 / 16 / 32
band_rear_7
Rotor
1 / 9.5 / -6.12 / 1 / 3.6270 / 0 / 02 / 10 / -4.30 / 16 / 16 / 32
band_rear_8
Rotor
1 / 12.541 / -4.8412 / 1 / 3.6315 / 0 / 02 / 13.041 / -3.0410 / 16 / 16 / 32
band_front_1
Rotor
17 / 13.8 / -1.82 / 1 / 3.60 / 0 / 018 / 14.3 / 00 / 16 / 16 / 32
band_front_2
Rotor
17 / 12.541 / 1.2412 / 1 / 3.645 / 0 / 018 / 13.041 / 3.0410 / 16 / 16 / 32
band_front_3
Rotor
17 / 9.5 / 2.52 / 1 / 3.690 / 0 / 018 / 10 / 4.30 / 16 / 16 / 32
band_front_4
Rotor
17 / 6.459 / 1.2412 / 1 / 3.6135 / 0 / 018 / 6.959 / 3.0410 / 16 / 16 / 32
band_front_5
Rotor
17 / 5.2 / -1.82 / 1 / 3.6180 / 0 / 018 / 5.7 / 00 / 16 / 16 / 32
band_front_6
Rotor
17 / 6.459 / -4.8412 / 1 / 3.6225 / 0 / 018 / 6.959 / -3.0410 / 16 / 16 / 32
band_front_7
Rotor
17 / 9.5 / -6.12 / 1 / 3.6270 / 0 / 018 / 10 / -4.30 / 16 / 16 / 32
band_front_8
Rotor
17 / 12.541 / -4.8412 / 1 / 3.6315 / 0 / 018 / 13.041 / -3.0410 / 16 / 16 / 32
STEP4

把会转的部件放在一起

枢轴像一根看不见的线,把动作串起来。

加入 Details 的 11 个像素装饰,得到 65 个方块、5 个分组。选 Rotor,把分组 Pivot 设为 0 / 10 / 0。分组基础旋转保持 0 / 0 / 0,后面在时间线上加动作。

Display
├─ Body       静止外壳
├─ Handles    静止提把
├─ Details    静止装饰
└─ Rotor      41 个部件一起绕 X 旋转
   ├─ 六根枪管、端面和亮条
   ├─ 两圈装饰框
   └─ 中央造型块
本机 Blockbench · 中文界面查看原图 ↗
本机 Blockbench 中选中 Rotor 分组与枢轴
实机 04选中 Rotor,检查中心轴
  • Rotor 的 Pivot 是 0 / 10 / 0。
  • 外壳、提把、侧面装饰不属于 Rotor。
11 个外壳像素装饰参数
部件 / 分组PositionSizeRotation °PivotUV
stripe_near
Details
-10.5 / 8.5 / 4.816 / 1 / 0.120 / 0 / 0-7.5 / 9 / 4.870 / 32 / 16 / 48
stripe_far
Details
-10.5 / 8.5 / -4.936 / 1 / 0.120 / 0 / 0-7.5 / 9 / -4.870 / 32 / 16 / 48
status_near
Details
-5 / 11 / 4.811.4 / 0.6 / 0.130 / 0 / 0-4.3 / 11.3 / 4.87532 / 32 / 48 / 48
status_far
Details
-5 / 11 / -4.941.4 / 0.6 / 0.130 / 0 / 0-4.3 / 11.3 / -4.87532 / 32 / 48 / 48
pixel_bolt_near_1
Details
-10.5 / 7.4 / 4.820.6 / 0.6 / 0.220 / 0 / 0-10.2 / 7.7 / 4.9348 / 16 / 64 / 32
pixel_bolt_near_2
Details
-5 / 7.4 / 4.820.6 / 0.6 / 0.220 / 0 / 0-4.7 / 7.7 / 4.9348 / 16 / 64 / 32
pixel_bolt_far_1
Details
-10.5 / 7.4 / -5.040.6 / 0.6 / 0.220 / 0 / 0-10.2 / 7.7 / -4.9348 / 16 / 64 / 32
pixel_bolt_far_2
Details
-5 / 7.4 / -5.040.6 / 0.6 / 0.220 / 0 / 0-4.7 / 7.7 / -4.9348 / 16 / 64 / 32
back_pixel_top
Details
-14.7 / 12 / -1.20.2 / 0.7 / 2.40 / 0 / 0-14.6 / 12.35 / 048 / 16 / 64 / 32
back_pixel_bottom
Details
-14.7 / 7 / -1.20.2 / 0.7 / 2.40 / 0 / 0-14.6 / 7.35 / 048 / 16 / 64 / 32
side_badge
Details
-9 / 10 / 4.832 / 1.4 / 0.120 / 0 / 0-8 / 10.7 / 4.8948 / 0 / 64 / 16
STEP5

用亮色留下观察标记

重复的形状,需要一个容易认出的记号。

  1. 导入 textures/gatling-palette.png,把灰绿色给外壳,蓝灰色给六管,最深色给端面。
  2. 进入绘画模式,观察 64×64 图集。用 1 像素亮边区分转折,不必把每块都涂得很亮。
  3. barrel_marker_1 用黄色,其余五根亮条用浅灰。六根完全一样时难以看出转动,唯一的黄色标记能帮你跟踪一整圈。
灰绿、蓝灰、黄色与青色像素图集
暗处有层次,亮处有理由。

第一行外壳;第二行金属与端面;第三行黄色标记与青色点缀;第四行备用创作色。

本课共享 16×16 色块,像素密度不是严格的原版展开标准。
本机 Blockbench · 中文界面查看原图 ↗
本机 Blockbench 绘画模式中的六管加特林
实机 05在二维图集与三维模型之间来回看
  • 黄色亮条跟着 Rotor 旋转,侧面条纹保持静止。
  • 修改一个共享色块会影响所有引用它的面。
STEP6

检查 UV 与正面轮廓

贴图和排列,都值得换个角度检查。

回到编辑模式,选 body_main,左侧 UV 对应 0 / 0 / 16 / 16。barrel_1 用 16 / 16 / 32 / 32,黄色标记用 16 / 32 / 32 / 48。这是 U1 / V1 / U2 / V2 四个边界值,不是位置加宽高。

本机 Blockbench · 中文界面查看原图 ↗
本机 Blockbench 编辑模式中的加特林 UV 检查
实机 06用选区确认颜色没有串位
  • 选中 body_main,左侧第一行第一个色块高亮。
  • 本课每个方块六面使用相同色块。
六管加特林沿 X 长轴看到的六个深色端面
检查图 / 沿长轴看,六根枪管围住中心,不挤成一团。
STEP7

从 0° 转到 360°

最后一帧不是退回去,而是走完这一圈。

  1. 切换动画模式,新建 gatling.spin,长度 2 秒,循环选 Loop。
  2. 选 Rotor,只在 Rotation 轨道添加关键帧。X 依次为 0、90、180、270、360;Y、Z 一直为 0。时间依次为 0、0.5、1、1.5、2 秒。
  3. 全部插值设为 Linear / 线性,然后播放。枪身与提把不动,只有枪管组连续旋转。
本机 Blockbench · 中文界面查看原图 ↗
本机 Blockbench 中的 gatling.spin 与旋转关键帧
实机 07时间线上只有 Rotor 的旋转轨道
  • 先选动画,再选 Rotor 查看轨道。
  • 2 秒一圈只是网页与教程观察速度,不是实物参数。
0° 和 360°:姿态相同,过程不同。

最后一帧写 360°,就会从 270° 继续向前;写回 0° 会让最后一段倒着转。循环边界的两个姿态相同,所以可以接成连续运动。

2 秒旋转 · 全部 5 个关键帧
分组轨道时间 / 秒X / Y / Z
Rotorrotation00 / 0 / 0
Rotorrotation0.590 / 0 / 0
Rotorrotation1180 / 0 / 0
Rotorrotation1.5270 / 0 / 0
Rotorrotation2360 / 0 / 0
STEP8

加一段慢速,检查循环

慢一点,才看得清哪里需要调整。

  1. 复制动画为 gatling.spin_slow,长度改成 4 秒。五个关键帧移到 0、1、2、3、4 秒;X 角度仍是 0、90、180、270、360。
  2. 切换两段动画,观察黄色标记:正常展示 2 秒一圈,慢速 4 秒一圈。不要叠加播放两段。
  3. 保存自己的副本,重新打开,确认纹理、Rotor 枢轴与两段动画仍然存在。网页里关闭“视角自动旋转”,能更容易验证枪身真的没有动。
本机 Blockbench · 中文界面查看原图 ↗
本机 Blockbench 中的慢速旋转动画与双动画列表
实机 08同一条轨迹,换一种节奏
  • 左侧保留 gatling.spin 和 gatling.spin_slow。
  • 暂停动画是暂停枪管;关闭自动旋转是固定观察视角。
4 秒慢速观察 · 全部 5 个关键帧
分组轨道时间 / 秒X / Y / Z
Rotorrotation00 / 0 / 0
Rotorrotation190 / 0 / 0
Rotorrotation2180 / 0 / 0
Rotorrotation3270 / 0 / 0
Rotorrotation4360 / 0 / 0
Rotor 绕长轴转过 45 度后的加特林游戏模型
姿态图 / 外壳没动,六管与框架一起换了位置。
GOAL!

换一条亮色,再观察一整圈。

把黄色观察标记换成青色,外壳换成低饱和沙色。只改材质,不动枢轴和关键帧,练习让“设计变化”和“动画结构”互不干扰。

IF SOMETHING LOOKS ODD

转得不对,先看这四处。

为什么整件模型一起转?

网页的自动旋转控制视角,先关掉它。若 Blockbench 里枪身也转,检查关键帧是不是加在 Display 上;本课只给 Rotor 加动画。

为什么枪管像风车一样甩出去?

枢轴或旋转轴不对。Rotor Pivot 是 0 / 10 / 0,动画只改变 X,Y/Z 保持 0;不要用 Y 旋转代替长轴旋转。

为什么最后一段突然倒转?

确认最后一帧 X 是 360,不是 0;五帧按时间递增,插值为 Linear,动画循环为 Loop。首尾数值可以不同,但姿态要相同。

能直接作为 Minecraft 武器使用吗?

不能把 .bbmodel 当 MOD 安装。本课只有通用外观模型与展示动画,没有射击、装填、伤害或物品注册逻辑;游戏内使用需要匹配版本、导出格式与加载方案。

KEEP LEARNING

继续练习。

独立创作的游戏美术教学,不是实物机构复刻。个人学习、课堂及非商业创作可用;请勿原样二次售卖或冒充原创。