Esiste unAPI non Blender per la produzione di file blend?

Ho unapplicazione python che crea modelli 3d. È già in grado di esportare questi modelli come FBX, DAE, OBJ ecc. Nella stragrande maggioranza dei casi, il passaggio successivo nella pipeline è il ritocco del modello allinterno di blender, il che significa che devo quindi importare i modelli in blender dal detti formati di esportazione.

Tuttavia, non è possibile esprimere alcune caratteristiche specifiche di Blender in questi formati di file. Lidea ovvia per risolvere questo problema sarebbe esportare direttamente in un file blend invece che in un formato di file non correlato di terze parti.

Cercando modi per farlo, ho “trovato http://wiki.blender.org/index.php/User%3aIdeasman42/BlenderAsPyModule che sembra un approccio . Tuttavia, questo sembra richiedere un frullatore personalizzato.

Ho anche trovato le specifiche binarie per il formato del file, in particolare http://wiki.blender.org/index.php/Dev:Source/Data_Structures/DNAStructs e (alcuni altri link che non sono autorizzato a includere nel post atm).

… quindi ovviamente” sarebbe possibile (anche se ingombrante) scrivere una funzione di esportazione con un po di prova e un errore.

Tuttavia, prima di farlo: è già stato fatto? Esiste una libreria / API esistente là fuori per produrre file blend al di fuori di Blender?

Commenti

  • Domanda, quanto sono corrette le specifiche?
  • Se ' stiamo parlando di DNAStructs ecc., ' è mia impressione che questa non sia una specifica formale del formato di file , solo unindicazione di come appare di solito. I file di unione sono più simili ai dump della memoria che allorganizzazione dei dati strutturati. Ma io ' non sono affatto un esperto in materia.

Rispondi

Non so come esportare direttamente in Blender (sembra eccessivamente complicato), ma potresti importare file PLY / STL / ecc e quindi script tutte le funzionalità aggiuntive che desideri.

Nel mio caso, ero libero di scegliere il programma CAD originale, quindi ho scelto di creare direttamente in Blender tramite il PyModule. Lavoro con Blender completamente separato dal GUI e fai affidamento solo su un python3 esterno e sul modulo bpy. Il modulo bpy è facile da realizzare .. e puoi tenerlo in gran parte separato dallinstallazione di blender esistente (eseguo dalla cartella dei sorgenti).

Esegui questo comando ( assicurati di non avere “t $ 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 

Ho trovato anche questo: https://code.google.com/p/pyblenderfile/ ma, onestamente, non vedo molti vantaggi. Non è sviluppato abbastanza gh per consentire limportazione di tutto, quindi ho trovato un modo migliore per fare la stessa cosa utilizzando il modulo bpy.

Quello che faccio è questo:

– costruisci roba in blender (lo faccio tramite python, senza mai avviare lapplicazione ufficiale)

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

– importa il modello

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

Funziona alla grande per me. Ho alcuni problemi nel ricreare cose che puoi fare nella GUI, ma è principalmente perché Blender ha una pessima documentazione per il codice (imo). Tuttavia, puoi fare cose carine dato che chiami tutti i comandi equivalenti direttamente in python e viene eseguito utilizzando il modulo bpy.

Commenti

  • Uso di blender api era un approccio che usavamo prima, ma in gran parte abbandonato a causa di frequenti modifiche alle API in Blender e del carico di richieste di supporto da parte di utenti che non potevano ' capire come installare un plugin in Blender . Ma il file pyblender sembra un inizio leggibile per capire le strutture di base del file blend. Grazie!

Risposta

Non esiste unAPI ufficiale per la scrittura di file Blender al di fuori di Blender. tuttavia, alcune persone hanno scritto modi per leggere i file di Blender. lunico che ho visto in Python che è aperto è Blender Aid https://code.google.com/p/blender-aid/

it legge il file blender e inserisce le informazioni in un database sui collegamenti da un file a un altro.

Potrebbe essere un buon punto di partenza per scrivere il tuo script per creare file blend se scegli di procedere in questo modo .

Risposta

BAM (Bam Asset Manager) è in grado di manipolare file .blend (può estrarre / impacchettare tutto il necessario un dato .blend (librerie, immagini …) in un singolo file), potresti voler dare unocchiata al suo codice .

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *