Blender 技术梳理

一句话定义:Blender 是一套自由开源的三维创作套件(3D Creation Suite),用一套统一的软件覆盖了 建模 → 绑定 → 动画 → 仿真 → 渲染 → 合成 → 运动跟踪 → 视频剪辑的完整 3D 内容创作管线(3D Pipeline)。 它本身不是单一技术,而是一个由 C/C++ 内核、GPU 抽象层、多种渲染/计算后端、Python 扩展系统共同构成的复杂软件系统。

1. 概述

1.1 什么是 Blender

Blender 是一款跨平台(Windows / macOS / Linux)的免费开源 3D 计算机图形(CG)软件。它的独特之处在于把通常需要多款软件协作完成的环节(建模用 Maya、雕刻用 ZBrush、渲染用 Arnold、合成用 Nuke、剪辑用 Premiere)集成进同一个程序,形成一条端到端的一体化管线。

按功能可划分为四大板块:

DCC(Digital Content Creation,数字内容创作):影视、游戏、工业设计中用于产出数字资产的软件类别,如 Blender、Maya、3ds Max、Houdini、Cinema 4D。Blender 是其中唯一以 GPL 开源发布的完整套件。
3D Pipeline(三维管线):从概念设计到最终画面交付的一整条工序链路。Blender 的价值在于让整条管线在单一数据模型内流转,避免跨软件的数据转换损耗。

1.2 发展史与治理

时间事件
1994荷兰程序员 Ton Roosendaal 在 NeoGeo 动画工作室发起,作为内部 3D 工具(最初名为 Traces)。
1998NaN(Not a Number)公司成立,Blender 以共享软件形式公开发布。
2002NaN 破产;Ton 发起「Free Blender」众筹,以 €100,000 赎回版权,Blender 转为 GNU GPL 自由软件。
2002Blender Foundation 成立,负责协调开发与版权。
2007 起开源电影项目(Big Buck Bunny、Sintel、Spring、Coffee Run 等)驱动软件迭代与验证。
2011Cycles 渲染引擎引入,基于物理的路径追踪。
20182.8 版本重构 UI,引入 EEVEE 实时渲染引擎。
20192.80/2.81 起发布 LTS(长期支持)版本,面向生产环境。
2023 起4.x 系列持续演进,Geometry Nodes、Vulkan 后端、USD 支持成为重点。
Blender Foundation(Blender 基金会):总部位于荷兰阿姆斯特丹的非营利组织,持有 Blender 版权并协调开发;主要资金来自 Development Fund(开发基金)捐赠与 Blender Studio 订阅。
Blender Institute / Blender Studio:基金会的制作部门,通过制作开源电影、培训内容来反哺软件研发,形成「创作驱动开发」的循环。

1.3 版本与许可

Blender 采用统一版本号 + LTS 策略:主版本快速迭代(新增功能),LTS 版本(如 4.2 LTS)维护周期约两年,适合生产管线锁定。许可为 GNU GPL v3——整体免费,可商用、可修改、可再发布,但衍生作品需同样以 GPL 发布。

GNU GPL(GNU General Public License):强著佐权(Copyleft)开源许可。用户可自由使用、研究、修改、分发软件,但分发衍生作品时必须公开源码并沿用 GPL。这是 Blender 能长期保持开源生态的法律基础。
LTS(Long Term Support,长期支持):以稳定性优先、只修 bug 不加功能的版本分支,供工作室在项目周期内锁定,避免版本升级引入风险。

2. 核心技术栈与依赖

2.1 技术栈全景

Blender 在纵向上分为四层:应用层(用户可见的各创作模块)、引擎层(依赖图、几何内核、渲染引擎、数据模型)、平台层(窗口/图形 API/计算后端/Python)、文件与生态层(.blend 与交换格式、扩展平台)。

PlantUML diagram
图 2-1 Blender 技术栈全景图(结构图·宏观分层)
对应 PlantUML 源码:
@startuml component
!theme cerulean
skinparam backgroundColor #fafbfc
skinparam shadowing false
skinparam defaultFontName "PingFang SC"
skinparam rectangle {
  BackgroundColor #ddf4ff
  BorderColor #0969da
}
skinparam package {
  BackgroundColor #f6f8fa
  BorderColor #d0d7de
}

