跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

Python + Blender 5.0 几何节点实战教程

介绍 Blender 5.0 安装配置及 Python 脚本基础,结合 bpy 模块实现三维建模自动化。通过几何节点工作流讲解,演示如何手动创建节点树并使用 Python 脚本复刻移动立方体效果。涵盖系统要求、环境设置、核心概念及节点逻辑,适合希望提升程序化创作效率的设计师与开发者。

暗影行者发布于 2026/3/24更新于 2026/10/15132 浏览

前言

1.1 为什么选择 Blender 5.0 + Python?

在三维创作与程序化建模领域,Blender 一直以开源、强大且免费的特性占据核心地位。而 Blender 5.0 对几何节点(Geometry Nodes)的颠覆性更新,彻底打破了'程序化建模 = 专业门槛'的固有认知——从'平面操作'到'空间操控'的体积数据支持,从'连线迷宫'到'模块化复用'的包与闭包机制,让新手也能快速上手复杂效果,让资深开发者的创意实现效率翻倍。

Python 作为 Blender 的内置脚本语言,通过 bpy 模块实现了对 Blender 全功能的可编程控制。当 Python 的自动化能力与 Blender 5.0 几何节点的灵活性结合,我们不仅能摆脱重复的手动操作,更能实现'代码驱动创意':批量生成模型、实时调整节点参数、动态响应外部数据(如传感器数据、动画关键帧),甚至开发自定义节点工具链。

本文的核心目标,就是以经典的 OPENGL Nehe 教程风格(循序渐进、实战导向、细节拉满、兼顾入门与进阶),带大家从最基础的三维三角形开始,逐步掌握几何节点的核心逻辑与 Python 编程技巧,最终完成一个'照片级纹理航空仪表'的综合实战项目。无论你是三维建模新手、Python 开发者,还是想提升程序化创作效率的设计师,都能在本文中找到适合自己的学习路径。

1.2 本文核心亮点
  • 风格复刻:完全遵循 Nehe 教程'章节递进、目标明确、步骤详尽'的风格,每章围绕一个核心知识点 + 实战案例展开,可直接跟着操作复现效果。
  • 深度融合:不割裂 Blender 5.0 新特性与 Python 编程,每个几何节点功能都配套对应的 Python 脚本实现,理解'可视化操作'与'代码控制'的内在关联。
  • 表格驱动:核心知识点、节点参数、代码函数、步骤分解、避坑指南均以表格形式呈现,清晰易懂,便于查阅。
  • 跨度极大:从'三维三角形创建'到'照片级航空仪表',覆盖基础建模、节点逻辑、Python 自动化、纹理渲染、动态效果等全流程,满足不同阶段需求。
  • 实用性强:所有案例均来自实际应用场景(地形生成、体积特效、批量建模、工业仪表),代码可直接复用,节点树可保存为模板。
1.3 阅读建议
  • 环境准备:提前安装 Blender 5.0 并启用 Python 脚本编辑器(后文有详细步骤),建议全程打开 Blender 跟随操作,'动手'比'只读'更有效。
  • 节奏控制:每章建议分 2-3 次学习,先理解核心知识点,再完成实战案例,最后研究 Python 脚本扩展,避免急于求成。
  • 重点标记:对节点参数、Python API、避坑指南等关键内容做好标记,后续实际项目中可快速查阅。
  • 扩展思考:每个案例末尾都有'进阶方向',鼓励大家尝试修改参数、替换节点、扩展功能,培养自主创作能力。
1.4 适用人群
  • 三维建模新手:想快速入门程序化建模,摆脱手动建模的重复劳动。
  • Python 开发者:希望拓展三维可视化、自动化建模方向的技能。
  • 设计师 / 动画师:想提升创作效率,实现批量生成、动态响应等高级效果。
  • 技术爱好者:对 Blender 新特性、Python 与三维工具集成感兴趣的学习者。

第 1 章 环境搭建与基础认知(Nehe Lesson 01:准备工作)

1.1 Blender 5.0 安装与配置
1.1.1 系统要求

