Tenho um aplicativo python que cria modelos 3D. Ele já é capaz de exportar esses modelos como FBX, DAE, OBJ etc. Na grande maioria dos casos, o próximo passo no pipeline é retocar o modelo dentro do blender, o que significa que eu então tenho que importar os modelos no blender do ditos formatos de exportação.
No entanto, alguns recursos específicos do blender não são possíveis de expressar nesses formatos de arquivo. A ideia óbvia para resolver isso seria exportar diretamente para um arquivo blend em vez de para um formato de arquivo não relacionado de terceiros.
Pesquisando maneiras de fazer isso, eu “encontrei http://wiki.blender.org/index.php/User%3aIdeasman42/BlenderAsPyModule que parece ser uma abordagem . No entanto, isso parece exigir um liquidificador personalizado.
Também encontrei as especificações binárias para o formato de arquivo, principalmente http://wiki.blender.org/index.php/Dev:Source/Data_Structures/DNAStructs e (alguns outros links que não posso incluir no atm do post).
… então, obviamente, seria possível (embora complicado) para escrever uma função de exportação com um pouco de tentativa de erro.
No entanto, antes de fazer isso: isso já foi feito? Existe uma biblioteca / API existente para produzir arquivos de blend fora do blender?
Comentários
- Pergunta, quão fixas são as especificações?
- Se ' estamos falando sobre DNAStructs etc, ' tenho a impressão de que esta não é uma especificação de formato de arquivo formal , apenas uma indicação de como costuma ser. Arquivos de mesclagem são mais parecidos com despejos de memória do que organização de dados estruturados. Mas eu ' m não sou de forma alguma um especialista nisso.
Resposta
Não sei como exportar diretamente para o Blender (parece muito complicado), mas você poderia importar arquivos PLY / STL / etc , e então faça o script de todos os recursos adicionais que você deseja.
No meu caso, eu estava livre para escolher o programa CAD original, então escolhi construir diretamente no Blender através do PyModule. Eu trabalho com o Blender completamente separado do GUI e confie apenas em um python3 externo e no módulo bpy. O módulo bpy é fácil de fazer … e você pode mantê-lo totalmente separado da instalação do blender existente (eu executo da pasta de origem).
Basta executar este comando ( certifique-se de não ter um $ HOME / src ):
git clone http://git.blender.org/blender.git && cd blender && git submodule update --init --recursive && git submodule foreach git checkout master && git submodule foreach git pull --rebase origin master && build_files/build_environment/install_deps.sh --with-all --skip-osl && sudo make bpy && cd .. && rm -rf blender && sudo rm -rf build_linux_bpy && rm -rf $HOME/src # this gets bpy python module
Eu também encontrei este: https://code.google.com/p/pyblenderfile/ mas, honestamente, não vejo muitos benefícios. Não foi desenvolvido o suficiente gh para permitir a importação de tudo, então encontrei uma maneira melhor de fazer a mesma coisa usando o módulo bpy.
O que eu faço é o seguinte:
– construir coisas no blender (eu faço isso via python, sem nunca iniciar o aplicativo oficial)
import bpy #build stuff bpy.ops.wm.save_as_mainfile(filepath="./objects8.blend")
– importe o modelo
import bpy bpy.ops.wm.open_mainfile(filepath="./objects8.blend")
Funciona muito bem para mim. Eu tenho alguns problemas para recriar coisas que você pode fazer na GUI, mas principalmente porque o Blender tem uma documentação terrível para o código (imo). Ainda assim, você pode fazer coisas legais, já que chama todos os comandos equivalentes diretamente no python e ele executa usando o módulo bpy.
Comentários
- Usando o blender api foi uma abordagem que usamos antes, mas amplamente abandonada devido às frequentes mudanças de API no blender e à carga de solicitações de suporte de usuários que não ' descobrir como instalar um plugin no blender . Mas o arquivo pyblender parece um começo legível para descobrir as estruturas básicas do arquivo blend. Obrigado!
Resposta
Não existe uma API oficial para escrever arquivos do blender fora do blender. algumas pessoas escreveram maneiras de ler arquivos do blender. o único que eu vi em python que está aberto é Blender Aid https://code.google.com/p/blender-aid/
it lê o arquivo do blender e insere informações em um banco de dados sobre os links de um arquivo para outro.
Pode ser um bom ponto de partida para você escrever seu próprio script para criar arquivos de mesclagem se você escolher seguir este caminho .
Resposta
BAM (Bam Asset Manager) é capaz de manipular arquivos .blend (pode extrair / compactar tudo o que é necessário por um determinado .blend (bibliotecas, imagens …) em um único arquivo), você pode querer dar uma olhada em seu código .