package "应用层 Application" {
  rectangle "建模 Modeling" as M
  rectangle "绑定 Rigging" as R
  rectangle "动画 Animation" as A
  rectangle "仿真 Simulation" as S
  rectangle "渲染 Rendering" as RE
  rectangle "合成 Compositing" as CO
  rectangle "剪辑 Video Editing" as VE
  rectangle "运动跟踪 Tracking" as MT
}
package "引擎层 Engine" {
  rectangle "依赖图 Depsgraph" as DG
  rectangle "几何内核 BKE" as BKE
  rectangle "GPU 抽象层" as GPU
  rectangle "渲染引擎 Cycles / EEVEE" as ENG
  rectangle "数据模型 DNA / RNA" as RNA
}
package "平台层 Platform" {
  rectangle "窗口/输入 GHOST" as GHOST
  rectangle "图形 API OpenGL/Vulkan/Metal" as GFX
  rectangle "计算后端 CUDA/OptiX/HIP/oneAPI" as COMPUTE
  rectangle "Python API / 扩展" as PY
}
package "文件与生态 Files & Ecosystem" {
  rectangle ".blend 文件" as BLEND
  rectangle "Alembic/USD/glTF/FBX" as IO
  rectangle "扩展平台 Extensions" as EXT
}
M --> DG
R --> DG
A --> DG
S --> DG
RE --> ENG
CO --> ENG
VE --> ENG
MT --> DG
DG --> BKE
DG --> RNA
BKE --> GPU
ENG --> GPU
GPU --> GFX
ENG --> COMPUTE
PY --> RNA
RNA --> BLEND
BKE --> IO
PY --> EXT
@enduml

2.2 编程语言与运行时

2.3 图形与计算后端

类别后端用途
图形 APIOpenGL 3.3+ / Vulkan / Metal视口显示、EEVEE 实时渲染、UI 绘制。Blender 通过 GPU 抽象层屏蔽差异。
GPU 计算NVIDIA CUDA / OptiXCycles GPU 渲染、光线追踪硬件加速(OptiX 利用 RT Core)。
GPU 计算AMD HIP / oneAPIAMD 与 Intel GPU 上的 Cycles 渲染。
GPU 计算Apple MetalApple Silicon 平台的图形与计算统一后端。
CPU 计算SIMD / 多线程(TBB/OpenMP)Cycles CPU 路径追踪、几何求值、物理仿真。
加速结构Embree / BVH光线与场景求交的加速结构。
GHOST(Generic Handy Operating System Toolkit):Blender 自研的平台抽象层,封装窗口创建、输入事件、剪贴板、显示设备等操作系统相关功能,使同一套内核代码可运行于三大桌面平台。
OptiX:NVIDIA 的 GPU 光线追踪框架,可利用 RT Core 做硬件加速求交,Cycles 在 NVIDIA 显卡上可启用。
BVH(Bounding Volume Hierarchy,包围体层次结构):一种空间加速数据结构,把场景几何组织成树状包围盒,使光线求交从 O(n) 降到 O(log n),是路径追踪的核心加速手段。

2.4 Python API 与扩展系统

Python 是 Blender 的「第二语言」:启动脚本、界面插件、几何节点自定义、批量渲染都依赖它。其绑定机制建立在 RNA 之上——内核把每个数据结构用声明式方式注册为 RNA 属性,Python 端即可自动获得类型、默认值与读写接口,无需手写绑定。

DNA / RNA:Blender 数据模型的两层。DNA 是用 C 结构体定义的底层数据布局(负责 .blend 文件的读写兼容);RNA 是在 DNA 之上构建的运行时属性系统,为 UI、Python、动画系统提供统一的「属性」抽象(负责反射、读写、UI 生成)。
Operator(操作符):Blender 中每个可执行动作(如「挤出」「细分」「渲染」)都是一个 Operator,具有自己的参数与执行/撤销逻辑,可被界面按钮、菜单、快捷键或 Python 调用。