Blender 5.0 对硬件有一定要求,尤其是体积计算和渲染时需要较强的 CPU/GPU 性能,建议满足以下配置(最低配置仅能运行基础功能,复杂场景可能卡顿):

配置类型最低配置推荐配置
操作系统Windows 10 64 位 /macOS 12+ / Linux 64 位Windows 11 64 位 /macOS 13+ / Ubuntu 22.04
CPU4 核 Intel i5 / AMD Ryzen 5
8 核 Intel i7 / AMD Ryzen 7
内存8GB16GB 及以上
GPU支持 OpenGL 4.3 的集成显卡NVIDIA RTX 3060 / AMD RX 6600 及以上(支持 CUDA/OptiX)
硬盘10GB 空闲空间(SSD 优先)20GB 空闲空间(NVMe SSD)
其他鼠标滚轮(缩放 / 平移场景)、互联网连接(安装插件)数位板(精细操作)、多显示器(分屏操作)
1.1.2 安装步骤(以 Windows 11 为例)
  1. 下载安装包:访问 Blender 官网,选择 Blender 5.0 版本(默认下载 64 位安装包)。
  2. 运行安装程序:双击下载的 .exe 文件,勾选'同意协议',点击'下一步'。
  3. 选择安装路径:建议安装在非系统盘(如 D:\Blender 5.0),避免系统盘空间不足。
  4. 组件选择:默认勾选'Blender 主程序''Python 3.11 集成环境''关联 .blend 文件',无需修改。
  5. 完成安装:点击'安装',等待进度条完成后,勾选'运行 Blender',点击'完成'。
1.1.3 关键配置(首次启动必做)
  1. 语言设置:启动后点击顶部菜单栏 Edit → Preferences → Interface → Translation,选择'简体中文',点击'Save Preferences'(重启后生效)。
  2. 脚本编辑器启用:点击顶部菜单栏 Window → Toggle System Console,打开系统控制台(用于查看 Python 脚本输出和错误信息)。
  3. 插件启用:点击顶部菜单栏 Edit → Preferences → Add-ons,搜索'Geometry Nodes'(默认已启用)、'Python Scripting'(默认已启用),确保勾选状态。
  4. 性能优化:点击 Edit → Preferences → System,在'Cycles Render Devices'中选择你的 GPU(如 NVIDIA CUDA),在'Memory & Limits'中设置'Tile Size'为 256(提升渲染效率)。
1.2 Python 与 Blender 的联动基础
1.2.1 bpy 模块核心介绍

Blender 内置 Python 3.11 环境,bpy 是 Blender 的核心 Python API,可实现对场景、模型、节点、材质、渲染等所有功能的编程控制。bpy 模块的核心子模块如下:

子模块名称核心功能常用场景
bpy.context获取当前上下文(如当前选中的物体、节点树、场景)实时操作当前对象
bpy.data管理所有数据块(如物体、材质、节点树、纹理)创建 / 删除 / 修改数据
bpy.ops模拟 Blender 手动操作(如添加物体、执行布尔运算)复现手动操作流程
bpy.types定义自定义类型(如自定义节点、运算符)开发插件 / 工具
bpy.utils工具函数(如注册插件、加载纹理)辅助开发
bpy.props定义自定义属性(如给物体添加参数)扩展对象功能
1.2.2 脚本编辑器使用

Blender 内置脚本编辑器,用于编写和运行 Python 脚本:

  1. 打开脚本编辑器:在 Blender 界面顶部选择 Scripting 工作区(默认工作区包括'布局''雕刻''脚本'等)。
  2. 新建脚本:点击脚本编辑器顶部的 New 按钮,创建一个空白脚本文件(默认命名为 Text)。
  3. 保存脚本:点击 Save 按钮,将脚本保存为 .py 文件(如 first_blender_script.py),建议保存在 Blender 项目文件夹中。
  4. 运行脚本:点击脚本编辑器顶部的 Run Script 按钮(▶️ 图标),或按 Alt+P 快捷键运行脚本,结果会在系统控制台中显示。
