BEFORE YOU BUILD
今天练的是造型,不是机械。
本课是 Minecraft 风格游戏美术练习。M1 加兰德的历史原型是半自动步枪,名称可参考史密森尼博物馆藏品记录。这里用夸张比例概括它的外观,全部参数都是虚拟建模单位,不是现实尺寸或制造图纸。
准备 Blockbench 5.x,使用 Generic Model(通用模型),不需要运行 Minecraft。第一次使用可以先做南瓜灯入门课。
下载 5 个阶段工程 · 26 KB ↓01-wood-silhouette.bbmodel9 部件 · 3 分组 · 0 动画02-metal-profile.bbmodel17 部件 · 4 分组 · 0 动画03-textured-details.bbmodel37 部件 · 6 分组 · 0 动画04-idle-animation.bbmodel37 部件 · 6 分组 · 1 动画05-finished-animated.bbmodel37 部件 · 6 分组 · 2 动画
阶段工程预先内嵌了纹理,便于观察。软件截图是在本机中文版 Blockbench 打开相应阶段拍摄的,不是从空白工程连续录屏;结构示意图另行标注。请先另存自己的练习。
新建工程,先约定方向
给工程一个名字,也给坐标一个约定。
- 新建通用模型,命名
my_m1_prop,纹理尺寸设为 64 × 64,使用逐面 UV。 - 先保存
my-m1-prop.bbmodel。建立父分组Display,枢轴为 0 / 8 / 0。 - Display 下建立 Stock 和 Forewood 两个分组。第一组装后部木质轮廓,第二组装前部木质轮廓。
- 中央是模型预览;左侧是纹理,右侧是分组大纲。
- 参考工程已含 9 个木质部件;自己从空白开始时,按下面的步骤逐个添加。
只看轮廓,搭出木质外形
先把远看时的轮廓搭对,再添加小零件。
- 在 Stock 中添加
stock_main:Position −24 / 3 / −1.8,Size 11 / 5.5 / 3.6。Position 是起点,不是中心。 - 按表添加 cheek、lower_step 和 neck。
stock_neck的 Z 旋转为 18°,Pivot 为 −10 / 7.4 / 0,让两块大形状自然衔接。 - 把前部木质块归入 Forewood,用深浅棕色看清层次。完成后对照
01-wood-silhouette.bbmodel。
- 右上参数对应被选中的方块,不是整个分组。
- 旋转和枢轴要一起设置;不要把 Position 和 Pivot 混在一起。

9 个木质部件的虚拟建模参数
| 方块 / 分组 | Position | Size | Rotation ° | Pivot | UV |
|---|---|---|---|---|---|
| stock_main Stock | -24 / 3 / -1.8 | 11 / 5.5 / 3.6 | 0 / 0 / 0 | -18.5 / 5.75 / 0 | 0 / 0 / 16 / 16 |
| stock_cheek Stock | -22 / 8 / -1.65 | 9 / 1.2 / 3.3 | 0 / 0 / 0 | -17.5 / 8.6 / 0 | 16 / 0 / 32 / 16 |
| stock_lower_step Stock | -23 / 2.4 / -1.55 | 7 / 1 / 3.1 | 0 / 0 / 0 | -19.5 / 2.9 / 0 | 32 / 0 / 48 / 16 |
| stock_neck Stock | -14 / 5.5 / -1.5 | 8 / 3.8 / 3 | 0 / 0 / 18 | -10 / 7.4 / 0 | 0 / 0 / 16 / 16 |
| wood_body Stock | -8 / 7.4 / -1.85 | 12 / 3.3 / 3.7 | 0 / 0 / 0 | -2 / 9.05 / 0 | 0 / 0 / 16 / 16 |
| forewood_rear Forewood | 3 / 8 / -1.55 | 8 / 2.6 / 3.1 | 0 / 0 / 0 | 7 / 9.3 / 0 | 16 / 0 / 32 / 16 |
| forewood_front Forewood | 11 / 8.4 / -1.35 | 9 / 2.2 / 2.7 | 0 / 0 / 0 | 15.5 / 9.5 / 0 | 0 / 0 / 16 / 16 |
| upper_wood_rear Forewood | 4 / 10.4 / -1.2 | 7 / 1.2 / 2.4 | 0 / 0 / 0 | 7.5 / 11 / 0 | 0 / 48 / 16 / 64 |
| upper_wood_front Forewood | 12 / 10.4 / -1.1 | 7 / 1 / 2.2 | 0 / 0 / 0 | 15.5 / 10.9 / 0 | 16 / 0 / 32 / 16 |
用金属灰画出第二层线条
木头是一大片,金属是一道有节奏的灰线。
Display 下建立 Metal。添加顶部外壳、前方细长条、后端盖与两条环带。这些方块只表现外表面,无需制作内部结构。先看侧面,再转到斜上方,检查金属有没有整块埋进木头。
top_housing:Position −8 / 10.5 / −1.6,Size 11 / 1.8 / 3.2;用金属灰。它下方的 wood_body 继续保留暖棕色。
- 这个阶段共 17 个部件,金属外形与木材已区分。
- 先观察整体关系,不要为了一个微小高光添加很多方块。