3. 行为图:Blender "做什么"

3.1 用例图(整体行为)

Blender 的行为可概括为「三类参与者 × 十二类核心用例」。艺术家负责内容创作,技术美术/TA 负责管线与工具,脚本/自动化负责批量与无头任务。

PlantUML diagram
图 3-1 Blender 用例图(行为图·整体行为)
对应 PlantUML 源码:
@startuml usecase
!theme cerulean
skinparam backgroundColor #fafbfc
skinparam shadowing false
skinparam actorStyle awesome
skinparam defaultFontName "PingFang SC"
skinparam usecase {
  BackgroundColor #ddf4ff
  BorderColor #0969da
}

actor "3D 艺术家\n(Artist)" as artist
actor "技术美术 / TD\n(Technical Artist)" as td
actor "脚本 / 自动化\n(Script & Automation)" as auto

rectangle "Blender 3D 创作套件" {
  usecase "建模 (Modeling)" as UC1
  usecase "雕刻 (Sculpting)" as UC2
  usecase "UV 展开与纹理绘制" as UC3
  usecase "材质与着色 (Shading)" as UC4
  usecase "绑定 (Rigging)" as UC5
  usecase "动画 (Animation)" as UC6
  usecase "物理仿真 (Simulation)" as UC7
  usecase "渲染 (Rendering)" as UC8
  usecase "合成 (Compositing)" as UC9
  usecase "视频剪辑 (VSE)" as UC10
  usecase "运动跟踪 (Tracking)" as UC11
  usecase "Python 脚本 / 插件" as UC12
  usecase "批处理 / 无头渲染" as UC13
}

artist --> UC1
artist --> UC2
artist --> UC3
artist --> UC4
artist --> UC6
artist --> UC8
artist --> UC9
artist --> UC10
td --> UC5
td --> UC7
td --> UC11
td --> UC12
auto --> UC12
auto --> UC13
auto --> UC8
@enduml

3.2 活动图(创作主流程)

从概念到成片,一个典型的 3D 创作流程如下。注意其中的判断分支:是否需要高模细节、是否需要物理效果,决定了是否进入雕刻/重拓扑与仿真环节。

PlantUML diagram
图 3-2 3D 创作主流程活动图(行为图·核心流程)
对应 PlantUML 源码:
@startuml activity
!theme cerulean
skinparam backgroundColor #fafbfc
skinparam shadowing false
skinparam defaultFontName "PingFang SC"
skinparam activity {
  BackgroundColor #ddf4ff
  BorderColor #0969da
  DiamondBackgroundColor #fff8c5
}

start
:概念设计 / 参考收集 (Concept);
:建模 (Modeling) - 多边形 / 曲线 / 几何节点;
if (需要高精度细节?) then (是)
  :雕刻高模 (Sculpting);
  :重拓扑 (Retopology);
else (否)
endif
:UV 展开 (UV Unwrap);
:纹理绘制 (Texture Paint);
:材质与着色 (Shading Nodes);
:灯光与摄像机 (Lighting & Camera);
:骨骼绑定 (Rigging);
:动画 (Animation) - 关键帧 / 驱动 / 约束;
if (需要物理效果?) then (是)
  :物理仿真 (Simulation);
endif
:渲染设置 (Render Settings);
:渲染 (Render) - Cycles / EEVEE;
:合成与调色 (Compositing);
:输出 / 剪辑交付 (Output / VSE);
stop
@enduml

3.3 时序图(渲染管线)

渲染是最能体现 Blender 内部协作的流程:一次渲染请求会先经过依赖图(Depsgraph)求值,把修改器、几何节点、约束全部「烘焙」成最终场景快照,再交给渲染引擎逐采样计算。

PlantUML diagram
图 3-3 渲染管线时序图(行为图·核心流程细化)
对应 PlantUML 源码:
@startuml sequence
!theme cerulean
skinparam backgroundColor #fafbfc
skinparam shadowing false
skinparam defaultFontName "PingFang SC"
skinparam participant {
  BackgroundColor #ddf4ff
  BorderColor #0969da
}

