第一章:插件开发环境搭建

做Blender插件开发,第一步就是把环境搭好。这就像盖房子打地基,地基不稳后面全是坑。我个人习惯先把整套流程跑通,再开始写代码。今天我们就从零开始,把开发环境一步步搭起来。

1.1 Blender插件的基础结构

一个Blender插件,说白了就是一个Python脚本文件,或者一个包含多个脚本的文件夹。但Blender有它自己的规矩——你得按它的格式来组织代码。

最基本的插件结构长这样:

my_addon/
├── __init__.py      # 插件入口文件,必须有
├── operators.py     # 操作符(可选)
├── ui.py           # 界面(可选)
└── properties.py   # 属性定义(可选)

嗯,这里要注意:__init__.py 是必须的,Blender就是通过这个文件来识别和加载你的插件。其他文件你可以按需拆分,但入口文件不能少。

核心要点:每个插件必须有一个 bl_info 字典,里面包含插件名称、版本、作者、描述等信息。这是Blender识别插件的身份证。

来看一个最简单的 __init__.py 示例:

bl_info = {
    "name": "我的硬表面工具",
    "author": "你的名字",
    "version": (1, 0, 0),
    "blender": (3, 6, 0),
    "location": "View3D > Sidebar > 硬表面",
    "description": "硬表面建模效率提升工具集",
    "category": "Object",
}

import bpy

class HelloWorldOperator(bpy.types.Operator):
    """测试操作符"""
    bl_idname = "object.hello_world"
    bl_label = "Hello World"
    
    def execute(self, context):
        self.report({'INFO'}, "插件加载成功!")
        return {'FINISHED'}

def register():
    bpy.utils.register_class(HelloWorldOperator)

def unregister():
    bpy.utils.unregister_class(HelloWorldOperator)

if __name__ == "__main__":
    register()

这段代码虽然简单,但包含了插件的全部骨架。我在项目中遇到过很多新手把 bl_idname 写重复了,结果插件死活加载不上。记住:bl_idname 在整个Blender里必须是唯一的。

1.2 Python环境配置

Blender自带了一个Python解释器,但你最好别直接用。为什么?因为自带的Python里很多第三方库都没装,比如 numpyPillow 这些常用库。

我个人习惯用系统Python来开发,调试完再移植到Blender环境。具体做法是:

  1. 安装Python 3.10或3.11(和你的Blender版本匹配)
  2. pip 安装常用库:pip install numpy pillow
  3. 设置环境变量,让Blender能找到你的Python

小技巧:想知道Blender用的是哪个Python版本?打开Blender的Python控制台,输入 import sys; print(sys.version) 就能看到。

我曾经踩过一个坑:用系统Python 3.12写了个插件,结果Blender 3.6只支持到Python 3.10,所有代码都跑不起来。所以版本匹配这事,千万别马虎。

1.3 VS Code调试设置

写插件最痛苦的是什么?调试。没有断点、没有变量监视,全靠 print() 输出,效率低得让人抓狂。还好VS Code可以帮我们解决这个问题。

配置步骤其实不复杂:

  1. 安装VS Code和Python扩展
  2. 创建一个 .vscode/launch.json 文件
  3. 配置Blender作为调试目标

这是我的 launch.json 配置,你可以直接复制:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Blender Debug",
            "type": "python",
            "request": "launch",
            "program": "C:/Program Files/Blender Foundation/Blender 3.6/blender.exe",
            "args": [
                "--python-exit-code", "1",
                "--python", "${file}"
            ],
            "console": "integratedTerminal",
            "justMyCode": true
        }
    ]
}

注意:路径里的Blender版本号要改成你自己的。另外,Windows和Mac的路径格式不一样,记得调整。

配置好之后,按F5就能启动Blender并加载你的插件。断点可以打在Python代码的任何位置,调试体验和普通Python开发一模一样。

1.4 插件模板创建

每次写新插件都要从头敲一遍基础结构?太累了。我建议你做一个自己的模板,以后直接复制粘贴。

我的模板包含这些内容:

文件 作用 必填
__init__.py 插件入口,包含bl_info和注册逻辑
operators.py 所有操作符定义
ui.py 面板和菜单定义
properties.py 自定义属性
utils.py 工具函数

你想想看,有了模板之后,每次新建插件只需要改 bl_info 里的名字和描述,然后直接往对应文件里加功能代码就行了。省时省力,还不会漏掉关键结构。

我的建议:把模板放在一个专门的文件夹里,比如 D:/blender_addon_template。每次新建项目就复制一份,改个名字直接开干。

下面这张图展示了整个开发环境的搭建流程,你可以对照着一步步来:

插件开发环境搭建流程 步骤1:基础结构 创建 __init__.py 定义 bl_info 步骤2:Python环境 安装匹配版本 配置第三方库 步骤3:VS Code调试 配置 launch.json 设置断点调试 步骤4:创建模板 标准化文件结构 一键复用 ✅ 开发环境就绪 可以开始写插件了 ⚠️ 常见避坑指南 • 版本匹配:Blender 3.6 对应 Python 3.10 • bl_idname 必须全局唯一,不能和其他插件冲突 • 调试时用 --python-exit-code 1 捕获错误

说实话,环境搭建这一步虽然看起来琐碎,但一次配好后面能省无数时间。我见过太多人因为环境没配好,写了两天代码才发现调试不了,最后全部重来。所以,花半小时把这一步做扎实,绝对值。

个人经验:配好环境后,先跑一个最简单的 "Hello World" 插件验证一下。确认能加载、能调试,再开始写复杂功能。这样出了问题你能快速定位是环境问题还是代码问题。

好了,环境搭好了,模板也准备好了。接下来就可以正式开始写插件功能了。记住:好的开始是成功的一半,这一步走稳了,后面就顺了。


公众号:蓝海资料掘金营,微信deep3321