8 个金属外形部件参数
| 方块 / 分组 | Position | Size | Rotation ° | Pivot | UV |
|---|---|---|---|---|---|
| top_housing Metal | -8 / 10.5 / -1.6 | 11 / 1.8 / 3.2 | 0 / 0 / 0 | -2.5 / 11.4 / 0 | 0 / 16 / 16 / 32 |
| housing_top Metal | -6 / 12.3 / -1.25 | 6 / 0.6 / 2.5 | 0 / 0 / 0 | -3 / 12.6 / 0 | 16 / 16 / 32 / 32 |
| barrel_exterior Metal | 2 / 10.6 / -0.65 | 16 / 1.3 / 1.3 | 0 / 0 / 0 | 10 / 11.25 / 0 | 0 / 16 / 16 / 32 |
| barrel_tip Metal | 18 / 10.6 / -0.65 | 8 / 1.3 / 1.3 | 0 / 0 / 0 | 22 / 11.25 / 0 | 16 / 16 / 32 / 32 |
| front_lower_rod Metal | 19 / 9.2 / -0.5 | 6 / 0.85 / 1 | 0 / 0 / 0 | 22 / 9.625 / 0 | 32 / 16 / 48 / 32 |
| end_cap Metal | -24.5 / 2.6 / -1.9 | 0.6 / 6.4 / 3.8 | 0 / 0 / 0 | -24.2 / 5.8 / 0 | 0 / 16 / 16 / 32 |
| band_rear Metal | 10.5 / 8.05 / -1.65 | 1 / 3.7 / 3.3 | 0 / 0 / 0 | 11 / 9.9 / 0 | 0 / 16 / 16 / 32 |
| band_front Metal | 19.2 / 8.25 / -1.55 | 1 / 3.7 / 3.1 | 0 / 0 / 0 | 19.7 / 10.1 / 0 | 0 / 16 / 16 / 32 |
把装饰和背带放进自己的分组
大纲整齐,后面的动画才会听话。
建立 Details 与 Sling:前者存放装饰像素,后者存放帆布背带。背带由三条相接的倾斜细方块组成;参数保留三位小数,完整工程保留精度。现在你有 37 个部件、6 个分组。
Display(整件道具的展示动作) ├─ Stock 后部木质轮廓 ├─ Forewood 前部木质轮廓 ├─ Metal 金属外表面 ├─ Details 小型装饰像素 └─ Sling 帆布背带
- 全部五个子分组都属于 Display。
- 动画只需要操作 Display;不用逐个移动 37 个方块。
装饰与帆布背带的参数
| 方块 / 分组 | Position | Size | Rotation ° | Pivot | UV |
|---|---|---|---|---|---|
| rear_sight_base Details | -7.8 / 12.3 / -1.7 | 2 / 0.7 / 3.4 | 0 / 0 / 0 | -6.8 / 12.65 / 0 | 32 / 16 / 48 / 32 |
| rear_sight_left Details | -7.5 / 13 / -1.7 | 0.8 / 1.1 / 0.65 | 0 / 0 / 0 | -7.1 / 13.55 / -1.375 | 16 / 16 / 32 / 32 |
| rear_sight_right Details | -7.5 / 13 / 1.05 | 0.8 / 1.1 / 0.65 | 0 / 0 / 0 | -7.1 / 13.55 / 1.375 | 16 / 16 / 32 / 32 |
| rear_sight_cross Details | -7.5 / 13.6 / -1.05 | 0.8 / 0.5 / 2.1 | 0 / 0 / 0 | -7.1 / 13.85 / 0 | 0 / 16 / 16 / 32 |
| front_sight_base Details | 23 / 11.85 / -0.95 | 1.3 / 0.5 / 1.9 | 0 / 0 / 0 | 23.65 / 12.1 / 0 | 32 / 16 / 48 / 32 |
| front_sight_pixel Details | 23.4 / 12.3 / -0.2 | 0.45 / 1.3 / 0.4 | 0 / 0 / 0 | 23.625 / 12.95 / 0 | 16 / 16 / 32 / 32 |
| front_guard_-1.05 Details | 23.1 / 12.25 / -1.05 | 0.9 / 1.1 / 0.35 | 0 / 0 / 0 | 23.55 / 12.8 / -0.875 | 0 / 16 / 16 / 32 |
| front_guard_0.7 Details | 23.1 / 12.25 / 0.7 | 0.9 / 1.1 / 0.35 | 0 / 0 / 0 | 23.55 / 12.8 / 0.875 | 0 / 16 / 16 / 32 |
| side_accent Details | -4.8 / 11.15 / 1.62 | 5 / 0.55 / 0.35 | 0 / 0 / 0 | -2.3 / 11.425 / 1.795 | 48 / 16 / 64 / 32 |
| side_dot Details | -6 / 11.6 / 1.7 | 0.85 / 0.85 / 0.45 | 0 / 0 / 0 | -5.575 / 12.025 / 1.925 | 16 / 16 / 32 / 32 |
| guard_front Details | -3 / 5.1 / -0.7 | 0.65 / 2.4 / 1.4 | 0 / 0 / 0 | -2.675 / 6.3 / 0 | 0 / 16 / 16 / 32 |
| guard_lower Details | -7 / 4.9 / -0.7 | 4.65 / 0.65 / 1.4 | 0 / 0 / 0 | -4.675 / 5.225 / 0 | 0 / 16 / 16 / 32 |
| guard_back Details | -7.6 / 5.5 / -0.7 | 0.65 / 1.9 / 1.4 | 0 / 0 / -15 | -7.275 / 6.45 / 0 | 0 / 16 / 16 / 32 |
| guard_inner_pixel Details | -5.9 / 6.4 / -0.25 | 0.7 / 1.1 / 0.5 | 0 / 0 / 15 | -5.55 / 6.95 / 0 | 32 / 16 / 48 / 32 |
| sling_rear_mount Sling | -19 / 1.8 / -0.55 | 1.1 / 0.65 / 1.1 | 0 / 0 / 0 | -18.45 / 2.125 / 0 | 0 / 16 / 16 / 32 |
| sling_front_mount Sling | 18 / 7.5 / -0.55 | 1.1 / 0.65 / 1.1 | 0 / 0 / 0 | 18.55 / 7.825 / 0 | 0 / 16 / 16 / 32 |
| sling_rear Sling | -18.757 / 0.225 / -0.4 | 9.014 / 0.55 / 0.8 | 0 / 0 / -19.44 | -14.25 / 0.5 / 0 | 0 / 32 / 16 / 48 |
| sling_middle Sling | -10 / -1.275 / -0.4 | 15 / 0.55 / 0.8 | 0 / 0 / 0 | -2.5 / -1 / 0 | 0 / 32 / 16 / 48 |
| sling_front Sling | 3.747 / 3.025 / -0.4 | 16.007 / 0.55 / 0.8 | 0 / 0 / 32.499 | 11.75 / 3.3 / 0 | 16 / 32 / 32 / 48 |
| sling_buckle Sling | -8 / -1.35 / -0.55 | 1.4 / 0.9 / 1.1 | 0 / 0 / 0 | -7.3 / -0.9 / 0 | 48 / 32 / 64 / 48 |
三种材质,三种像素语言
不用照片贴上去,也能看出木纹与金属。
- 导入练习包的
textures/m1-palette.png。这张 64×64 图集分为 16 个 16×16 色块。 - 木材用相邻深浅棕色画短而断续的横纹;金属用灰色底加少量亮边;帆布用接近的绿色做细密交错。
- 切换绘画模式,用 1 像素画笔先改一小块,看看模型上的变化。别把每个像素都画成随机噪点。