participant "用户\n(User)" as U
participant "操作符\n(Operators)" as OP
participant "依赖图\n(Depsgraph)" as DG
participant "几何求值\n(Geometry Eval)" as GEO
participant "渲染引擎\n(Cycles/EEVEE)" as ENG
participant "GPU / CPU\n(Compute)" as GPU
participant "图像输出\n(Image Output)" as OUT

U -> OP: 触发渲染 (F12)
OP -> DG: 标记需要更新 (tag update)
DG -> GEO: 拓扑求值(修改器 / 几何节点)
GEO -> GEO: 逐对象生成求值后几何
GEO --> DG: 求值结果缓存
DG -> ENG: 提交场景快照 (Scene Snapshot)
loop 每个像素 / 采样 (per sample)
  ENG -> GPU: 发射光线 / 着色计算
  GPU --> ENG: 采样结果
end
ENG -> OUT: 合成像素 (Compositing)
OUT --> U: 显示渲染结果 / 保存图像
@enduml

3.4 状态机图(对象模式)

Blender 采用「模式(Mode)」驱动交互:同一个对象在不同模式下,可执行的工具与快捷键完全不同。模式切换是理解 Blender 交互模型的关键。

PlantUML diagram
图 3-4 对象模式状态机图(行为图·交互状态)
对应 PlantUML 源码:
@startuml state
!theme cerulean
skinparam backgroundColor #fafbfc
skinparam shadowing false
skinparam defaultFontName "PingFang SC"

[*] --> ObjectMode
state ObjectMode : 对象模式\n选择 / 变换 / 父子关系
state EditMode : 编辑模式\n编辑网格 / 曲线顶点
state SculptMode : 雕刻模式\n笔刷塑造高模
state PoseMode : 姿态模式\n操纵骨骼
state WeightPaint : 权重绘制\n编辑蒙皮权重
state TexturePaint : 纹理绘制\n直接在模型上绘画

ObjectMode --> EditMode : Tab
EditMode --> ObjectMode : Tab
ObjectMode --> SculptMode
SculptMode --> ObjectMode
ObjectMode --> PoseMode : 选中骨架
PoseMode --> ObjectMode
ObjectMode --> WeightPaint
WeightPaint --> ObjectMode
ObjectMode --> TexturePaint
TexturePaint --> ObjectMode
@enduml

4. 结构图:Blender "由什么组成"

4.1 部署图(宏观架构)

Blender 既可作为桌面 GUI 运行,也可作为无头(headless)命令行程序部署到渲染农场或云端。典型生产部署中,艺术家工作站负责创作,渲染节点负责出图,共享存储与版本控制负责资产流转。

PlantUML diagram
图 4-1 典型生产部署图(结构图·宏观架构)
对应 PlantUML 源码:
@startuml deployment
!theme cerulean
skinparam backgroundColor #fafbfc
skinparam shadowing false
skinparam defaultFontName "PingFang SC"
skinparam node {
  BackgroundColor #f6f8fa
  BorderColor #d0d7de
}
skinparam component {
  BackgroundColor #ddf4ff
  BorderColor #0969da
}
skinparam database {
  BackgroundColor #fff8c5
  BorderColor #bf8700
}

node "艺术家工作站\n(Artist Workstation)" as WS {
  component "Blender GUI\n(OpenGL/Vulkan)" as GUI
  artifact ".blend 工程文件" as BLEND
}
node "GPU 渲染节点\n(GPU Render Node)" as GNODE {
  component "Blender Headless\nblender -b" as B1
  component "Cycles GPU\n(CUDA/OptiX/HIP/Metal)" as CY
}
node "CPU 渲染农场\n(Render Farm)" as FARM {
  component "Blender Headless\nblender -b" as B2
  component "Cycles CPU" as CYC
  component "作业调度\n(Flamenco/Deadline)" as SCHED
}
node "云 / 服务器" as CLOUD {
  component "无头批处理\nPython API" as BATCH
}
database "共享存储\n(Assets / .blend)" as NAS
database "版本控制\n(Git-LFS / Perforce)" as VCS

