Blender 5.0 · 完整教程

Blender 5.0 制作
火柴人动画

从零开始,使用圆形头部 + 粗线段骨架,制作流畅的火柴人行走 / 奔跑动画。

适合入门 / 中级 约 60 分钟 无需前置建模经验 Blender 5.0+
📝 词汇测试
1

项目设置与界面准备

Blender 5.0 的默认单位为米,制作火柴人时建议将场景单位改为厘米,或保持默认并按比例建模(人物总高约 1.8m)。

1.0 将界面语言切换为英文(推荐)

!本教程所有菜单路径均基于 英文界面。若你的 Blender 当前显示中文,建议先按以下步骤切换为英文,方便对照操作。
  • 1顶部菜单点击 Edit(编辑)→ Preferences…(偏好设置),快捷键 Ctrl+,(逗号)也可直接打开。
  • 2在偏好设置窗口左侧点击 Interface(界面) 标签页。
  • 3找到 Translation(翻译) 区块,Language(语言) 下拉菜单中选择 English (English)
  • 4取消勾选下方的 Interface(界面)Tooltips(提示框)New Data(新建数据) 三个复选框——全部取消后界面即变为英文。
  • 5无需重启,界面立即生效。点击右下角 Save Preferences(保存设置),下次打开 Blender 仍保持英文。
路径示意
Edit Preferences… Interface Translation Language: English 取消全部勾选 (Uncheck all)
如果偏好设置中没有看到"Translation"区块,说明界面已是英文,无需操作,直接进入下一步。
Blender 5.0 完整界面全图
图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(相机)...

1.1 基础项目设置

  • 1打开 Blender 5.0,新建 General 项目,删除默认的 Cube:选中后按 XEnter
  • 2顶部菜单 Edit(编辑)→ Preferences…(偏好设置)→ Interface(界面),下拉找到 Display(显示) 区块,勾选 Developer Extras(开发者附加功能)(可选,方便调试时右键复制 Python 路径)。
  • 3点击 Output Properties(输出属性,🖨️ 打印机图标),在右侧面板中找到并展开 Format(格式) 折叠区块,将 Frame Rate(帧率) 设为 24 fpsResolution(分辨率) 设为 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 秒钟。
  • Blender Output Properties 面板 Format 区块位置
    图2 Output Properties → Format 区块位置:设置 Frame Rate、Resolution、Output Format 等。
    💡 小知识:什么是「帧率 Frame Rate」?
    动画就像一本翻页书 📖——每一页画着稍微不同的图片,快速翻动时,画面就"动起来"啦!
    每一张图片叫做一"帧"(Frame)。「24 fps」就是每秒播放 24 张图片,这是动画片的标准速度——既流畅,文件又不会太大。
    🖍️ 试试看:拿一本便签纸,每页画一个小人迈一步,快速翻动——你就做出了自己的"动画"!
  • 4Scene Properties(场景属性,⚙️ 图标)→ Units(单位) 确认 Unit System(单位系统): Metric(公制),Length(长度): Centimeters(厘米)
  • Blender Scene Properties 面板 Units 区块位置
    图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 厘米宽,用厘米数起来比较方便。
    🖍️ 试试看:用尺子量一量你的课本有多长,是不是用"厘米"数的?
  • 5N 打开属性面板,切换到 View(视图) 标签,将 Clip Start(近裁切距离) 改为 0.01 m,避免近处裁切。
  • Blender 3D Viewport 侧边栏 View 标签 Clip Start 位置
    图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.03m
手臂高 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 条 = 网格不会太密也不会太疏,刚刚好!
  • 1Shift+AMesh → UV Sphere,添加后注意看屏幕左下角👀——那里会弹出一个很小很小的 Add UV Sphere 面板(如果你没看到,按 F9 也能把它叫出来),在这个面板中设置:Segments=16,Rings=8,半径=0.14m
  • 2G Z 将球体移动到 Z=1.64m(头顶约 1.78m)。
  • 3选中球体(它应该有个橘色的外框),看屏幕右侧那个竖着的面板——最顶上有一个输入框,里面显示着 Sphere(这是球体现在的名字),把它改成 Head 然后按 Enter 确认。(如果右侧面板顶部没有看到 Sphere,就点一下上面那排图标中那个🟧 橙色小方块,鼠标放上去会显示"Object Properties"。)
  • Blender Object Properties 橙色小方块图标位置
    图5 右侧 Properties 面板顶部,🟧 橙色小方块就是 Object Properties。

