¿Existe una API que no sea de Blender para producir archivos de mezcla?

Tengo una aplicación Python que crea modelos 3D. Ya es capaz de exportar estos modelos como FBX, DAE, OBJ, etc. En la gran mayoría de los casos, el siguiente paso en la tubería es retocar el modelo dentro de Blender, lo que significa que luego tengo que importar los modelos en Blender desde el dichos formatos de exportación.

Sin embargo, algunas características específicas de Blender no son posibles de expresar en estos formatos de archivo. La idea obvia para resolver esto sería exportar directamente a un archivo de mezcla en lugar de a un formato de archivo de tercera parte no relacionado.

Investigando formas de hacer esto, encontré http://wiki.blender.org/index.php/User%3aIdeasman42/BlenderAsPyModule que parece ser un enfoque . Sin embargo, esto parece requerir una licuadora personalizada.

También encontré las especificaciones binarias para el formato de archivo, en particular http://wiki.blender.org/index.php/Dev:Source/Data_Structures/DNAStructs y (algunos otros enlaces que no puedo incluir en el cajero automático de la publicación).

… así que obviamente sería posible (aunque engorroso) escribir una función de exportación con un poco de prueba y error.

Sin embargo, antes de hacer esto: ¿ya se ha hecho? ¿Existe una biblioteca / API para producir archivos de mezcla fuera de Blender?

Comentarios

  • Pregunta, ¿qué tan fijas son las especificaciones?
  • Si ' estamos hablando de DNAStructs, etc., ' s mi impresión de que esta no es una especificación de formato de archivo formal , solo una indicación de cómo se ve normalmente. Los archivos de mezcla se parecen más a los volcados de memoria que a la organización de datos estructurados. Pero yo ' no soy un experto en eso.

Responder

No sé cómo exportar directamente a Blender (parece demasiado complicado), pero podrías importar archivos PLY / STL / etc , y luego escriba todas las funciones adicionales que desee.

En mi caso, era libre de elegir el programa CAD original, así que elegí compilar directamente en Blender a través de PyModule. Trabajo con Blender completamente separado del GUI, y confíe solo en un python3 externo y el módulo bpy. El módulo bpy es fácil de hacer … y puede mantenerlo en gran medida separado de su instalación de blender existente (yo corro desde la carpeta fuente).

Simplemente ejecute este comando ( asegúrese de no tener un $ 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 

También encontré esto: https://code.google.com/p/pyblenderfile/ pero, honestamente, no veo mucho beneficio. No está lo suficientemente desarrollado gh para permitir la importación de todo, así que encontré una mejor manera de hacer lo mismo usando el módulo bpy.

Lo que hago es esto:

– compila cosas en Blender (lo hago a través de Python, sin siquiera iniciar la aplicación oficial)

import bpy #build stuff bpy.ops.wm.save_as_mainfile(filepath="./objects8.blend") 

– importar el modelo

import bpy bpy.ops.wm.open_mainfile(filepath="./objects8.blend") 

Funciona muy bien para mí. Tengo algunos problemas para recrear cosas que puedes hacer en la GUI, pero es principalmente porque Blender tiene una documentación terrible para el código (en mi opinión). Aún así, puede hacer cosas dulces ya que llama a todos los comandos equivalentes directamente en Python y se ejecuta usando el módulo bpy.

Comentarios

  • Usando blender api fue un enfoque que usamos antes, pero que abandonamos en gran medida debido a los frecuentes cambios de API en Blender y la carga de solicitudes de soporte de usuarios que no ' no pudieron averiguar cómo instalar un complemento en Blender. . Pero el archivo de Pyblender parece un comienzo legible para descubrir las estructuras básicas del archivo de mezcla. ¡Gracias!

Respuesta

No existe una API oficial para escribir archivos de blender fuera de blender. sin embargo, algunas personas han escrito formas de leer archivos de Blender. el único que he visto en Python que está abierto es Blender Aid https://code.google.com/p/blender-aid/

it lee el archivo de Blender e ingresa información en una base de datos sobre los enlaces de un archivo a otro.

Podría ser un buen punto de partida para que usted escriba su propio script para crear archivos de mezcla si elige hacerlo de esta manera .

Respuesta

BAM (Bam Asset Manager) es capaz de manipular archivos .blend (puede extraer / empaquetar todo lo que necesita un .blend dado (bibliotecas, imágenes …) en un solo archivo), es posible que desee echar un vistazo a su código .

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *