1
项目设置与界面准备
▶Blender 5.0 的默认单位为米,制作火柴人时建议将场景单位改为厘米,或保持默认并按比例建模(人物总高约 1.8m)。
1.0 将界面语言切换为英文(推荐)
本教程所有菜单路径均基于 英文界面。若你的 Blender 当前显示中文,建议先按以下步骤切换为英文,方便对照操作。
- 顶部菜单点击 Edit(编辑)→ Preferences…(偏好设置),快捷键 Ctrl+,(逗号)也可直接打开。
- 在偏好设置窗口左侧点击 Interface(界面) 标签页。
- 找到 Translation(翻译) 区块,Language(语言) 下拉菜单中选择 English (English)。
- 取消勾选下方的 Interface(界面)、Tooltips(提示框)、New Data(新建数据) 三个复选框——全部取消后界面即变为英文。
- 无需重启,界面立即生效。点击右下角 Save Preferences(保存设置),下次打开 Blender 仍保持英文。
路径示意
Edit
→
Preferences…
→
Interface
→
Translation
→
Language: English
→
取消全部勾选 (Uncheck all)
如果偏好设置中没有看到"Translation"区块,说明界面已是英文,无需操作,直接进入下一步。
图1 Blender 5.0 默认布局全图,各面板位置一目了然,对照上方可快速找到对应区域。
Blender 默认界面布局速查
| 顶部菜单栏(Menu Bar) | ||
| File Edit Render … (所有菜单命令都在这里) | ||
|
Outliner(大纲)
场景物体列表
|
3D Viewport(3D视图)
← 主要工作区域
|
Properties Editor(属性编辑器) ← 关键面板!
[🎬 Render] [⚙️ Scene] [🖨️ Output] [📷 Camera] …
↑ 点击 🖨️ 打印机图标进入 Output Properties
|
| Timeline(时间轴) ← 动画关键帧在这里操作 | ||
Properties Editor(属性编辑器) 各标签页图标记忆口诀:
🎬 Render(渲染) → ⚙️ Scene(场景) → 🌍 World(世界) → 🧱 Object(物体) → 🔧 Modifiers(修改器) → 🎨 Material(材质) → 🖨️ Output(输出) → 📷 Camera(相机)...
🎬 Render(渲染) → ⚙️ Scene(场景) → 🌍 World(世界) → 🧱 Object(物体) → 🔧 Modifiers(修改器) → 🎨 Material(材质) → 🖨️ Output(输出) → 📷 Camera(相机)...
1.1 基础项目设置
- 打开 Blender 5.0,新建 General 项目,删除默认的 Cube:选中后按 X → Enter。
- 顶部菜单 Edit(编辑)→ Preferences…(偏好设置)→ Interface(界面),下拉找到 Display(显示) 区块,勾选 Developer Extras(开发者附加功能)(可选,方便调试时右键复制 Python 路径)。
- 点击 Output Properties(输出属性,🖨️ 打印机图标),在右侧面板中找到并展开 Format(格式) 折叠区块,将 Frame Rate(帧率) 设为 24 fps;Resolution(分辨率) 设为 1920×1080。然后往下看——
-
📐 设定总帧数:Frame Range → End在屏幕最最下面有一条长长的「时间轴」(Timeline)——看起来像一把尺子 📏,上面标着 1、2、3、4…
找到时间轴右边的数字框框:
Start: 1 End: 96
把 End(结束帧) 改成 96,这样 Blender 就知道:从第 1 帧到第 96 帧,一共 96 张图。
💡 为什么是 96?因为 4 秒 × 24 帧/秒 = 96 帧📐 也就是动画一共会播放 4 秒钟。 -
图2 Output Properties → Format 区块位置:设置 Frame Rate、Resolution、Output Format 等。💡 小知识:什么是「帧率 Frame Rate」?动画就像一本翻页书 📖——每一页画着稍微不同的图片,快速翻动时,画面就"动起来"啦!
每一张图片叫做一"帧"(Frame)。「24 fps」就是每秒播放 24 张图片,这是动画片的标准速度——既流畅,文件又不会太大。
🖍️ 试试看:拿一本便签纸,每页画一个小人迈一步,快速翻动——你就做出了自己的"动画"! - 在 Scene Properties(场景属性,⚙️ 图标)→ Units(单位) 确认 Unit System(单位系统): Metric(公制),Length(长度): Centimeters(厘米)。
-
图3 Scene Properties → Units 区块位置:设置 Unit System 和 Length。💡 小知识:什么是「单位 Units」?在 Blender 里做模型,就像用尺子画图 📏——要先决定用"厘米"还是"米"来量长度!
Metric(公制) 是国际通用的单位系统:1 米 = 100 厘米。
Imperial(英制) 是另一种单位系统,美国等地常用:用 Feet(英尺)、Inches(英寸)、Miles(英里) 来量长度。
📐 对比:1 Meter(米)≈ 3.28 Feet(英尺);1 Centimeter(厘米)≈ 0.39 Inch(英寸)
我们选 Centimeters(厘米),因为火柴人的头大约 20 厘米宽,用厘米数起来比较方便。
🖍️ 试试看:用尺子量一量你的课本有多长,是不是用"厘米"数的? - 按 N 打开属性面板,切换到 View(视图) 标签,将 Clip Start(近裁切距离) 改为 0.01 m,避免近处裁切。
-
图4 3D Viewport 侧边栏 View 标签页:设置 Clip Start 和 Clip End。💡 小知识:什么是「Clip Start 近裁切距离」?3D 视图就像一个魔法相机 📷——它有个奇怪的规矩:
「离镜头太近的东西,我会假装看不见!」
Clip Start(近裁切距离) 就是「多近才算太近」。
如果设成 1 m,那么离相机 1 米以内的东西都会隐身消失!👻
如果设成 0.01 m(1 厘米),就算你把眼睛贴在火柴人鼻子上,也还能看见它!👃
🖍️ 试试看:把 Clip Start 改成 10 m,然后滚动鼠标滚轮凑近——哗,火柴人不见了!再改回 0.01 m,它又出现了!
保存一次文件 Ctrl+S,命名为
stickman_animation.blend,养成随手保存的习惯。2
搭建 Stickman(火柴人)模型
▶火柴人由 1 个球体(头) + 7 段圆柱(躯干、四肢) 组成。所有部件使用纯黑材质。
火柴人结构预览(点击可切换姿势)
头部
UV球体,半径 0.14m
黑色材质
黑色材质
躯干
圆柱,半径 0.04m
高度 0.5m
高度 0.5m
手臂 / 腿
圆柱,半径 0.03m
手臂高 0.38m,腿高 0.45m
手臂高 0.38m,腿高 0.45m
2.1 创建头部(UV Sphere)
🌟 小知识:什么是 UV Sphere?
你可以把 UV Sphere 想象成一个"穿了网格衣服的球" 🏀普通的球是光滑的,而 UV Sphere 在球外面包了一层「鱼网」——横线和竖线交叉组成的格子。
U 和 V 是什么?
就像地图上用 经度(竖线)和 纬度(横线)来定位地球上的位置一样🪐——
U 就是绕着球转一圈的「经度线」(从左到右↔️),V 就是从球顶到球底的「纬度线」(从上到下↕️)。
把 U 和 V 组合起来,就能告诉电脑:"贴图上的这个点,应该贴在球的哪个位置!" 🎯
那为什么不叫「UV 球」而叫「UV Sphere」?
因为 Blender 是外国人做的软件,Sphere 就是英文的"球体"。所以 UV Sphere 连起来就是"带 UV 网格的球体"——有了这个网格,我们才能在上面画画、贴材质!🎨
🖍️ 想想看:如果你要给一个气球涂色,是不是先画出格子,再一格一格地涂?UV Sphere 就是那个打好格子的气球!
🔢 Segments(分段)、Rings(环数)和 Radius(半径)是什么?
🌐 还记得 "网格衣服" 吗?Segments(分段)就是竖着的线——像切西瓜那样🔪,从上往下切成 16 瓣,每一瓣就是 1 个 Segment。
🍩 Rings(环数)就是横着的线——像给地球仪画纬线🌍,一圈一圈绕上去,总共 8 圈。
🎯 Radius(半径)是球的大小——从球心到球皮的距离。0.14m 大约是14 厘米,比一个乒乓球大一点🏓,正好做火柴人的脑袋!
💡 Segments=16、Rings=8:竖线 16 条 + 横线 8 条 = 网格不会太密也不会太疏,刚刚好!
- Shift+A → Mesh → UV Sphere,添加后注意看屏幕左下角👀——那里会弹出一个很小很小的 Add UV Sphere 面板(如果你没看到,按 F9 也能把它叫出来),在这个面板中设置:Segments=16,Rings=8,半径=0.14m。
- 按 G Z 将球体移动到 Z=1.64m(头顶约 1.78m)。
- 选中球体(它应该有个橘色的外框),看屏幕右侧那个竖着的面板——最顶上有一个输入框,里面显示着 Sphere(这是球体现在的名字),把它改成
Head然后按 Enter 确认。(如果右侧面板顶部没有看到 Sphere,就点一下上面那排图标中那个🟧 橙色小方块,鼠标放上去会显示"Object Properties"。) -
图5 右侧 Properties 面板顶部,🟧 橙色小方块就是 Object Properties。
2.2 创建躯干
- Shift+A → Mesh → Cylinder,同样在左下角的 Add Cylinder 面板中设置:Vertices=12,半径=0.04m,深度(高度)=0.5m。
- 按 G Z 移动到 Z=1.25m(躯干中心)。命名为
Torso(躯干)。
2.3 创建手臂(左右各一)
- Shift+A → Mesh → Cylinder(对,手臂也是 Mesh!),同样在左下角弹出的 Add Cylinder 面板中设置:Vertices=12,半径=0.03m,深度=0.38m,命名为
UpperArm_L。 - 按 R Y 旋转 45°,使手臂自然下垂;移动到肩部位置(X=-0.18m, Z=1.38m)。
- 同样 Shift+A → Mesh → Cylinder,左下角面板 Vertices=12,半径=0.03m,深度=0.34m,创建前臂
ForeArm_L,旋转并连接到肘部。 - 选中两段手臂,Shift+D 复制,S X -1 镜像到右侧,重命名为
UpperArm_R/ForeArm_R。
2.4 创建腿部
- Shift+A → Mesh → Cylinder,同样在左下角面板中设置:Vertices=12,半径=0.03m,深度=0.45m,命名
Thigh_L,移动到 X=-0.1m, Z=0.8m。 - 同理 Shift+A → Mesh → Cylinder,左下角面板 Vertices=12,深度=0.43m,创建小腿
Shin_L,连接到膝盖。 - 镜像得到右腿
Thigh_R/Shin_R。
建议将所有部件的 Origin 设置为 Geometry(右键 → Set Origin → Origin to Geometry),方便后续骨骼绑定。
部件尺寸参考表
| 部件 | 对象名 | 圆柱半径 | 高度 / 深度 | 位置 Z |
|---|---|---|---|---|
| 头部 | Head | 0.14m(球体) | — | 1.64m |
| 躯干 | Torso | 0.04m | 0.50m | 1.25m |
| 上臂(左/右) | UpperArm_L/R | 0.03m | 0.38m | 1.38m |
| 前臂(左/右) | ForeArm_L/R | 0.03m | 0.34m | 1.10m |
| 大腿(左/右) | Thigh_L/R | 0.03m | 0.45m | 0.80m |
| 小腿(左/右) | Shin_L/R | 0.03m | 0.43m | 0.38m |
3
绑定骨骼 Armature
▶Armature(骨骼)是控制模型运动的核心。我们先建立骨架,再通过 Vertex Groups(顶点组) 将网格部件与骨骼关联。
3.1 添加人形骨架
- Shift+A → Armature → Single Bone,添加单根骨骼。
- 进入 Edit Mode(编辑模式)(Tab),选中骨骼头部,E 向上挤出,构建脊椎链。骨骼命名规范见下表。
- 在 Armature Properties → Viewport Display(视口显示) 勾选 In Front(前置显示),骨骼始终可见。
- 或直接使用 Rigify 插件(Plugin)(Blender 5.0 内置):Shift+A → Armature → Human (Meta-Rig),自动生成人形骨架,再缩放匹配火柴人尺寸。
骨骼命名规范
| 骨骼名 | 对应部件 | 父骨骼 |
|---|---|---|
spine | 躯干 | —(根骨骼) |
head | 头部 | spine |
upper_arm.L | 左上臂 | spine |
forearm.L | 左前臂 | upper_arm.L |
upper_arm.R | 右上臂 | spine |
forearm.R | 右前臂 | upper_arm.R |
thigh.L | 左大腿 | spine |
shin.L | 左小腿 | thigh.L |
thigh.R | 右大腿 | spine |
shin.R | 右小腿 | thigh.R |
3.2 Parenting(父子绑定)
- 选中所有网格部件,最后 Shift+点击 Armature(骨架),使骨架为 Active Object(活动对象)。
- 按 Ctrl+P → 选 With Empty Groups(带空顶点组)(生成空顶点组)。
- 分别选中每个网格部件,进入 Edit Mode,全选顶点 A,在 Object Data Properties → Vertex Groups(顶点组) 中选对应骨骼名,点击 Assign(指定),权重设为 1.0。
由于火柴人各段肢体独立,每段圆柱只需绑定到单个骨骼,无需权重绘制,绑定非常简单。
3.3 IK(Inverse Kinematics 反向运动学)约束(可选)
- 在 Pose Mode(姿态模式),选中
shin.L,在 Bone Constraints(骨骼约束) 中添加 Inverse Kinematics(IK / 反向运动学)。 - Target 选 Armature,Bone 选 IK 控制器骨骼,Chain Length(链长)=2(控制大腿+小腿)。
- 右腿同理操作。IK 可让腿部运动更自然,脚踩地时不会穿模。
4
设置材质外观(纯黑 Emission 风格)
▶火柴人使用 纯黑色自发光材质,不受光照影响,在任何场景下都保持清晰的剪影效果。
- 选中任意部件,打开 Shader Editor(底部切换视图类型)。
- 删除默认 Principled BSDF,Shift+A → Shader → Emission(自发光),Emission Color 设为 #1a1a1a(近黑),Strength(强度)=1.0。
- 连接 Emission → Material Output(材质输出)(Surface)。
- 材质命名为
StickmanBlack,在 Material Properties(材质属性) 点击 Browse Material(浏览材质),将此材质分配给所有部件。
使用 Emission(自发光)材质后,渲染时无需布置灯光也能看清火柴人。背景建议设为白色(World Properties(世界属性)→ Background Color(背景颜色)→ #ffffff),形成经典剪影效果。
Python Script — 批量赋予黑色材质
import bpy
# 创建或获取材质
mat_name = "StickmanBlack"
mat = bpy.data.materials.get(mat_name)
if mat is None:
mat = bpy.data.materials.new(name=mat_name)
mat.use_nodes = True
nodes = mat.node_tree.nodes
links = mat.node_tree.links
nodes.clear()
# 添加 Emission 节点
emission = nodes.new("ShaderNodeEmission")
emission.inputs["Color"].default_value = (0.05, 0.05, 0.05, 1.0)
emission.inputs["Strength"].default_value = 1.0
output = nodes.new("ShaderNodeOutputMaterial")
links.new(emission.outputs["Emission"], output.inputs["Surface"])
# 将材质分配给所有火柴人部件
stickman_names = [
"Head", "Torso",
"UpperArm_L", "ForeArm_L",
"UpperArm_R", "ForeArm_R",
"Thigh_L", "Shin_L",
"Thigh_R", "Shin_R",
]
for name in stickman_names:
obj = bpy.data.objects.get(name)
if obj:
obj.data.materials.clear()
obj.data.materials.append(mat)
print("材质已分配完成!")
在 Blender 的 Scripting(脚本) 工作区粘贴以上代码,点击 Run Script(运行脚本) 即可一键完成。
5
Keyframe Animation(关键帧动画)行走循环
▶行走循环一般为 24 帧 = 1 步,总计 48 帧 = 完整左右步伐循环。我们以 24fps 制作,动画长 2 秒。
5.1 关键帧位置规划
5.2 逐帧设置步骤
- 切换为 Pose Mode(姿态模式)(选中骨架,Ctrl+Tab)。
- 第 0 帧(Frame 0,起始姿势):左腿前伸 30°,右腿后伸 -30°;左臂后摆 -25°,右臂前摆 25°。选所有骨骼 A,按 I → LocRotScale(位置旋转缩放) 插入关键帧。
- 第 12 帧(Frame 12,过渡 Transition):双腿竖直,手臂垂直,躯干微向前倾 5°。插入关键帧。
- 第 24 帧(Frame 24,对称姿势 Mirrored):与第 0 帧左右对调——右腿前伸 30°,左腿后伸 -30°;右臂后摆,左臂前摆。插入关键帧。
- 第 36 帧(Frame 36):再次过渡姿势(同第 12 帧)。
- 第 48 帧(Frame 48):完全复制第 0 帧的姿势(Pose Mode 下 Ctrl+C / Ctrl+V 粘贴姿势)。
在时间轴末尾(第 48 帧)设置的关键帧需与第 0 帧完全一致,才能形成无缝循环。
5.3 各骨骼旋转角度参考
| 骨骼 | 第 0 帧(Euler Y) | 第 24 帧(Euler Y) |
|---|---|---|
thigh.L | +30° | -30° |
shin.L | -15° | +15° |
thigh.R | -30° | +30° |
shin.R | +15° | -15° |
upper_arm.L | -25° | +25° |
forearm.L | +10° | -10° |
upper_arm.R | +25° | -25° |
forearm.R | -10° | +10° |
spine | 0° / 微倾 3° | 0° / 微倾 3° |
5.4 使 NLA 动画无限循环
- 打开 NLA Editor(Non-Linear Animation,非线性动画编辑器),找到骨架的动画轨道。
- 选中动画条,按 N 打开属性,Playback(播放)→ Repeat(重复) 设为 Repeat,或直接在 Action Editor(动作编辑器) 中将循环模式设为 Cyclic(循环)。
- 按 Space 播放预览行走循环。
6
Graph Editor(曲线编辑器)优化动作
▶Graph Editor(曲线编辑器) 让你精确控制动作的 Ease In/Out(缓入缓出),让运动更有"重量感"。
- 底部切换为 Graph Editor(曲线编辑器),可看到各骨骼的 F-Curve(曲线)。
- 全选所有曲线 A,按 T → 选 Auto Clamped(自动钳制),Blender 自动平滑插值,避免生硬跳跃。
- 对于腿部,建议将曲线调整为 S 形(S-Curve)(先加速后减速),模拟真实步伐节奏。
- Torso(躯干
spine)的 Z 轴可以加入轻微的上下起伏(±0.02m),让行走更自然。 - 添加 Cycles Modifier(循环修改器):在 Graph Editor 中选中曲线,N → Modifiers(修改器)→ Add Modifier(添加修改器)→ Cycles(循环),模式选 Repeat with Offset(带偏移重复),角色将持续向前行走。
使用 Cycles Modifier(循环修改器) 后,只需设置 48 帧的基础动作,Blender 会自动在整个时间轴上无限重复,无需手动复制关键帧。
7
Render & Export(渲染与导出)
▶- 在 Render Properties(渲染属性) 中选择 EEVEE Next(Blender 5.0 默认渲染引擎),速度快且支持实时预览。
- 关闭 Bloom(泛光),避免黑色模型产生多余发光效果。
- 在 World Properties(世界属性) 中将背景颜色设为 纯白 #ffffff,形成经典火柴人风格。
- 按 Ctrl+F12 Render Animation(渲染动画),或先按 F12 Render Image(渲染单帧)预览效果。
- Output Properties(输出属性)→ Output(输出):文件格式选 PNG(图像序列),输出路径设为
//render/stickman_。 - 渲染完成后,使用 Blender 内置的 Video Sequence Editor(VSE,视频序列编辑器) 或外部工具(FFmpeg)将 PNG 序列合成为 MP4:
FFmpeg — PNG 序列转 MP4
ffmpeg -r 24 -i stickman_%04d.png \
-c:v libx264 -pix_fmt yuv420p \
-crf 18 stickman_walk.mp4
FFmpeg — PNG 序列转 GIF(优化版)
ffmpeg -r 24 -i stickman_%04d.png \
-vf "fps=24,scale=480:-1:flags=lanczos,palettegen" \
palette.png
ffmpeg -r 24 -i stickman_%04d.png -i palette.png \
-lavfi "fps=24,scale=480:-1:flags=lanczos [x]; [x][1:v] paletteuse" \
stickman_walk.gif
| Setting(设置项) | 推荐值 | 说明 |
|---|---|---|
| Resolution(分辨率) | 1920×1080 | Full HD,兼顾质量与性能 |
| Frame Rate(帧率) | 24 fps | 动画标准帧率 |
| Samples(采样数) | 64(EEVEE) | 黑色自发光材质无需太高采样 |
| Output Format(输出格式) | PNG / MP4 | PNG 序列更灵活,可后期调色 |
| Color Space(色彩空间) | sRGB | 适合屏幕展示 |
| Transparent(透明背景) | 勾选 Transparent | 导出带 Alpha 通道的 PNG |
8
Python Script(自动化脚本,完整版)
▶以下脚本可在 Blender 的 Scripting(脚本) 工作区中运行,一键生成完整的火柴人模型(含材质,无骨骼,可作为静态展示)。
Python — 一键生成火柴人模型
import bpy
import math
# ── 清空场景 ──
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()
# ── 创建黑色自发光材质 ──
def get_black_material():
mat = bpy.data.materials.get("StickmanBlack")
if mat: return mat
mat = bpy.data.materials.new("StickmanBlack")
mat.use_nodes = True
nodes = mat.node_tree.nodes
links = mat.node_tree.links
nodes.clear()
em = nodes.new("ShaderNodeEmission")
em.inputs[0].default_value = (0.04, 0.04, 0.04, 1)
em.inputs[1].default_value = 1.0
out = nodes.new("ShaderNodeOutputMaterial")
links.new(em.outputs[0], out.inputs[0])
return mat
# ── 添加部件的辅助函数 ──
def add_part(name, shape, loc, rot=(0,0,0), scale=(1,1,1)):
mat = get_black_material()
if shape == "sphere":
bpy.ops.mesh.primitive_uv_sphere_add(
radius=scale[0], location=loc,
segments=16, ring_count=8)
elif shape == "cylinder":
bpy.ops.mesh.primitive_cylinder_add(
radius=scale[0], depth=scale[1],
location=loc, rotation=rot, vertices=12)
obj = bpy.context.active_object
obj.name = name
obj.data.name = name
obj.data.materials.append(mat)
return obj
# ── 搭建火柴人 ──
add_part("Head", "sphere", (0, 0, 1.64), scale=(0.14,0.14,0.14))
add_part("Torso", "cylinder", (0, 0, 1.25), scale=(0.04,0.5,1))
r45 = math.radians(45)
add_part("UpperArm_L", "cylinder", (-0.22, 0, 1.34),
rot=(r45, 0, 0), scale=(0.03, 0.38, 1))
add_part("ForeArm_L", "cylinder", (-0.28, 0, 1.08),
rot=(-r45, 0, 0), scale=(0.03, 0.34, 1))
add_part("UpperArm_R", "cylinder", (0.22, 0, 1.34),
rot=(r45, 0, 0), scale=(0.03, 0.38, 1))
add_part("ForeArm_R", "cylinder", (0.28, 0, 1.08),
rot=(-r45, 0, 0), scale=(0.03, 0.34, 1))
add_part("Thigh_L", "cylinder", (-0.10, 0, 0.80),
rot=(math.radians(15), 0, 0), scale=(0.03, 0.45, 1))
add_part("Shin_L", "cylinder", (-0.12, 0, 0.37),
rot=(-math.radians(5), 0, 0), scale=(0.03, 0.43, 1))
add_part("Thigh_R", "cylinder", (0.10, 0, 0.80),
rot=(-math.radians(15), 0, 0), scale=(0.03, 0.45, 1))
add_part("Shin_R", "cylinder", (0.12, 0, 0.37),
rot=(math.radians(5), 0, 0), scale=(0.03, 0.43, 1))
print("✓ 火柴人已生成!共 10 个部件。")
运行脚本后,火柴人将出现在场景中央。接下来手动添加骨架并绑定即可开始动画制作。
教程完成
你已掌握 Blender 5.0 火柴人动画的完整流程
建模 → 骨骼绑定 → 材质 → 关键帧 → 曲线优化 → 渲染导出
进阶:添加跑步循环
进阶:多角色场景
进阶:导出 FBX 到游戏引擎