第一行:木材。第二行:金属。第三行:帆布与黄铜色装饰。第四行:备用深浅色。
同一材质先控制在少量明暗色中,再调整像素形状。
- 左侧图集与中央模型共同检查材质分配。
- 先另存自己的工程,再试着把帆布改成另一种低饱和颜色。
给每个面找到正确的色块
贴图找错家,模型就会穿错衣服。
回到编辑模式,选择一个方块,在左侧 UV 面板选择要调整的面。练习工程中每个方块的六个面取同一色块,可以统一设置;UV 的四个数是 U1 / V1 / U2 / V2,不是位置加宽高。
stock_main → 0 / 0 / 16 / 16;top_housing → 0 / 16 / 16 / 32;sling_middle → 0 / 32 / 16 / 48。
- 选中方块后,左边的 UV 区域对应当前面。
- 尺寸表最后一列给出每个方块的取样区;本练习六面取样相同。

让整件道具轻轻摆动
动作不用大,闭环要接得上。
- 进入动画模式,新建
m1.idle,长度 3 秒,循环设为 Loop。 - 选中最外层
Display。在 Position 与 Rotation 轨道上,按下表添加关键帧,插值选 Linear。 - 位置 Y 只上下移动 0.3 个建模单位;旋转只改变 Z,最大 1.5°。第一帧和最后一帧相同,避免循环时跳一下。
- 左侧选 m1.idle,再选 Display 查看位置与旋转轨道。
- 这一段只有轻摆,没有操作细节;动作幅度小,方便观察材质。
3 秒轻摆动画 · 全部 10 个关键帧
| 分组 | 轨道 | 时间 / 秒 | X / Y / Z |
|---|---|---|---|
| Display | position | 0 | 0 / 0 / 0 |
| Display | position | 0.75 | 0 / 0.3 / 0 |
| Display | position | 1.5 | 0 / 0 / 0 |
| Display | position | 2.25 | 0 / -0.3 / 0 |
| Display | position | 3 | 0 / 0 / 0 |
| Display | rotation | 0 | 0 / 0 / 0 |
| Display | rotation | 0.75 | 0 / 0 / 1.5 |
| Display | rotation | 1.5 | 0 / 0 / 0 |
| Display | rotation | 2.25 | 0 / 0 / -1.5 |
| Display | rotation | 3 | 0 / 0 / 0 |
转过来看看,保存自己的版本
第二段动作,换一种观察作品的方式。
- 新建
m1.inspect,长度 4 秒、Loop。仍选 Display,但这次只使用 Rotation 轨道。 - 0 秒回正;1 秒旋转到 0 / 28 / 8;2 秒回正;3 秒旋转到 0 / −28 / −8;4 秒回正。用 Linear 插值连接。
- 来回切换两段动画,确认没有遗留上一段的位移。保存 .bbmodel,再关闭并重新打开你自己的副本,检查纹理与动画都还在。
- 左侧动画列表保留 m1.idle 和 m1.inspect 两段。
- 上方网页查看器也能切换、暂停动画;自动旋转按钮控制的是视角。
4 秒左右展示 · 全部 5 个关键帧
| 分组 | 轨道 | 时间 / 秒 | X / Y / Z |
|---|---|---|---|
| Display | rotation | 0 | 0 / 0 / 0 |
| Display | rotation | 1 | 0 / 28 / 8 |
| Display | rotation | 2 | 0 / 0 / 0 |
| Display | rotation | 3 | 0 / -28 / -8 |
| Display | rotation | 4 | 0 / 0 / 0 |