2.2 创建躯干

  • 1Shift+AMesh → Cylinder,同样在左下角的 Add Cylinder 面板中设置:Vertices=12,半径=0.04m,深度(高度)=0.5m
  • 2G Z 移动到 Z=1.25m(躯干中心)。命名为 Torso(躯干)。

2.3 创建手臂(左右各一)

  • 1Shift+AMesh → Cylinder(对,手臂也是 Mesh!),同样在左下角弹出的 Add Cylinder 面板中设置:Vertices=12,半径=0.03m,深度=0.38m,命名为 UpperArm_L
  • 2R Y 旋转 45°,使手臂自然下垂;移动到肩部位置(X=-0.18m, Z=1.38m)。
  • 3同样 Shift+AMesh → Cylinder,左下角面板 Vertices=12,半径=0.03m,深度=0.34m,创建前臂 ForeArm_L,旋转并连接到肘部。
  • 4选中两段手臂,Shift+D 复制,S X -1 镜像到右侧,重命名为 UpperArm_R / ForeArm_R

2.4 创建腿部

  • 1Shift+AMesh → Cylinder,同样在左下角面板中设置:Vertices=12,半径=0.03m,深度=0.45m,命名 Thigh_L,移动到 X=-0.1m, Z=0.8m。
  • 2同理 Shift+AMesh → Cylinder,左下角面板 Vertices=12,深度=0.43m,创建小腿 Shin_L,连接到膝盖。
  • 3镜像得到右腿 Thigh_R / Shin_R
!建议将所有部件的 Origin 设置为 Geometry(右键 → Set Origin → Origin to Geometry),方便后续骨骼绑定。

部件尺寸参考表

部件对象名圆柱半径高度 / 深度位置 Z
头部Head0.14m(球体)1.64m
躯干Torso0.04m0.50m1.25m
上臂(左/右)UpperArm_L/R0.03m0.38m1.38m
前臂(左/右)ForeArm_L/R0.03m0.34m1.10m
大腿(左/右)Thigh_L/R0.03m0.45m0.80m
小腿(左/右)Shin_L/R0.03m0.43m0.38m
3

绑定骨骼 Armature

Armature(骨骼)是控制模型运动的核心。我们先建立骨架,再通过 Vertex Groups(顶点组) 将网格部件与骨骼关联。

3.1 添加人形骨架

  • 1Shift+AArmature → Single Bone,添加单根骨骼。
  • 2进入 Edit Mode(编辑模式)Tab),选中骨骼头部,E 向上挤出,构建脊椎链。骨骼命名规范见下表。
  • 3Armature Properties → Viewport Display(视口显示) 勾选 In Front(前置显示),骨骼始终可见。
  • 4或直接使用 Rigify 插件(Plugin)(Blender 5.0 内置):Shift+AArmature → 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(父子绑定)

  • 1选中所有网格部件,最后 Shift+点击 Armature(骨架),使骨架为 Active Object(活动对象)
  • 2Ctrl+P → 选 With Empty Groups(带空顶点组)(生成空顶点组)。
  • 3分别选中每个网格部件,进入 Edit Mode,全选顶点 A,在 Object Data Properties → Vertex Groups(顶点组) 中选对应骨骼名,点击 Assign(指定),权重设为 1.0
由于火柴人各段肢体独立,每段圆柱只需绑定到单个骨骼,无需权重绘制,绑定非常简单。

3.3 IK(Inverse Kinematics 反向运动学)约束(可选)

  • 1在 Pose Mode(姿态模式),选中 shin.L,在 Bone Constraints(骨骼约束) 中添加 Inverse Kinematics(IK / 反向运动学)
  • 2Target 选 Armature,Bone 选 IK 控制器骨骼,Chain Length(链长)=2(控制大腿+小腿)。
  • 3右腿同理操作。IK 可让腿部运动更自然,脚踩地时不会穿模。