1.2.3 第一个 Python 脚本:Hello Blender + 创建立方体

下面编写一个简单的 Python 脚本,实现'输出问候语'和'创建一个立方体'的功能,熟悉 bpy 基础用法:

# 第一个 Blender Python 脚本
import bpy

# 1. 清除默认场景(删除默认的立方体、灯光、相机,避免干扰)
bpy.ops.object.select_all(action='SELECT') # 选中所有物体
bpy.ops.object.delete() # 删除选中物体

# 2. 输出问候语到系统控制台
print("=" * 50)
print("Hello Blender 5.0!")
print("=" * 50)

# 3. 创建一个立方体(通过 bpy.ops 模拟手动操作)
bpy.ops.mesh.primitive_cube_add(
    size=2, # 立方体大小
    location=(0, 0, 0), # 位置(x, y, z)
    rotation=(0, 0, 0) # 旋转(弧度制,0 表示无旋转)
)

# 4. 获取创建的立方体对象,并重命名
cube = bpy.context.active_object # 获取当前激活的物体(即刚创建的立方体)
cube.name = "MyFirstCube" # 重命名物体
cube.data.name = "MyFirstCube_Mesh" # 重命名网格数据

# 5. 给立方体添加自定义属性(用于后续控制)
cube["cube_size"] = 2 # 添加一个名为 cube_size 的属性,值为 2

print(f"创建的立方体名称:{cube.name}")
print(f"立方体位置:{cube.location}")
print(f"立方体自定义属性 cube_size:{cube['cube_size']}")

运行脚本后,在系统控制台会看到输出信息,同时在 3D 视图中会出现一个名为 MyFirstCube 的立方体。

1.2.4 脚本运行常见问题排查
错误现象可能原因解决方案
运行脚本无反应脚本编辑器未选中脚本文件点击脚本编辑器中的文本区域,确保脚本文件处于激活状态
报错 'AttributeError: 'NoneType' object has no attribute 'name''未获取到物体(可能是删除默认物体后未创建新物体)检查脚本中创建物体的代码是否正确,确保 bpy.context.active_object 不为空
报错 'Operator bpy.ops.mesh.primitive_cube_add.poll () failed, context is incorrect'上下文错误(如在脚本编辑器中运行时,上下文未指向 3D 视图)在脚本开头添加 bpy.context.scene.cursor.location = (0,0,0),或切换到'布局'工作区后再运行
中文乱码脚本文件编码不是 UTF-8保存脚本时选择编码为'UTF-8',或在脚本开头添加 # -*- coding: utf-8 -*-
1.3 三维图形核心概念(Blender 视角)

在开始后续学习前,需掌握以下三维图形核心概念,这些概念是理解几何节点和 Python 编程的基础:

概念名称定义(Blender 视角)对应工具 / 节点
点(Vertex)三维空间中的最小单位,由 (x, y, z) 坐标定义顶点编辑模式、位置节点
边(Edge)连接两个点的线段,构成网格的骨架边编辑模式、网格节点
面(Face)由三条及以上边围成的封闭区域,构成模型的表面面编辑模式、网格布尔节点
网格(Mesh)由点、边、面组成的三维模型(如立方体、球体)网格节点、bpy.data.meshes
体积(Volume)三维空间中的'实心'结构,由体积网格(Volume Grid)描述体积节点、OpenVDB 集成
场(Field)作用于整个几何体的参数集合(如力场、颜色场、位置场)场节点、属性节点
有符号距离场(SDF)通过距离值描述体积形态的技术(正距离表示外部,负距离表示内部)SDF 节点、体积布尔节点
实例(Instance)虚拟复制的物体,不占用额外内存,可批量生成实例节点、bpy.data.instances
节点树(Node Tree)由多个节点连接形成的逻辑链,用于实现程序化效果几何节点编辑器、bpy.data.node_groups
包(Bundles)Blender 5.0 新增数据容器,可一次性传递多组数据(几何、颜色、数值等)包节点、Python 数据打包
闭包(Closures)Blender 5.0 新增功能容器,可将自定义逻辑注入其他节点组闭包节点、Python 自定义逻辑
1.4 几何节点工作流基础
1.4.1 几何节点核心工作流