这一次,试着只改一种材质。
保留轮廓,把胡桃木换成深红木,或者把帆布换成沙色。限制越清楚,越容易看出一次修改的效果。完成后保存 my-m1-variant.bbmodel。
IF SOMETHING LOOKS ODD
卡住了,先看这四处。
为什么动画模式找不到?
确认项目是 Generic Model / 通用模型,不是 Java Block/Item。先保留原文件,再选择适合动画的工程格式。
为什么只有一个小方块在动?
动画中选中了部件而不是 Display。把其他五个分组放到 Display 里面,再在 Display 上设置关键帧。
为什么背带断开、斜块跑偏?
核对 Rotation 和 Pivot,别只输入 Position 与 Size。参数表三位小数足够观察,阶段工程保留完整精度;也检查有没有误改分组的基础旋转。
能直接放到 Minecraft 里吗?
不能把 .bbmodel 当 MOD 安装。本课保存的是通用模型和展示动画;游戏内使用需另选目标版本、导出格式与加载方案。它不包含物品注册、攻击、伤害等游戏逻辑。
KEEP LEARNING
继续查阅。
本课为独立创作的游戏美术教学,不是历史实物的精密复刻。图文与工程用于个人学习、课堂和非商业创作,请勿原样二次售卖或冒充原创。