WS --> NAS
WS --> VCS
GUI --> B1 : 导出渲染作业
SCHED --> B1
SCHED --> B2
B1 --> CY
B2 --> CYC
BATCH --> NAS
CY --> NAS
CYC --> NAS
@enduml
无头渲染(Headless Rendering):不启动图形界面、直接以命令行运行的 Blender(blender -b),常用于渲染农场与 CI 批处理,可节省资源并支持大规模并行。
Flamenco:Blender 官方生态的分布式渲染作业管理系统,负责任务分发、节点调度与结果回收。

4.2 组件图(内核模块)

Blender 内核可抽象为四组组件:数据与逻辑(DNA/RNA/BKE/Depsgraph)、几何与渲染(Geometry/GPU/Cycles/EEVEE)、平台与接口(GHOST/Python/Editors)、文件与 I/O(.blend 读写与交换格式)。

PlantUML diagram
图 4-2 Blender 内核组件图(结构图·内部组成)
对应 PlantUML 源码:
@startuml component
!theme cerulean
skinparam backgroundColor #fafbfc
skinparam shadowing false
skinparam defaultFontName "PingFang SC"
skinparam component {
  BackgroundColor #ddf4ff
  BorderColor #0969da
}
skinparam package {
  BackgroundColor #f6f8fa
  BorderColor #d0d7de
}

package "数据与逻辑 (blenkernel)" {
  component "DNA\n数据结构定义" as DNA
  component "RNA\n属性 / 反射系统" as RNA
  component "BKE\n核心业务逻辑" as BKE
  component "Depsgraph\n依赖图求值" as DG
}
package "几何与渲染" {
  component "Geometry\n网格 / 曲线 / 属性" as GEO
  component "GPU\n图形抽象层" as GPU
  component "Cycles\n路径追踪" as CY
  component "EEVEE\n实时光栅化" as EV
}
package "平台与接口" {
  component "GHOST\n窗口 / 输入 / 事件" as GHOST
  component "Python API\nbpy / bmesh" as PY
  component "Editors\n各编辑器 UI" as ED
}
package "文件与 I/O" {
  component "blend file\n版本化读写" as BLEND
  component "Import / Export\nUSD / FBX / glTF / ABC" as IO
}

ED --> RNA
RNA --> DNA
ED --> BKE
BKE --> DG
DG --> GEO
DG --> CY
DG --> EV
GEO --> GPU
CY --> GPU
EV --> GPU
GHOST --> ED
PY --> RNA
PY --> BKE
BKE --> BLEND
BKE --> IO
@enduml

4.3 包图(源码目录)

Blender 源码采用「模块即目录」的组织方式,命名约定清晰:BKE(Blender Kernel)为核心逻辑,BLI(Blender Library)为通用工具库,intern/extern 存放内置与外部依赖。

PlantUML diagram
图 4-3 Blender 源码目录包图(结构图·代码组织)
对应 PlantUML 源码:
@startuml
!theme cerulean
skinparam backgroundColor #fafbfc
skinparam shadowing false
skinparam defaultFontName "PingFang SC"
skinparam package {
  BackgroundColor #f6f8fa
  BorderColor #d0d7de
}
skinparam folder {
  BackgroundColor #ddf4ff
  BorderColor #0969da
}

package "blender/ (源码根)" {
  package "source/blender/" {
    folder "blenkernel (BKE)" as BKE
    folder "blenlib (BLI)" as BLI
    folder "blenloader (.blend I/O)" as LOAD
    folder "depsgraph" as DG
    folder "editors" as ED
    folder "gpu" as GPU
    folder "render (Cycles/EEVEE 集成)" as RENDER
    folder "nodes" as NODES
    folder "python (bpy 绑定)" as PY
    folder "windowmanager (GHOST)" as WM
    folder "makesdna / makesrna" as MAKERNA
  }
  folder "intern/ (内置独立库)" as INTERN
  folder "extern/ (外部依赖)" as EXTERN
  folder "release/ (数据 / 脚本 / 图标)" as RELEASE
  folder "scripts/ (Python 启动脚本)" as SCRIPTS
  folder "tests/" as TESTS
}
BKE --> BLI
ED --> WM
PY --> MAKERNA
RENDER --> GPU
NODES --> BKE
LOAD --> BKE
@enduml