几何节点的核心是'通过节点连接实现数据流转和逻辑运算',最终修改或生成三维模型 / 效果。其基础工作流如下:

步骤操作说明对应工具
1. 创建节点树给物体添加几何节点修改器,并创建节点树几何节点修改器、bpy.data.node_groups.new()
2. 添加节点从节点库中添加所需节点(如输入节点、几何节点、输出节点)节点编辑器、node_tree.nodes.new()
3. 连接节点通过拖拽连线,将一个节点的输出端连接到另一个节点的输入端节点编辑器、node_tree.links.new()
4. 调整参数修改节点的参数(如数值、布尔值、路径),实时预览效果节点参数面板、Python 脚本修改
5. 调试优化使用预览节点查看数据,排查连线错误或参数问题预览节点、系统控制台
6. 输出渲染将节点树连接到节点组输出节点,渲染最终效果节点组输出节点、渲染引擎
1.4.2 手动创建第一个几何节点树(以'移动立方体'为例)
  1. 切换到'布局'工作区,删除默认物体(立方体、灯光、相机)。
  2. 添加一个新立方体:点击顶部菜单栏 Add → Mesh → Cube,创建一个默认立方体。
  3. 添加几何节点修改器:选中立方体,在右侧'属性'面板中选择 修改器 → 添加修改器 → Geometry Nodes。
  4. 进入几何节点编辑器:在顶部工作区选择 Geometry Nodes,此时会看到默认的节点树(包含'Group Input''Group Output'节点)。
  5. 添加节点:
    • 点击节点编辑器顶部的 Add → Input → Value,添加一个数值输入节点(命名为'移动距离')。
    • 点击 Add → Geometry → Position,添加位置节点(读取立方体顶点位置)。
    • 点击 Add → Vector → Add,添加向量相加节点(将位置与移动距离相加)。
    • 点击 Add → Geometry → Set Position,添加设置位置节点(修改立方体顶点位置)。
  6. 连接节点:
    • 将'Group Input'的'Geometry'输出端 → 连接到'Position'的'Geometry'输入端。
    • 将'Position'的'Position'输出端 → 连接到'Add'的'Vector'输入端。
    • 将'Value'(移动距离)的'Value'输出端 → 连接到'Add'的'Vector'输入端(第二个)。
    • 将'Add'的'Vector'输出端 → 连接到'Set Position'的'Position'输入端。
    • 将'Set Position'的'Geometry'输出端 → 连接到'Group Output'的'Geometry'输入端。
  7. 调整参数:修改'Value'节点的数值为 1.5,此时 3D 视图中的立方体会沿 X 轴移动 1.5 个单位(默认向量相加的方向为 X 轴)。
1.4.3 Python 脚本创建第一个几何节点树(复刻手动操作)

下面用 Python 脚本复刻上述'移动立方体'的几何节点树,理解'手动操作'与'代码控制'的对应关系:

# Python 脚本创建'移动立方体'几何节点树
import bpy

# 步骤 1:清除默认场景
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()

# 步骤 2:创建立方体
bpy.ops.mesh.primitive_cube_add(size=2, location=(0, 0, 0))
cube = bpy.context.active_object
cube.name = "MovableCube"

# 步骤 3:给立方体添加几何节点修改器
geo_mod = cube.modifiers.new(name="MoveCubeModifier", type='NODES')

# 步骤 4:创建节点树
node_tree = bpy.data.node_groups.new(name="MoveCubeNodeTree", type='GeometryNodeTree')
geo_mod.node_group = node_tree

# 步骤 5:添加输入/输出节点(必须先添加,否则无法连接)
# 添加 Group Input 节点
group_input = node_tree.nodes.new(type='NodeGroupInput')
group_input.location = (-400, 0) # 节点在编辑器中的位置(x, y)

