用途
Blender Interactive 是一个基于 TCP 套接字的双向通信技能,用于实时操控 Blender。它运行在 MiniPC 的无头(headless)Blender 5.0.1 上,通过常驻套接字服务器接收命令,实现实时场景操作、状态查询以及 Poly Haven/Sketchfab 资产集成。
该技能与既有的 blender-pipeline(批处理)技能互补:blender-pipeline 适合一次性脚本执行、批量转换、精灵表与程序化生成;blender-interactive 适合复杂场景构建、重复操作和需要实时反馈的场景。选择标准为:简单转换/批处理使用 blender-pipeline;复杂场景构建、重复操作、需要状态确认时使用 blender-interactive。
架构
系统由 Clawdbot(运行于 Mac Studio)通过 nodes.run 调用 MiniPC 上的 Blender 5.0.1(headless),经由 TCP 端口 9876 进行 JSON 通信。Blender 端加载 socket_addon 作为套接字服务器。
主要能力
- 系统命令:ping(检查服务器状态并列出命令)。
- 场景查询:get_scene_info(获取整个场景状态,包括对象、相机、灯光、分辨率等)、get_object_info(获取指定对象的网格、材质、包围盒等详情)。
- 对象操作:create_object(创建基础网格,支持 CUBE/SPHERE/PLANE/CYLINDER/CONE/TORUS/MONKEY)、delete_object(删除对象)、modify_object(修改变换,包括位置、旋转、缩放、可见性)。
- 材质:set_material(设置 PBR 材质,包括颜色、金属度、粗糙度、材质名)。
- 渲染:render_preview(快速预览,默认 512x512、32 采样)、render_to_file(高质量渲染,可指定格式、分辨率、采样、引擎)。
- 文件管理:save_blend、load_blend、import_model(支持 glTF/FBX/OBJ/STL/PLY)、export_model、clear_scene。
- 代码执行:execute_code(执行任意 Python 代码,提供最大灵活性)。
- Poly Haven 资产集成:通过 polyhaven.py 脚本搜索、下载 CC0 免费资产(HDRI、纹理、3D 模型),支持按类别查询、搜索、指定分辨率与格式下载。
使用方式
- 启动服务器(MiniPC):使用 nodes.run 执行 blender 命令加载 blender_socket_addon.py 并指定端口 9876,或使用 start_server.sh 脚本。
- 发送命令:通过 blender_client.py 脚本发送命令,例如 ping、get_scene_info、create_object、set_material、render_preview 等,参数以 JSON 形式传递。
- 停止服务器:使用 start_server.sh --stop。
Poly Haven 集成示例:使用 polyhaven.py 的 categories、search、download 子命令获取纹理、HDRI 或模型,然后通过 execute_code 在 Blender 中应用。
协议详情
请求格式为 JSON:{"type": "command_name", "params": {...}}。响应格式为 {"status": "success", "result": {...}} 或 {"status": "error", "message": "..."}。通信基于 TCP 套接字,默认端口 9876,超时 300 秒,命令在 Blender 主线程中执行(通过 bpy.app.timers),支持多客户端顺序处理。
部署
可将技能文件夹通过 scp 或 base64 传输到 MiniPC。支持 systemd 用户服务自动启动,服务文件示例已提供。
限制
- 无头限制:无法截取视口截图,需使用 render_preview 通过 Cycles CPU 渲染(较慢但准确);无法使用 EEVEE(无头环境需要 GPU),仅支持 Cycles CPU;无实时预览,只能通过渲染结果确认。
- 性能:MiniPC(8GB RAM)建议使用低多边形场景,复杂场景可能内存不足;Cycles CPU 渲染 512x512、32 采样约需 5-15 秒;大型 Poly Haven 资产(如 4k 纹理)会占用较多内存,建议使用 1k-2k。
- 安全:execute_code 可执行任意代码,在受控的 MiniPC 环境中可接受;若对外暴露,应使用 --host 127.0.0.1 仅绑定本地。
文件结构
blender-interactive/ 包含 SKILL.md(文档)、blender_socket_addon.py(Blender 套接字服务器核心)以及 scripts/ 目录下的 blender_client.py(命令发送客户端)、polyhaven.py(Poly Haven API 客户端)、start_server.sh(服务器启动/停止脚本)。