4.4 类图(ID 数据模型)

Blender 所有可保存的数据都派生自统一的基类 ID(DataBlock)。这种「万物皆 ID」的设计,使 .blend 文件、撤销系统、引用计数、Python 访问都能用同一套机制处理。

PlantUML diagram
图 4-4 ID 数据块类图(结构图·数据模型)
对应 PlantUML 源码:
@startuml class
!theme cerulean
skinparam backgroundColor #fafbfc
skinparam shadowing false
skinparam defaultFontName "PingFang SC"
skinparam class {
  BackgroundColor #ddf4ff
  BorderColor #0969da
}

class ID <> {
  + String name
  + short flag
  + int us          // 引用计数
  + ListBase properties
  + ID *next / *prev
}
class Object {
  + short type
  + float obmat[4][4]
  + Object *parent
}
class Mesh {
  + int totvert
  + int totpoly
  + CustomData vdata
}
class Material
class Scene {
  + ListBase objects
}
class Collection {
  + ListBase objects
}
class Armature
class Action

ID <|-- Object
ID <|-- Mesh
ID <|-- Material
ID <|-- Scene
ID <|-- Collection
ID <|-- Armature
ID <|-- Action

Object "1" o-- "0..1" Object : parent
Object --> Mesh : data
Object --> Armature : data (骨架)
Object --> Material : material_slots
Scene "1" o-- "*" Object
Collection "1" o-- "*" Object
Action "*" --> "1" ID : animates
@enduml
ID / DataBlock(数据块):Blender 的通用数据容器基类,所有可持久化数据(Object、Mesh、Material、Scene、Image、Action…)都是 ID 的子类,拥有名称、引用计数、伪用户(fake user)等公共属性。
CustomData:Blender 的通用属性容器,用键值方式在网格顶点/边/面/角上挂载任意类型的数据层(UV、颜色、法线、顶点组等),是属性系统的基础。

5. 关键子系统

5.1 数据模型与 DataBlock

Blender 采用「万物皆 ID」的统一数据模型。数据块之间通过指针相互引用,并维护引用计数与「伪用户」机制,避免未使用数据在保存时被自动清理。.blend 文件本质上是这些 DNA 结构体的内存镜像,通过版本化的读写代码保证跨版本兼容。

5.2 依赖图 Depsgraph

Depsgraph(Dependency Graph,依赖图)是 Blender 的求值引擎。它把所有数据对象及其依赖关系组织成有向无环图(DAG),当某个数据被修改时,只重新求值受影响的下游节点,从而实现增量更新与多线程求值。

DAG(Directed Acyclic Graph,有向无环图):节点间有方向且不存在环的图结构。依赖图用 DAG 表达「谁依赖谁」,从而可拓扑排序确定求值顺序并安全并行。

5.3 几何节点 Geometry Nodes

几何节点是 Blender 近年的核心创新:以可视化节点图(Node Graph)描述程序化几何生成与处理逻辑。它引入字段(Fields)与属性(Attributes)概念——节点不直接操作具体几何,而是描述「对每个元素如何计算」,从而实现高度灵活的程序化建模、散布、实例化与地形生成。

Geometry Nodes(几何节点):Blender 的程序化建模系统。与 Houdini 的 SOP 思路相近,但深度集成进 Blender 的数据模型与依赖图。
Field(字段):几何节点中的核心抽象——一个「随几何元素位置而变化的值」。字段使同一套节点逻辑能作用于任意规模与类型的几何,无需显式循环。

5.4 渲染引擎 Cycles vs EEVEE