# 添加 Group Output 节点
group_output = node_tree.nodes.new(type='NodeGroupOutput')
group_output.location = (400, 0)

# 步骤 6:添加核心节点
# 添加 Value 节点(移动距离)
value_node = node_tree.nodes.new(type='ShaderNodeValue')
value_node.name = "MoveDistance"
value_node.label = "移动距离"
value_node.location = (-300, 100)
value_node.outputs[0].default_value = 1.5 # 默认移动距离 1.5

# 添加 Position 节点(读取位置)
position_node = node_tree.nodes.new(type='GeometryNodeInputPosition')
position_node.name = "ReadPosition"
position_node.label = "读取位置"
position_node.location = (-200, 0)

# 添加 Vector Add 节点(向量相加)
add_node = node_tree.nodes.new(type='ShaderNodeVectorMath')
add_node.name = "VectorAdd"
add_node.label = "向量相加"
add_node.location = (0, 0)
add_node.operation = 'ADD' # 运算类型:相加

# 添加 Set Position 节点(设置位置)
set_position_node = node_tree.nodes.new(type='GeometryNodeSetPosition')
set_position_node.name = "SetPosition"
set_position_node.label = "设置位置"
set_position_node.location = (200, 0)

# 步骤 7:连接节点(通过 links.new 连接两个节点的端口)
# 辅助函数:获取节点的输入/输出端口(避免硬编码索引)
def get_input_port(node, port_name):
    return node.inputs[port_name]

def get_output_port(node, port_name):
    return node.outputs[port_name]

# 连接 Group Input → Position
node_tree.links.new(
    get_output_port(group_input, "Geometry"),
    get_input_port(position_node, "Geometry")
)

# 连接 Position → Vector Add(第一个向量)
node_tree.links.new(
    get_output_port(position_node, "Position"),
    get_input_port(add_node, "Vector")
)

# 连接 Value → Vector Add(第二个向量)
node_tree.links.new(
    get_output_port(value_node, "Value"),
    get_input_port(add_node, "Vector_001")
)

# 连接 Vector Add → Set Position
node_tree.links.new(
    get_output_port(add_node, "Vector"),
    get_input_port(set_position_node, "Position")
)

# 连接 Set Position → Group Output
node_tree.links.new(
    get_output_port(set_position_node, "Geometry"),
    get_input_port(group_output, "Geometry")
)

# 步骤 8:输出信息
print("几何节点树创建完成!")
print(f"节点树名称:{node_tree.name}")
print(f"包含节点:{[node.name for node in node_tree.nodes]}")
print(f"立方体移动距离:{value_node.outputs[0].default_value}")

运行脚本后,会自动创建立方体和对应的几何节点树,效果与手动操作完全一致。通过这个例子,我们可以看到:Blender 的所有手动操作,都可以通过 Python 脚本精准复现。

1.5 本章小结与进阶方向
1.5.1 核心知识点回顾
  • 完成了 Blender 5.0 的安装与关键配置,确保几何节点和 Python 脚本功能正常。
  • 熟悉了 bpy 核心模块和脚本编辑器的使用,能编写简单的 Python 脚本创建物体。
  • 掌握了三维图形核心概念(点线面、网格、体积、场等),为后续学习打下基础。
  • 理解了几何节点的基础工作流,能手动和通过 Python 脚本创建简单的节点树。
1.5.2 进阶方向
  1. 尝试修改'移动立方体'脚本中的参数(如移动距离、立方体大小、位置),观察效果变化。
  2. 给节点树添加更多节点(如颜色节点),让立方体移动的同时改变颜色。
  3. 学习 bpy 中节点参数的动态修改(如通过脚本实时调整'移动距离'的值)。
  4. 尝试创建多个立方体,并给每个立方体分配不同的几何节点树。

