Instant Meshes MCP
Um servidor de processamento de modelos 3D para retopologia automática, simplificação e análise de qualidade de modelos OBJ/GLB.
Documentação
instant-meshes-mcp
Este projeto fornece serviços de processamento de modelos 3D através do protocolo MCP, utilizando Instant Meshes e pymeshlab para realizar retopologia automática, redução de malha e análise de qualidade em modelos 3D (OBJ/GLB), com suporte a processamento em lote, entrada por URL, preservação de texturas de materiais, gerenciamento de arquivos e muito mais.
Recursos
🔧 Funções de processamento de modelos
- Redução inteligente de malha: suporta redução progressiva de malha, evitando a fragmentação do modelo, protegendo coordenadas UV e texturas
- Retopologia: usa Instant Meshes para reconstrução da malha, corrigindo problemas de topologia
- Seleção automática: seleciona automaticamente o melhor método de processamento (redução/retopologia) com base na qualidade do modelo
- Suporte a formatos: suporta entrada GLB/OBJ, saída unificada em GLB
📁 Capacidades de processamento de arquivos
- Múltiplas entradas: suporta arquivos locais, pastas e URLs remotas
- Preservação de materiais: processa automaticamente arquivos MTL e texturas, mantendo a integridade dos materiais
- Integridade do pacote: valida a integridade do pacote OBJ, verificando arquivos MTL e texturas ausentes
📊 Análise de qualidade
- Verificação de qualidade da malha: analisa contagem de faces, vértices e problemas de topologia
- Diagnóstico do modelo: detecta buracos, componentes separados, arestas anormais e outros problemas
- Recomendações de processamento: fornece sugestões de redução e parâmetros recomendados com base nas características do modelo
🗂️ Gerenciamento de arquivos
- Arquivamento automático: cria automaticamente uma pasta de arquivo contendo modelo, texturas e logs após o processamento
- Gerenciamento de arquivos: suporta listagem, limpeza e cópia de pastas de arquivo
- Armazenamento estruturado: classificação em model/, textures/, logs/, com metadados detalhados
Requisitos de ambiente
- Python 3.8+
- Windows 10/11
- É necessário colocar
Instant Meshes.exena raiz do projeto - Blender 3.6 (para processamento de arquivos GLB e extração de texturas)
Instalação de dependências
pip install -r requirements.txt
Configuração do Blender 3.6
O sistema detecta automaticamente a localização da instalação do Blender 3.6, suportando vários métodos de instalação:
Caminhos de detecção automática:
- Instalação padrão:
C:\Program Files\Blender Foundation\Blender 3.6\ - Versão portátil:
[用户自定义路径]\Blender\3.6\(ex.:D:\Software\Blender\3.6\) - Versão Steam:
C:\Program Files (x86)\Steam\steamapps\common\Blender\
Configuração manual (opcional):
# 设置环境变量(根据实际安装路径修改)
set BLENDER_EXECUTABLE=D:\Software\Blender\3.6\blender.exe
Verificação da instalação:
# 测试Blender检测
result = await test_blender_detection_tool()
Funções de ferramentas MCP
1. process_model - Processamento unificado de modelos
Principal ferramenta de processamento de modelos, suporta redução de malha e retopologia:
# 自动处理(智能选择减面或重拓扑)
result = await process_model(
input_model="model.glb",
target_faces=5000,
operation="simplify" # auto/simplify/remesh
)
# 纯减面处理
result = await process_model(
input_model="model.obj",
target_faces=3000,
operation="simplify",
preserve_uv=True
)
# 重拓扑处理
result = await process_model(
input_model="broken_model.obj",
target_faces=8000,
operation="remesh",
mode="fine" # balanced/fine/coarse/fix_holes
)
Descrição dos parâmetros:
input_model: caminho do modelo de entrada (suporta arquivos GLB/OBJ, pastas ou URLs)target_faces: contagem de faces alvooperation: tipo de operaçãoauto: seleção automática (usa simplify para modelos à prova d'água, remesh para modelos com problemas)simplify: apenas redução de malha, mantendo a estrutura original da malharemesh: retopologia, corrige problemas de malha
mode: modo de retopologia (balanced/fine/coarse/fix_holes)preserve_boundaries: se deve manter características de bordapreserve_uv: se deve manter coordenadas UVcreate_archive: se deve criar pasta de arquivo (padrão: true)
2. analyze_model - Análise de qualidade do modelo
Analisa a qualidade do modelo e a estrutura de arquivos:
# 自动分析
analysis = await analyze_model(
input_path="model.obj",
analysis_type="auto"
)
# 完整分析
analysis = await analyze_model(
input_path="model_folder/",
analysis_type="full"
)
# 仅质量分析
quality = await analyze_model(
input_path="model.glb",
analysis_type="quality"
)
Tipos de análise:
auto: detecta automaticamente o tipo de entrada e seleciona a análise apropriadaquality: análise de qualidade da malha (contagem de faces, topologia, recomendações, etc.)folder: análise da estrutura de pastas OBJvalidation: validação da integridade do pacote OBJfull: executa todas as análises disponíveis
3. manage_archives - Gerenciamento de arquivos
Gerencia os arquivos de modelos processados:
# 列出归档
archives = await manage_archives(action="list", limit=10)
# 清理旧归档(预览模式)
cleanup = await manage_archives(
action="clean",
days_to_keep=30,
dry_run=True
)
# 实际清理
cleanup = await manage_archives(
action="clean",
days_to_keep=30,
dry_run=False
)
# 复制归档
copy_result = await manage_archives(
action="copy",
archive_name="model_20241201_143022",
copy_to="./extracted_models/"
)
# 获取归档目录信息
info = await manage_archives(action="info")
Como usar
1. Iniciar o serviço MCP
python server.py
2. Chamada via cliente MCP
{
"method": "tools/call",
"params": {
"name": "process_model",
"arguments": {
"input_model": "https://example.com/model.glb",
"target_faces": 5000,
"operation": "auto",
"create_archive": true
}
}
}
3. Exemplo de configuração mcp.json
{
"mcpServers": {
"instant-meshes-mcp": {
"command": "python",
"args": [
"your_abs_dir/instant-meshes-mcp/server.py"
],
"env": {
"PYTHONUNBUFFERED": "1",
"BLENDER_PATH":"your_blender3.6.abs_dir"
}
}
}
}
Exemplos de fluxo de trabalho
Simplificação básica de modelo
# 1. 分析模型
analysis = await analyze_model("input.glb", "auto")
print(f"原始面数: {analysis['mesh_quality']['faces']}")
print(f"推荐目标: {analysis['mesh_quality']['recommended_target_faces']}")
# 2. 处理模型
result = await process_model(
input_model="input.glb",
target_faces=analysis['mesh_quality']['recommended_target_faces'],
operation="simplify"
)
# 3. 管理归档
archives = await manage_archives("list")
print(f"已创建归档: {result}")
Processamento em lote de pastas
# 分析文件夹结构
folder_analysis = await analyze_model("model_folder/", "folder")
# 处理主模型
result = await process_model(
input_model="model_folder/",
target_faces=5000,
operation="simplify"
)
Principais pacotes de dependência
- trimesh: conversão de formatos de modelos 3D e processamento geométrico
- pymeshlab: simplificação e reparo de malhas
- requests: download de arquivos remotos
- psutil: gerenciamento de processos
- mcp: suporte ao protocolo MCP
Requisitos do sistema
Blender 3.6
Este sistema requer Blender 3.6 para processar a conversão de arquivos GLB e extração de texturas:
Recursos de detecção automática:
- O sistema detecta automaticamente a localização da instalação do Blender 3.6
- Suporta instalação padrão, versão portátil, versão Steam e outros métodos de instalação
- Suporta pesquisa no registro do Windows e expansão de caminhos com curingas
Prioridade de detecção:
- Variável de ambiente
BLENDER_EXECUTABLE(caminho completo do executável) - Variável de ambiente
BLENDER_PATH(diretório de instalação do Blender) - Detecção automática de locais de instalação comuns
- Pesquisa na variável de ambiente PATH
Caminhos de instalação comuns:
- Instalação padrão:
C:\Program Files\Blender Foundation\Blender 3.6\blender.exe - Versão portátil:
[用户自定义路径]\Blender\3.6\blender.exe(ex.:D:\Software\Blender\3.6\blender.exe) - Versão Steam:
C:\Program Files (x86)\Steam\steamapps\common\Blender\blender.exe
Configuração manual (opcional):
# 设置环境变量指定Blender路径(根据实际安装路径修改)
set BLENDER_EXECUTABLE=D:\Software\Blender\3.6\blender.exe
# 或设置Blender安装目录
set BLENDER_PATH=D:\Software\Blender\3.6
Descrição das funções:
- Conversão de arquivos GLB para formato OBJ (incluindo arquivos de material MTL)
- Extração automática de texturas incorporadas em GLB (cor, normal, ORM, etc.)
- Suporte à conversão completa de materiais PBR
- Geração de arquivos OBJ/MTL compatíveis com ferramentas de terceiros
Diagnóstico de detecção: É possível usar a ferramenta de detecção integrada para verificar a configuração do Blender:
# 测试Blender检测功能
result = await test_blender_detection_tool()
Se a detecção automática falhar:
- Confirme que o Blender 3.6 está instalado
- Defina as variáveis de ambiente correspondentes
- Verifique as permissões do executável do Blender
Estrutura de diretórios
instant-meshes-mcp/
├── server.py # 主服务与MCP工具实现
├── Instant Meshes.exe # 重拓扑核心程序
├── output_remesh/ # 输出模型目录
├── archives/ # 归档文件夹目录
├── temp/ # 临时文件目录(自动清理)
├── logs/ # 运行日志目录
├── requirements.txt # Python依赖
└── README.md # 项目说明
Estrutura de arquivo
Estrutura da pasta de arquivo criada após cada processamento:
archives/model_20241201_143022/
├── model/ # 主模型文件和MTL
│ ├── model.glb
│ └── model.mtl
├── textures/ # 贴图文件
│ ├── diffuse.jpg
│ └── normal.png
├── logs/ # 处理日志
│ └── process_model_20241201_143022.log
└── info.json # 处理元数据和配置信息
Recursos especiais
Redução progressiva de malha
- Reduções grandes de malha são executadas em etapas automaticamente, evitando a fragmentação do modelo
- Proteção especial para modelos com coordenadas UV
- Proteção inteligente de bordas e preservação de topologia
Processamento inteligente de materiais
- Detecção e cópia automática de arquivos MTL
- Suporte a vários tipos de texturas (diffuse, normal, specular, etc.)
- Correção de caminhos de referência de arquivos, garantindo o carregamento correto dos materiais
Monitoramento de qualidade
- Detecção em tempo real de problemas de qualidade do modelo
- Fornecimento de recomendações de processamento e parâmetros sugeridos
- Geração automática de relatórios de qualidade
Observações
- Suporta apenas plataforma Windows (depende de Instant Meshes.exe)
- Requer instalação do Blender 3.6 (para processamento de arquivos GLB e extração de texturas)
- Entrada suporta formatos OBJ e GLB
- Saída unificada em formato GLB, preservando materiais e texturas
- Arquivos GLB são convertidos automaticamente para OBJ via Blender para processamento e depois convertidos de volta para GLB
- Todos os arquivos temporários são limpos automaticamente após o processamento
- Arquivos de log são nomeados com carimbo de data/hora, facilitando o rastreamento do histórico de processamento
- O processo do Blender é executado de forma independente, sem bloquear o programa principal
Tratamento de erros
- Mensagens de erro claras e registro em log
- Limpeza automática de arquivos temporários, mesmo em condições anormais
- Proteção contra timeout, evitando que o processo do Instant Meshes trave
- Validação da qualidade do modelo, garantindo que o resultado da saída seja utilizável