维度CyclesEEVEE
原理基于物理的路径追踪(Path Tracing)实时 GPU 光栅化 + 屏幕空间效果
画质物理正确,支持全局光照、焦散、次表面散射近似效果,适合快速预览与风格化
速度较慢,依赖采样收敛(CPU/GPU 均可)极快,接近实时
硬件CPU + CUDA/OptiX/HIP/oneAPI/MetalGPU(OpenGL/Vulkan/Metal)
适用影视级最终渲染、产品级静帧动画预览、游戏风格、快速迭代
Path Tracing(路径追踪):一种渲染算法,从摄像机出发追踪光线在场景中的随机弹射路径,用大量采样的统计平均逼近渲染方程的解,可得到物理正确的全局光照。
Global Illumination(全局光照):考虑光线在物体间多次反弹的照明模型,能产生间接光、软阴影、颜色渗透等真实效果。
Rasterization(光栅化):把几何图元直接投影到屏幕像素并着色,速度快但不天然具备全局光照,需借助屏幕空间技术近似。

5.5 动画与绑定

5.6 物理仿真

Blender 内置多种物理求解器,均通过修改器或物理面板挂载到对象上,由依赖图在求值时推进模拟:

6. 与竞品对比

软件定位强项许可
Blender一体化全流程套件覆盖全管线、开源免费、Python 生态活跃、几何节点GPL(免费)
Autodesk Maya影视/游戏高端制作动画与绑定、行业标准、大型团队管线商业订阅
Autodesk 3ds Max建筑可视化、游戏建模工具链、CAD 互操作、插件生态商业订阅
Cinema 4D动态图形(Motion Graphics)MoGraph、上手快、与 AE 集成好商业订阅
Houdini程序化特效(VFX)节点式程序化、流体/破碎/粒子顶级商业 + 免费学习版
ZBrush数字雕刻高模雕刻、细节塑造商业订阅
Unreal Engine / Unity实时引擎实时渲染、交互、游戏运行时免费/商业

Blender 的差异化在于「一体化 + 开源」:它以零授权成本提供覆盖全流程的能力,虽在个别专业环节(如高模雕刻、影视级特效)不如专精软件,但整体性价比与可定制性极高,尤其适合独立创作者、中小企业与教育场景。

7. 实战操作手册

7.1 界面与工作区

Blender 界面由「编辑器区域」自由拼装而成,官方预设了多种工作区(Workspace):

核心操作范式:Blender 强调「快捷键 + 鼠标手势」。选择对象后按 G/R/S 移动/旋转/缩放,移动鼠标确定数值,左键确认、右键或 Esc 取消。输入数字可精确指定数值。

7.2 核心工作流

建模

1. Shift+A 添加基础几何体(立方体/球/圆柱)
2. Tab 进入编辑模式
3. 选择元素:1 顶点 / 2 边 / 3 面
4. E 挤出、I 内插、Ctrl+B 倒角、Ctrl+R 环切
5. 右键 → Shade Smooth 平滑着色
6. 修改器面板添加 Subdivision Surface 细分

材质与渲染

1. Shading 工作区,切换到 Cycles 或 EEVEE
2. 新建材质,用 Principled BSDF 作为基础着色器
3. 连接 Base Color / Roughness / Metallic / Normal
4. 添加灯光(Shift+A → Light)与摄像机
5. 渲染属性设置采样数、分辨率、输出路径
6. F12 渲染当前帧,Ctrl+F12 渲染动画

动画

1. 将时间轴指针移到起始帧
2. 选中对象,在属性面板对应字段上按 I 插入关键帧
3. 移动指针到结束帧,修改数值,再次按 I
4. 在 Graph Editor 调整 F-Curve 插值
5. 空格播放预览

无头批处理

# 命令行直接渲染 .blend 文件
blender -b scene.blend -f 1
# 渲染整个动画序列
blender -b scene.blend -a
# 运行自定义 Python 脚本
blender -b scene.blend -P script.py

7.3 快捷键速查

快捷键功能快捷键功能
Tab对象/编辑模式切换G / R / S移动 / 旋转 / 缩放
Shift+A添加对象X / Delete删除
Shift+D复制(独立)Alt+D关联复制
E挤出I内插 / 插入关键帧
Ctrl+R环切Ctrl+B倒角
K切割(Knife)P分离
M合并到中心Ctrl+J合并对象
1 / 2 / 3点 / 边 / 面 选择模式Z切换着色方式
Numpad 1/3/7前 / 右 / 顶视图Numpad 0摄像机视图
F12渲染当前帧Ctrl+F12渲染动画
F9调整上一步操作Space播放 / 暂停
Ctrl+Z / Ctrl+Shift+Z撤销 / 重做Ctrl+S保存

