Există un API non-blender pentru a produce fișiere de amestecare?

Am o aplicație python care creează modele 3d. Este deja capabil să exporte aceste modele ca FBX, DAE, OBJ etc. În marea majoritate a cazurilor, următorul pas în conductă este atingerea modelului din blender, ceea ce înseamnă că trebuie să import modelele în blender din menționat formatele de export.

Cu toate acestea, unele caracteristici specifice blenderului nu sunt exprimate în aceste formate de fișiere. Ideea evidentă pentru a rezolva acest lucru ar fi exportul direct într-un fișier de amestecare în loc de un format de fișier care nu are legătură cu a treia parte.

Cercetând modalități de a face acest lucru, am „găsit http://wiki.blender.org/index.php/User%3aIdeasman42/BlenderAsPyModule , care pare a fi o abordare . Cu toate acestea, acest lucru pare să necesite un blender personalizat.

Am găsit și specificațiile binare pentru formatul de fișier, în special http://wiki.blender.org/index.php/Dev:Source/Data_Structures/DNAStructs și (alte linkuri pe care” nu am voie să le includ în post atm).

… așa că evident ar fi posibil (deși greoi) pentru a scrie o funcție de export cu un pic de încercare o eroare.

Cu toate acestea, înainte de a face acest lucru: S-a făcut deja acest lucru? Există o bibliotecă / API existentă acolo pentru a produce fișiere de amestecare în afara blenderului?

Comentarii

  • Întrebare, cât de fixe sunt specificațiile?
  • Dacă ' vorbim despre DNAStructs etc., ' am impresia că aceasta nu este o specificație formală de format de fișier , doar o indicație a modului în care arată de obicei. Fișierele de amestecare sunt mai asemănătoare cu stocările de memorie decât organizarea structurată a datelor. Dar eu ' nu sunt în niciun caz un expert în acest domeniu.

Răspuns

Nu știu cum să export direct în Blender (pare prea complicat), dar ai putea să importi fișiere PLY / STL / etc și apoi scrieți toate caracteristicile suplimentare pe care le doriți.

În cazul meu, am fost liber să aleg programul CAD original, așa că am ales să construiesc direct în Blender prin PyModule. Lucrez cu Blender complet separat de GUI și vă bazați doar pe un python3 extern și modulul bpy. Modulul bpy este ușor de realizat .. și îl puteți păstra în mare parte separat de instalarea blenderului dvs. existent (eu rulez din folderul sursă).

Rulați doar această comandă ( asigurați-vă că nu aveți 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 

De asemenea, am găsit acest lucru: https://code.google.com/p/pyblenderfile/ dar, sincer, nu văd prea multe beneficii. Nu este dezvoltat gh pentru a permite importarea tuturor, așa că am găsit o modalitate mai bună de a face același lucru folosind modulul bpy.

Ceea ce fac este:

– construiește lucruri în blender (o fac prin python, fără a porni vreodată aplicația oficială)

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

– importă modelul

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

Funcționează excelent pentru mine. Am unele probleme cu recrearea de lucruri pe care le puteți face în GUI, dar este mai ales pentru că Blender are o documentație teribilă pentru cod (imo). Totuși, puteți face lucruri dulci, deoarece apelați toate comenzile echivalente direct în python și se execută utilizând modulul bpy.

Comentarii

  • Utilizarea blenderului API-ul a fost o abordare pe care am folosit-o înainte, dar în mare parte abandonată din cauza modificărilor frecvente ale API-ului în blender și a încărcării cererilor de asistență din partea utilizatorilor care nu au putut ' să afle cum să instaleze un plugin în blender . Dar fișierul Pyblender arată ca un început lizibil pentru a afla structurile de bază ale fișierului de amestecare. Mulțumim!

Răspuns

Nu există un API oficial pentru scrierea fișierelor blender în afara blenderului. câteva persoane au scris totuși moduri de citire a fișierelor blender. singurul pe care l-am văzut în Python este deschis Blender Aid https://code.google.com/p/blender-aid/

it citește fișierul blender și introduce informații într-o bază de date despre legături dintr-un fișier în altul.

Ar putea fi un bun punct de plecare pentru dvs. să scrieți propriul script pentru a crea fișiere de amestecare dacă alegeți să mergeți pe acest drum .

Răspuns

BAM (Bam Asset Manager) este capabil să manipuleze fișierele .blend (poate extrage / împacheta tot ce este necesar de un anumit .blend (biblioteci, imagini …) într-un singur fișier), poate doriți să aruncați o privire la codul său .

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *