news 2026/4/23 15:43:51

ai blender流水线制作mod第一步,画个立方体

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ai blender流水线制作mod第一步,画个立方体

不就是类似blender-mcp的东西吗

ai blender流水线制作mod第一步,画个立方体_哔哩哔哩_bilibili

blender 开放exec接口的插件 连接ide vscode-CSDN博客

ai流水线式调用命令-CSDN博客

{ "tools": [ { "name": "get_all_objects", "path": "blender_cline/blender_api_tool.py", "description": "获取Blender当前场景中的所有物体", "parameters": [], "examples": [ "[TOOL:get_all_objects]" ] }, { "name": "delete_all_objects", "path": "blender_cline/blender_api_tool.py", "description": "删除Blender当前场景中的所有物体", "parameters": [], "examples": [ "[TOOL:delete_all_objects]" ] }, { "name": "create_cube", "path": "blender_cline/blender_api_tool.py", "description": "在Blender场景中创建一个立方体", "parameters": [], "examples": [ "[TOOL:create_cube]" ] }, { "name": "activate_blender", "path": "blender_cline/blender_api_tool.py", "description": "激活Blender窗口,将Blender应用带到前台", "parameters": [], "examples": [ "[TOOL:activate_blender]" ] } ] }
import sys import os import requests import json import subprocess import platform def call_blender_api(endpoint, code): """ 调用Blender API执行代码 """ url = f"http://localhost:8080{endpoint}" payload = { "code": code } try: response = requests.post(url, json=payload) return response.json() except requests.exceptions.RequestException as e: print(f"请求错误: {e}") return None def activate_blender_window(): """ 激活Blender窗口(精确匹配窗口标题) """ try: import pygetwindow as gw except ImportError: print("pygetwindow未安装,请运行: pip install pygetwindow") return False try: # 获取所有窗口 all_windows = gw.getAllWindows() blender_window = None for window in all_windows: window_title = window.title.strip() # 多种可能的Blender标题格式 if (window_title == 'Blender' or # 基础标题 window_title.startswith('Blender') and not any(exclude in window_title.lower() for exclude in ['vscode', 'visual studio', 'code'])): # 额外检查确保不是VSCode或其他编辑器 if ' - ' not in window_title or 'blender.exe' in window_title.lower(): blender_window = window break if blender_window: print(f"激活窗口: {blender_window.title}") try: import win32gui import win32con hwnd = blender_window._hWnd win32gui.ShowWindow(hwnd, win32con.SW_RESTORE) win32gui.SetForegroundWindow(hwnd) print(f"窗口已放到最前端: {blender_window.title}") return True except ImportError: print("pywin32未安装,请运行: pip install pywin32") if blender_window.isMinimized: blender_window.restore() blender_window.activate() print("Blender窗口已激活(使用pygetwindow方法)") return True else: print("未找到Blender窗口") # 显示所有窗口标题用于调试 all_titles = gw.getAllTitles() print("所有窗口标题(前10个):") for i, title in enumerate(all_titles[:10]): if title.strip(): print(f" {i+1}. {title}") return False except Exception as e: print(f"激活Blender窗口时出错: {e}") return False def main(): if len(sys.argv) < 2: print("错误: 缺少工具名称参数") return tool_name = sys.argv[1] if tool_name == "get_all_objects": code = ''' import bpy # 获取当前场景中的所有物体 all_objects = bpy.context.scene.objects # 打印每个物体的名称 result = [] for obj in all_objects: obj_info = f"obj: {obj.name}" result.append(obj_info) print(obj_info) result ''' response = call_blender_api('/api/exec', code) elif tool_name == "delete_all_objects": code = ''' import bpy # 选择所有对象 bpy.ops.object.select_all(action='SELECT') # 删除选中的对象 bpy.ops.object.delete() "所有物体已删除" ''' response = call_blender_api('/api/exec', code) elif tool_name == "create_cube": code = ''' import bpy # 添加一个立方体 bpy.ops.mesh.primitive_cube_add( location=(0, 0, 0) # 设置立方体的位置 ) # 获取新创建的立方体对象 cube = bpy.context.active_object cube.name = "MyCube" # 重命名立方体 f"立方体已创建,名称: {cube.name}" ''' response = call_blender_api('/api/exec', code) elif tool_name == "activate_blender": activate_blender_window() return else: print(f"错误: 未知的Blender工具 '{tool_name}'") return if response: if response['status'] == 'success': print(f"{tool_name} 执行成功!") print(f"返回结果: {response['result']}") else: print(f"{tool_name} 执行失败: {response['message']}") else: print("无法连接到Blender服务器") if __name__ == "__main__": main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 23:02:55

C# 12主构造函数如何正确调用基类?90%开发者忽略的关键细节曝光

第一章&#xff1a;C# 12主构造函数与基类调用的核心概念C# 12 引入了主构造函数&#xff08;Primary Constructors&#xff09;这一重要语言特性&#xff0c;显著简化了类和结构体的初始化逻辑&#xff0c;尤其在组合复杂的依赖注入场景中表现出更高的可读性和简洁性。主构造函…

作者头像 李华
网站建设 2026/4/23 10:43:52

C#高性能编程实战(跨平台性能调优秘籍)

第一章&#xff1a;C#跨平台性能调优概述随着 .NET Core 演进为 .NET 5&#xff0c;C# 应用已全面支持跨平台运行&#xff0c;涵盖 Windows、Linux 和 macOS。在多环境部署场景下&#xff0c;性能表现的一致性与最优性成为开发关注的核心问题。跨平台性能调优不仅涉及代码层面的…

作者头像 李华
网站建设 2026/4/23 12:23:55

消费者权益保护:购物小票OCR识别发起退换货流程

消费者权益保护&#xff1a;购物小票OCR识别发起退换货流程 在今天的零售环境中&#xff0c;消费者上传一张模糊的购物小票申请退货&#xff0c;却要等客服人工核对半小时——这种体验不仅低效&#xff0c;还容易引发投诉。更现实的问题是&#xff1a;连锁商超每天处理成千上万…

作者头像 李华
网站建设 2026/4/23 10:48:29

C#跨平台调试难题如何破局:3个你不知道的高效技巧

第一章&#xff1a;C#跨平台调试的现状与挑战随着 .NET Core 的推出以及 .NET 5 的统一&#xff0c;C# 已成为真正意义上的跨平台编程语言。开发者可以在 Windows、Linux 和 macOS 上构建和运行 C# 应用程序&#xff0c;但跨平台调试仍面临诸多挑战。不同操作系统的底层差异、调…

作者头像 李华
网站建设 2026/4/23 12:20:48

学生备考利器:错题本拍照→HunyuanOCR识别→加入复习计划

学生备考利器&#xff1a;错题本拍照→HunyuanOCR识别→加入复习计划 在高三的某个深夜&#xff0c;书桌前的学生正一笔一划地抄写数学试卷上的错题。台灯下&#xff0c;纸页泛黄&#xff0c;手边是厚厚一摞错题本——这几乎是每一代学子共同的记忆。然而&#xff0c;这种低效却…

作者头像 李华
网站建设 2026/4/23 12:17:57

比级联方案更快:探秘腾讯混元OCR的极致易用设计理念

比级联方案更快&#xff1a;探秘腾讯混元OCR的极致易用设计理念 在企业数字化转型加速的今天&#xff0c;文档信息提取早已不再是“扫描人工录入”的原始模式。从一张发票到一份跨国合同&#xff0c;如何让机器像人一样“看懂”图像中的文字&#xff0c;并准确输出结构化数据&a…

作者头像 李华