8. 参数指令速查

8.1 命令行参数

参数说明
blender启动图形界面。
blender -b后台/无头模式(background),不显示界面。
blender -b file.blend打开指定工程文件并进入无头模式。
-f N渲染第 N 帧。
-a渲染动画全部帧。
-o /path/####指定输出路径与文件名格式(# 为帧号占位)。
-F PNG指定输出图像格式(PNG/JPEG/OPEN_EXR…)。
-E CYCLES指定渲染引擎(CYCLES/BLENDER_EEVEE_NEXT…)。
-P script.py启动后运行指定 Python 脚本。
--python-expr "..."直接执行一段 Python 表达式。
--factory-startup忽略用户配置与插件,以出厂设置启动(保证可复现)。
-noaudio禁用音频系统(服务器环境常用)。
--version打印版本信息。
--debug输出调试信息。
无头模式务必加 -b,否则在无显示设备的服务器上会因无法创建窗口而报错。渲染农场通常配合 --factory-startup 以保证结果一致。

8.2 Python API 常用片段

import bpy

# 遍历场景中所有网格对象
for obj in bpy.data.objects:
    if obj.type == 'MESH':
        print(obj.name, obj.location)

# 创建一个立方体并设置位置
bpy.ops.mesh.primitive_cube_add(size=2, location=(0, 0, 0))

# 给选中对象添加细分修改器
obj = bpy.context.active_object
mod = obj.modifiers.new(name="Subsurf", type='SUBSURF')
mod.levels = 2

# 设置渲染引擎与输出参数
scene = bpy.context.scene
scene.render.engine = 'CYCLES'
scene.cycles.samples = 256
scene.render.resolution_x = 1920
scene.render.resolution_y = 1080
scene.render.filepath = '/tmp/render/frame_'

# 插入关键帧动画
obj.location = (0, 0, 0)
obj.keyframe_insert(data_path="location", frame=1)
obj.location = (0, 0, 5)
obj.keyframe_insert(data_path="location", frame=60)

# 保存工程
bpy.ops.wm.save_as_mainfile(filepath="/tmp/scene.blend")

8.3 渲染与输出参数

参数(Python 路径)说明建议
scene.render.engine渲染引擎最终出图 CYCLES,预览 BLENDER_EEVEE_NEXT
scene.cycles.samples每像素采样数预览 32~64,成品 256~1024
scene.cycles.use_denoising降噪开启可大幅降低所需采样数
scene.cycles.device计算设备CPU / GPU
scene.render.resolution_x/y输出分辨率1920×1080 / 3840×2160
scene.render.resolution_percentage分辨率百分比测试时可设 50 提速
scene.render.film_transparent透明背景需要抠像合成时开启
scene.render.image_settings.file_format图像格式PNG / JPEG / OPEN_EXR(多通道)
scene.render.fps帧率24 / 25 / 30 / 60
scene.frame_start / frame_end动画帧范围按镜头时长设定

9. 总结

Blender 的技术本质,可以归纳为三句话:

  1. 统一数据模型是根基——「万物皆 ID」的设计让建模、动画、渲染、合成、剪辑共享同一套数据,这是它能一体化覆盖全流程的结构性原因。
  2. 依赖图是引擎——Depsgraph 以 DAG 组织求值、增量更新、并行计算,支撑起复杂场景的实时交互与正确渲染。
  3. 开放扩展是生态——GPL 许可 + RNA/Python 绑定 + 扩展平台,使社区能持续贡献插件、几何节点资产与工作流,形成自我强化的开源生态。

从工程视角看,Blender 是「用 C/C++ 打磨性能内核、用 Python 开放创作接口、用 GPU 后端适配异构硬件」的经典范例,其架构对任何希望构建可扩展创作类软件的团队都具有参考价值。