目录

  1. 前言
  2. 1.1 为什么选择 Blender 5.0 + Python?
  3. 1.2 本文核心亮点
  4. 1.3 阅读建议
  5. 1.4 适用人群
  6. 第 1 章 环境搭建与基础认知(Nehe Lesson 01:准备工作)
  7. 1.1 Blender 5.0 安装与配置
  8. 1.1.1 系统要求
  9. 1.1.2 安装步骤(以 Windows 11 为例)
  10. 1.1.3 关键配置(首次启动必做)
  11. 1.2 Python 与 Blender 的联动基础
  12. 1.2.1 bpy 模块核心介绍
  13. 1.2.2 脚本编辑器使用
  14. 1.2.3 第一个 Python 脚本:Hello Blender + 创建立方体
  15. 第一个 Blender Python 脚本
  16. 1. 清除默认场景(删除默认的立方体、灯光、相机,避免干扰)
  17. 2. 输出问候语到系统控制台
  18. 3. 创建一个立方体(通过 bpy.ops 模拟手动操作)
  19. 4. 获取创建的立方体对象,并重命名
  20. 5. 给立方体添加自定义属性(用于后续控制)
  21. 1.2.4 脚本运行常见问题排查
  22. 1.3 三维图形核心概念(Blender 视角)
  23. 1.4 几何节点工作流基础
  24. 1.4.1 几何节点核心工作流
  25. 1.4.2 手动创建第一个几何节点树(以“移动立方体”为例)
  26. 1.4.3 Python 脚本创建第一个几何节点树(复刻手动操作)
  27. Python 脚本创建“移动立方体”几何节点树
  28. 步骤 1:清除默认场景
  29. 步骤 2:创建立方体
  30. 步骤 3:给立方体添加几何节点修改器
  31. 步骤 4:创建节点树
  32. 步骤 5:添加输入/输出节点(必须先添加,否则无法连接)
  33. 添加 Group Input 节点
  34. 添加 Group Output 节点
  35. 步骤 6:添加核心节点
  36. 添加 Value 节点(移动距离)
  37. 添加 Position 节点(读取位置)
  38. 添加 Vector Add 节点(向量相加)
  39. 添加 Set Position 节点(设置位置)
  40. 步骤 7:连接节点(通过 links.new 连接两个节点的端口)
  41. 辅助函数:获取节点的输入/输出端口(避免硬编码索引)
  42. 连接 Group Input → Position
  43. 连接 Position → Vector Add(第一个向量)
  44. 连接 Value → Vector Add(第二个向量)
  45. 连接 Vector Add → Set Position
  46. 连接 Set Position → Group Output
  47. 步骤 8:输出信息
  48. 1.5 本章小结与进阶方向
  49. 1.5.1 核心知识点回顾
  50. 1.5.2 进阶方向

更多推荐文章

查看全部
  • Webots 导入 STL 模型的正确姿势:尺寸缩放与材质设置
  • 常见 AI 模型与编程术语美式发音速查表
  • Java SpringBoot+Vue3+MyBatis 仓库管理系统设计与实现
  • 基于 cpolar 内网穿透远程部署 Open-Lovable 网页克隆工具
  • Ubuntu 20.04 手动安装 JDK 17 实战指南
  • Scrapy-Redis 分布式爬虫架构:IP 代理池集成与跨地域采集
  • QClaw 上手指南:本地 AI 代理的桌面化实践
  • Python 体育数据爬虫:基于 Playwright 与异步技术的高性能采集
  • Spring Cloud Gateway 路由、过滤器与限流机制详解
  • Pi0 机器人大模型在昇腾 A2 上的性能测评
  • 基于 AI 生成的在线考试系统全流程技术实现
  • FPGA 快速傅里叶变换(FFT)IP 核配置与实现
  • Ubuntu 22.04 中的版本控制系统 Git 实战
  • 宇树 G1 机器人开发入门:有线与无线连接配置指南
  • AI生成HTML原型导入Axure实操指南
  • MCP 插件配置指南:browser-tools-mcp 示例
  • 资深安全工程师推荐的9本黑客技术经典书籍
  • C++ 模板与 string 类使用指南
  • Jupyter 安装指南:Anaconda、pip 及 Docker 方式
  • HOG+SVM 目标检测原理与 Python 实现

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online