OpenSCAD 多视图生成器
允许用户通过多视图重建和OpenSCAD,使用文本描述或图像生成参数化3D模型,并支持AI图像生成和远程处理。
服务介绍
OpenSCAD MCP 服务器
一个模型上下文协议(MCP)服务器,允许用户从文本描述或图像生成3D模型,重点是使用多视图重建和OpenSCAD创建参数化3D模型。
功能
- AI 图像生成:使用 Google Gemini 或 Venice.ai API 从文本描述生成图像
- 多视图图像生成:为同一3D对象创建多个视图以进行重建
- 图像审批工作流:在重建之前审查并批准/拒绝生成的图像
- 3D 重建:使用 CUDA 多视图立体技术将批准的多视图图像转换为3D模型
- 远程处理:在局域网内的远程服务器上处理计算密集型任务
- OpenSCAD 集成:使用 OpenSCAD 生成参数化3D模型
- 参数化导出:以保留参数属性的格式导出模型 (CSG, AMF, 3MF, SCAD)
- 3D 打印机发现:可选的网络打印机发现和直接打印
架构
该服务器使用 Python MCP SDK 构建,并遵循模块化架构:
openscad-mcp-server/
├── src/
│ ├── main.py # Main application
│ ├── main_remote.py # Remote CUDA MVS server
│ ├── ai/ # AI integrations
│ │ ├── gemini_api.py # Google Gemini API for image generation
│ │ └── venice_api.py # Venice.ai API for image generation (optional)
│ ├── models/ # 3D model generation
│ │ ├── cuda_mvs.py # CUDA Multi-View Stereo integration
│ │ └── code_generator.py # OpenSCAD code generation
│ ├── workflow/ # Workflow components
│ │ ├── image_approval.py # Image approval mechanism
│ │ └── multi_view_to_model_pipeline.py # Complete pipeline
│ ├── remote/ # Remote processing
│ │ ├── cuda_mvs_client.py # Client for remote CUDA MVS processing
│ │ ├── cuda_mvs_server.py # Server for remote CUDA MVS processing
│ │ ├── connection_manager.py # Remote connection management
│ │ └── error_handling.py # Error handling for remote processing
│ ├── openscad_wrapper/ # OpenSCAD CLI wrapper
│ ├── visualization/ # Preview generation and web interface
│ ├── utils/ # Utility functions
│ └── printer_discovery/ # 3D printer discovery
├── scad/ # Generated OpenSCAD files
├── output/ # Output files (models, previews)
│ ├── images/ # Generated images
│ ├── multi_view/ # Multi-view images
│ ├── approved_images/ # Approved images for reconstruction
│ └── models/ # Generated 3D models
├── templates/ # Web interface templates
└── static/ # Static files for web interface
安装
-
克隆仓库:
git clone https://github.com/jhacksman/OpenSCAD-MCP-Server.git cd OpenSCAD-MCP-Server -
创建虚拟环境:
python -m venv venv source venv/bin/activate # 在 Windows 上: venv\Scripts\activate -
安装依赖项:
pip install -r requirements.txt -
安装 OpenSCAD:
- Ubuntu/Debian:
sudo apt-get install openscad - macOS:
brew install openscad - Windows: 从 openscad.org 下载
- Ubuntu/Debian:
-
安装 CUDA 多视图立体技术:
git clone https://github.com/fixstars/cuda-multi-view-stereo.git cd cuda-multi-view-stereo mkdir build && cd build cmake .. make -
设置 API 密钥:
- 在根目录中创建一个
.env文件 - 添加您的 API 密钥:
GEMINI_API_KEY=your-gemini-api-key VENICE_API_KEY=your-venice-api-key # 可选 REMOTE_CUDA_MVS_API_KEY=your-remote-api-key # 用于远程处理
- 在根目录中创建一个
远程处理设置
服务器支持计算密集型任务的远程处理,特别是 CUDA 多视图立体重建。这使您可以将处理任务卸载到局域网内的更强大的机器上。
服务器设置(在具有 CUDA GPU 的机器上)
-
在服务器机器上安装 CUDA 多视图立体技术:
git clone https://github.com/fixstars/cuda-multi-view-stereo.git cd cuda-multi-view-stereo mkdir build && cd build cmake .. make -
启动远程 CUDA MVS 服务器:
python src/main_remote.py -
服务器将自动使用 Zeroconf 在本地网络上广播自己。
客户端配置
-
在你的
.env文件中配置远程处理:REMOTE_CUDA_MVS_ENABLED=True REMOTE_CUDA_MVS_USE_LAN_DISCOVERY=True REMOTE_CUDA_MVS_API_KEY=your-shared-secret-key -
或者,你可以直接指定服务器 URL:
REMOTE_CUDA_MVS_ENABLED=True REMOTE_CUDA_MVS_USE_LAN_DISCOVERY=False REMOTE_CUDA_MVS_SERVER_URL=http://server-ip:8765 REMOTE_CUDA_MVS_API_KEY=your-shared-secret-key
远程处理功能
- 自动服务器发现:在本地网络上查找 CUDA MVS 服务器
- 作业管理:上传图片、跟踪作业状态和下载结果
- 容错性:自动重试、断路器模式和错误跟踪
- 身份验证:所有远程操作的安全 API 密钥认证
- 健康监控:持续的服务器健康检查和状态报告
使用方法
-
启动服务器:
python src/main.py -
服务器将在 http://localhost:8000 上启动
-
使用 MCP 工具与服务器交互:
-
generate_image_gemini:使用 Google Gemini API 生成图片
{ "prompt": "A low-poly rabbit with black background", "model": "gemini-2.0-flash-exp-image-generation" } -
generate_multi_view_images:生成同一 3D 对象的多个视图
{ "prompt": "A low-poly rabbit", "num_views": 4 } -
create_3d_model_from_images:从已批准的多视角图像创建 3D 模型
{ "image_ids": ["view_1", "view_2", "view_3", "view_4"], "output_name": "rabbit_model" } -
create_3d_model_from_text:从文本到 3D 模型的完整流程
{ "prompt": "A low-poly rabbit", "num_views": 4 } -
export_model:将模型导出为特定格式
{ "model_id": "your-model-id", "format": "obj" // 或 "stl", "ply", "scad" 等 } -
discover_remote_cuda_mvs_servers:在你的网络上查找 CUDA MVS 服务器
{ "timeout": 5 } -
get_remote_job_status:检查远程处理作业的状态
{ "server_id": "server-id", "job_id": "job-id" } -
download_remote_model_result:从远程服务器下载已完成的模型
{ "server_id": "server-id", "job_id": "job-id", "output_name": "model-name" } -
discover_printers:在网络中发现 3D 打印机
{} -
print_model:在连接的打印机上打印模型
{ "model_id": "your-model-id", "printer_id": "your-printer-id" }
-
图像生成选项
服务器支持多种图像生成选项:
-
Google Gemini API (默认): 使用 Gemini 2.0 Flash 实验模型进行高质量图像生成
- 支持具有统一风格的多视角生成
- 需要 Google Gemini API 密钥
-
Venice.ai API (可选): 替代图像生成服务
- 支持多种模型,包括 flux-dev 和 fluently-xl
- 需要 Venice.ai API 密钥
-
用户提供的图片: 跳过图像生成步骤,使用您自己的图片
- 直接将图片上传到服务器
- 适用于处理现有的照片或渲染图
多视角工作流程
服务器实现了用于 3D 重建的多视角工作流程:
- 图像生成: 生成同一 3D 对象的多个视角
- 图像审核: 审核并批准/拒绝每个生成的图像
- 3D 重建: 使用 CUDA MVS 将批准的图像转换为 3D 模型
- 可以在本地处理或在局域网内的远程服务器上处理
- 模型细化: 可选地使用 OpenSCAD 细化模型
远程处理工作流程
远程处理工作流程允许您将计算密集型任务卸载到更强大的机器上:
- 服务器发现: 自动发现网络中的 CUDA MVS 服务器
- 图像上传: 将批准的多视角图像上传到远程服务器
- 作业处理: 在远程服务器上使用 CUDA MVS 处理图像
- 状态跟踪: 监控作业状态和进度
- 结果下载: 在处理完成后下载完成的 3D 模型
支持的导出格式
服务器支持以多种格式导出模型:
- OBJ: Wavefront OBJ 格式(标准 3D 模型格式)
- STL: 标准三角形语言(用于 3D 打印)
- PLY: 多边形文件格式(用于点云和网格)
- SCAD: OpenSCAD 源代码(用于参数化模型)
- CSG: OpenSCAD CSG 格式(保留所有参数属性)
- AMF: 增材制造文件格式(保留一些元数据)
- 3MF: 3D 制造格式(现代替代 STL,带元数据)
网页界面
服务器提供了一个网页界面,用于:
- 生成和批准多视角图像
- 从不同角度预览 3D 模型
- 以各种格式下载模型
请访问 http://localhost:8000/ui/ 访问该界面。
许可证
MIT
贡献
欢迎贡献!请随时提交 Pull Request。