4

设置材质外观(纯黑 Emission 风格)

火柴人使用 纯黑色自发光材质,不受光照影响,在任何场景下都保持清晰的剪影效果。

  • 1选中任意部件,打开 Shader Editor(底部切换视图类型)。
  • 2删除默认 Principled BSDF,Shift+AShader → Emission(自发光),Emission Color 设为 #1a1a1a(近黑),Strength(强度)=1.0
  • 3连接 Emission → Material Output(材质输出)(Surface)。
  • 4材质命名为 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 关键帧位置规划

关键帧时间轴(0–48 帧)
spine
thigh.L
thigh.R
upper_arm.L
upper_arm.R

5.2 逐帧设置步骤

  • 1切换为 Pose Mode(姿态模式)(选中骨架,Ctrl+Tab)。
  • 2第 0 帧(Frame 0,起始姿势):左腿前伸 30°,右腿后伸 -30°;左臂后摆 -25°,右臂前摆 25°。选所有骨骼 A,按 ILocRotScale(位置旋转缩放) 插入关键帧。
  • 3第 12 帧(Frame 12,过渡 Transition):双腿竖直,手臂垂直,躯干微向前倾 5°。插入关键帧。
  • 4第 24 帧(Frame 24,对称姿势 Mirrored):与第 0 帧左右对调——右腿前伸 30°,左腿后伸 -30°;右臂后摆,左臂前摆。插入关键帧。
  • 5第 36 帧(Frame 36):再次过渡姿势(同第 12 帧)。
  • 6第 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°
spine0° / 微倾 3°0° / 微倾 3°

5.4 使 NLA 动画无限循环

  • 1打开 NLA Editor(Non-Linear Animation,非线性动画编辑器),找到骨架的动画轨道。
  • 2选中动画条,按 N 打开属性,Playback(播放)→ Repeat(重复) 设为 Repeat,或直接在 Action Editor(动作编辑器) 中将循环模式设为 Cyclic(循环)
  • 3Space 播放预览行走循环。
6

Graph Editor(曲线编辑器)优化动作

Graph Editor(曲线编辑器) 让你精确控制动作的 Ease In/Out(缓入缓出),让运动更有"重量感"。
  • 1底部切换为 Graph Editor(曲线编辑器),可看到各骨骼的 F-Curve(曲线)。
  • 2全选所有曲线 A,按 T → 选 Auto Clamped(自动钳制),Blender 自动平滑插值,避免生硬跳跃。
  • 3对于腿部,建议将曲线调整为 S 形(S-Curve)(先加速后减速),模拟真实步伐节奏。
  • 4Torso(躯干 spine)的 Z 轴可以加入轻微的上下起伏(±0.02m),让行走更自然。
  • 5添加 Cycles Modifier(循环修改器):在 Graph Editor 中选中曲线,NModifiers(修改器)→ Add Modifier(添加修改器)→ Cycles(循环),模式选 Repeat with Offset(带偏移重复),角色将持续向前行走。
使用 Cycles Modifier(循环修改器) 后,只需设置 48 帧的基础动作,Blender 会自动在整个时间轴上无限重复,无需手动复制关键帧。
7

Render & Export(渲染与导出)

  • 1Render Properties(渲染属性) 中选择 EEVEE Next(Blender 5.0 默认渲染引擎),速度快且支持实时预览。
  • 2关闭 Bloom(泛光),避免黑色模型产生多余发光效果。
  • 3World Properties(世界属性) 中将背景颜色设为 纯白 #ffffff,形成经典火柴人风格。
  • 4Ctrl+F12 Render Animation(渲染动画),或先按 F12 Render Image(渲染单帧)预览效果。
  • 1Output Properties(输出属性)→ Output(输出):文件格式选 PNG(图像序列),输出路径设为 //render/stickman_
  • 2渲染完成后,使用 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×1080Full HD,兼顾质量与性能
Frame Rate(帧率)24 fps动画标准帧率
Samples(采样数)64(EEVEE)黑色自发光材质无需太高采样
Output Format(输出格式)PNG / MP4PNG 序列更灵活,可后期调色
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 到游戏引擎