一个Blender插件,作为在Blender和ComfyUI之间进行实时、双向通信的桥梁。
这个插件允许您在Blender中一键将渲染结果或图像数据无缝地发送到ComfyUI中一个预设好的工作流进行处理,然后将处理后的图像自动返回到Blender中。
- 一键发送数据: 在Blender的3D视图侧边栏中提供一个简洁的UI面板,点击按钮即可渲染当前场景并将图像数据发送到ComfyUI。
- 强大的图像格式支持:
- 标准图像 (PNG/JPG): 快速发送预览图。
- 多通道EXR (Multi-Layer EXR): 将所有渲染通道 (如
Depth,Mist,Normal,AO等) 无损地打包到一个 EXR 文件中发送,为下游的图像处理提供最大的灵活性。
- 灵活的网络连接:
- 直接连接: 在本地网络环境中直接连接到ComfyUI。
- SSH隧道: 内置SSH隧道功能,允许您通过安全的SSH连接,将本地Blender实例与远程服务器上的ComfyUI无缝对接,无需手动配置端口转发。
- 智能数据传输: 插件通过内存直接发送图像的二进制数据,无需共享文件系统,支持跨机器、跨容器的复杂网络环境。
- 实时连接状态: UI会实时显示与ComfyUI的连接状态(已连接/未连接)。
- 双向通信:
- Blender -> ComfyUI: 通过ZMQ发送渲染任务、元数据和图像二进制数据。
- ComfyUI -> Blender: 通过HTTP将处理完成的图像数据发送回Blender。
- 全自动依赖管理: 插件首次启用时,会自动通过Blender内置的Python环境安装所有必需的依赖库 (
sshtunnel,paramiko,pyzmq,msgspec),无需手动操作。 - 后台任务处理: 使用Blender的
bpy.app.timers来稳定地处理来自ComfyUI的异步任务,不阻塞UI。 - 健壮的错误处理: 包含连接测试、超时和错误报告机制。
- Blender: 4.0 或更高版本
- ComfyUI: 运行中的服务器实例
- 网络: 稳定的网络连接(用于依赖安装)
首先,确保您已经在ComfyUI中安装了兼容的接收节点。该节点需要能够处理来自Blender的多部分ZMQ消息。
推荐节点: 在 ComfyUI-Manager 中搜索 "Blender Bridge" 或直接安装本插件配套的接收节点。
步骤:
-
下载插件
- 访问 Releases 页面
- 下载最新版本的
Blender-ComfyUI-Bridge-vX.X.zip文件 - 例如:
Blender-ComfyUI-Bridge-v1.0.0.zip
-
在 Blender 中安装
Blender -> 编辑 -> 偏好设置 -> 插件 -
安装文件
- 点击
安装...按钮 - 选择您刚刚下载的
.zip文件 - 等待安装完成
- 点击
-
启用插件
- 在插件列表中找到 "Blender-ComfyUI Bridge"
- 勾选复选框以启用插件
- 点击
保存用户设置
-
自动依赖安装
- 插件首次启用时会自动检测并安装所需的依赖
- 打开
窗口 -> 切换系统控制台查看安装日志 - 等待安装完成(可能需要几十秒到几分钟)
- 重要:安装完成后建议重启 Blender
-
克隆仓库
git clone https://github.com/ageless-h/Blender-ComfyUI-Bridge.git cd Blender-ComfyUI-Bridge -
复制插件目录
- 将
blender_addon目录复制到 Blender 的插件目录:# Windows C:\Users\YourName\AppData\Roaming\Blender Foundation\Blender\4.0\scripts\addons\ # macOS /Users/YourName/Library/Application Support/Blender/4.0/scripts/addons/ # Linux ~/.config/blender/4.0/scripts/addons/
- 将
-
手动安装依赖(如果自动安装失败)
cd blender_addon pip install -r requirements.txt
- 打开 Blender
- 按
N键打开侧边栏 - 检查是否看到
ComfyUI选项卡 - 如果看到,安装成功!✅
- 在 Blender 的 3D 视图中,按
N键打开侧边栏 - 向下滚动找到
ComfyUI选项卡
适用场景:ComfyUI 与 Blender 在同一台电脑或同一局域网
- 在"连接设置"区域,取消勾选"启用 SSH 隧道"
- 输入 ComfyUI 服务器的 ZMQ 地址
- 本地默认:
127.0.0.1:5555 - 确认 ComfyUI 的 ZMQ 端口(通常在 5555)
- 本地默认:
- 点击"测试连接"按钮
- 等待状态变为"已连接"(绿色)
适用场景:ComfyUI 在远程服务器上
- 勾选"启用 SSH 隧道"
- 填写 SSH 服务器信息:
- 主机:
192.168.1.100(示例 IP) - 端口:
22(默认 SSH 端口) - 用户名:
your-username - 密码: 或选择私钥路径
- 主机:
- 重要:在"ComfyUI 服务器地址"中填写的地址是相对于 SSH 服务器的地址
- 例如:如果 ComfyUI 在 SSH 服务器上运行,通常填写
127.0.0.1:5555 - 如果 ComfyUI 在另一台机器,填写实际的 IP 地址,如
192.168.1.200:5555
- 例如:如果 ComfyUI 在 SSH 服务器上运行,通常填写
- 点击"建立 SSH 隧道"按钮
- 等待隧道建立成功(状态显示"已连接")
- 在"结果接收"区域,点击文件夹图标
- 选择一个 Blender 的图像数据块(Image Block)
- 最好选择一个空的数据块,方便接收结果
发送渲染结果:
- 选择"渲染结果"标签页
- 选择图像格式:
- 标准图像 (PNG/JPG):适合快速预览
- 多通道 EXR:包含所有渲染通道(Depth, Normal, AO 等)
- 点击"渲染并发送"按钮
- Blender 会渲染当前场景并将图像数据发送到 ComfyUI
发送现有图像:
- 切换到"图像编辑器"标签页
- 打开要发送的图像
- 点击"发送当前图像"按钮
- 图像会被发送到 ComfyUI
- ComfyUI 处理完成后,结果会自动出现在你在第三步选择的图像数据块中
- 你可以在 Blender 的图像编辑器中查看处理后的结果
场景:在 Blender 中渲染一个角色,然后在 ComfyUI 中进行风格化处理。
Blender (本地)
├─ 渲染角色
├─ 发送渲染结果到 ComfyUI
├─ ComfyUI (本地网络)
│ ├─ 风格化处理
│ ├─ 生成风格化图像
│ └─ 返回结果到 Blender
└─ Blender 接收并显示结果
效果:快速迭代的本地 + AI 工作流,无需手动文件传输。
场景:在本地 Blender 中建模,在远程 ComfyUI 服务器上渲染,使用 SSH 隧道连接。
Blender (本地)
├─ 发送模型数据到 ComfyUI
├─ 通过 SSH 隧道连接
├─ ComfyUI (远程服务器)
│ ├─ 高质量渲染
│ ├─ 生成渲染结果
│ └─ 通过 HTTP 返回到 Blender
└─ Blender 接收并显示
优势:
- 利用远程服务器的强大 GPU
- 节省本地计算资源
- 支持跨平台工作
场景:将 Blender 中渲染的多个不同场景发送到 ComfyUI 批量处理。
1. 场景1渲染 → 发送到 ComfyUI
2. 场景2渲染 → 发送到 ComfyUI
3. 场景3渲染 → 发送到 ComfyUI
4. ComfyUI 批量处理并返回所有结果
工作流提示:
- 可以在 Blender 中设置不同的输出数据块,方便接收不同场景的结果
A: 按照以下步骤排查:
- 确认插件已启用(编辑 → 插件 → 勾选)
- 重启 Blender(完全关闭后重新打开)
- 按
N键打开侧边栏 - 如果仍然看不到,检查 Blender 控制台是否有错误消息
A: 检查以下项目:
- ComfyUI 是否运行中?确保 ComfyUI 服务器正在运行
- ZMQ 端口是否正确?默认是
5555,确认 ComfyUI 的 ZMQ 端口 - 防火墙?检查本地或远程服务器的防火墙是否阻止连接
- 地址是否正确?
- 直接连接:
127.0.0.1:5555 - SSH 隧道:确保是相对于 SSH 服务器的地址
- 直接连接:
- 尝试使用 ComfyUI 的 IP 地址而不是
localhost
A: 常见问题和解决方案:
- 私钥路径错误:确保私钥文件存在且路径正确
- SSH 服务未运行:确认 SSH 服务器上的 SSH 服务正在运行(端口 22)
- 密码认证失败:尝试使用 SSH 密钥认证,更安全
- 网络问题:尝试先
ssh命令手动连接,确认 SSH 连接正常
A: 检查以下几点:
- ComfyUI 工作流是否正确配置?确保接收节点在运行
- 结果数据块是否选择?确认在 Blender 中选择了接收数据的图像块
- 查看 Blender 系统控制台:检查是否有错误消息
- ComfyUI 是否有错误?检查 ComfyUI 的日志/控制台输出
A: 多通道 EXR 需要正确的接收节点:
- 确保接收节点支持
channel_map - 使用支持的接收节点(通常会在节点描述中说明)
- 检查 EXR 文件是否正确生成(可以先用 Blender 打开查看)
A: 目前插件在接收数据后不会自动停止,但可以:
- 关闭 Blender 或重新打开场景
- 停止 ComfyUI 工作流
- SSH 隧道会自动断开(如果设置了超时)
📌 提示:详细的安装和使用视频教程正在制作中,敬请期待!
- 安装教程 - 从下载到首次使用的完整流程
- 基础工作流演示 - 展示从 Blender 发送到 ComfyUI 的完整过程
- SSH 隧道配置 - 如何设置远程 ComfyUI 连接
- 多通道 EXR 使用 - 如何利用多通道渲染数据
- 故障排查指南 - 常见问题的解决方法
- 图文教程可能不够直观
- 实际操作演示更易于理解
- 涵盖更多使用场景和边缘情况
本插件通过ZMQ的REQ/REP模式与ComfyUI节点通信,并采用多部分消息 (Multipart Message) 的格式发送数据。
节点接收到的ZMQ消息包含 2 个部分:
-
Part 1: 元数据 (Metadata)
- 类型:
msgspec编码的字典 (JSON)。 - 内容: 包含操作指令和图像信息。
- 类型:
-
Part 2: 图像二进制数据 (Image Bytes)
- 类型: 原始字节流 (
bytes)。 - 内容:
.png或.exr文件的完整二进制内容。
- 类型: 原始字节流 (
接收节点必须使用 socket.recv_multipart() 来正确解析这两个部分。
元数据字典中包含以下关键字段:
-
render_type(字符串):'standard': 表示第二部分数据是标准的 PNG/JPG 图像。'multilayer_exr': 表示第二部分数据是多通道 EXR 图像。- 接收节点必须根据此字段来决定处理逻辑。
-
channel_map(字典):- 仅在
render_type为'multilayer_exr'时提供。 - 这是一个"翻译地图",用于将ComfyUI期望的通道名 (key) 映射到EXR文件中实际的通道名 (value)。
- 示例:
{'volume_direct': 'ViewLayer.VolumeDir', 'ambient_occlusion': 'ViewLayer.AO'}。 - 接收节点在处理EXR时,必须使用此map来查找通道,而不是硬编码通道名。
- 仅在
我们欢迎各种形式的贡献!
发现任何问题?请创建 Issue:
- 详细描述问题
- 提供复现步骤
- 附上相关日志或截图
- 说明您的 Blender 和 ComfyUI 版本
有新功能想法?请:
- 先在 Discussions 中讨论
- 确认功能需求和实现可行性
- 创建 Issue 跟踪开发进度
准备贡献代码?
- Fork 本仓库 2