Jeg har et python-program, der opretter 3d-modeller. Det er allerede i stand til at eksportere disse modeller som FBX, DAE, OBJ osv. I langt de fleste tilfælde er det næste trin i rørledningen at berøre modellen inde i blenderen, hvilket betyder, at jeg derefter skal importere modellerne i blender fra nævnte eksportformater.
Nogle blender-specifikke funktioner er dog ikke mulige at udtrykke i disse filformater. Den oplagte idé til at løse dette ville være at eksportere direkte til en blandingsfil i stedet for til et tredjeparts ikke-relateret filformat.
Efterforskning af måder at gøre dette på, har jeg fundet http://wiki.blender.org/index.php/User%3aIdeasman42/BlenderAsPyModule , som virker som en tilgang . Dette ser imidlertid ud til at kræve en specialbygget blender.
Jeg har også fundet de binære specifikationer for filformatet, især http://wiki.blender.org/index.php/Dev:Source/Data_Structures/DNAStructs og (nogle andre links, som jeg ikke må medtage i post-pengeautomaten).
… så selvfølgelig ville det være muligt (omend besværligt) at skrive en eksportfunktion med en smule prøve en fejl.
Men inden jeg gør dette: Er dette allerede gjort? Er der et eksisterende bibliotek / API derude til at producere blend-filer uden for blender?
Kommentarer
- Spørgsmål, hvor faste er specifikationerne?
- Hvis vi ' taler om DNAStructs osv., er det ' mit indtryk af, at dette ikke er en formel filformatspecifikation , bare en indikation af, hvordan det normalt ser ud. Blandingsfiler er mere beslægtede med hukommelsesdumps end struktureret dataorganisering. Men jeg ' er på ingen måde ekspert på det.
Svar
Jeg ved ikke, hvordan man eksporterer direkte til Blender (virker alt for kompliceret), men du kunne importere PLY / STL / etc filer og script derefter alle de ekstra funktioner, du ønsker.
I mit tilfælde var jeg fri til at vælge det originale CAD-program, så jeg valgte at bygge direkte i Blender via PyModule. Jeg arbejder med Blender helt adskilt fra GUI, og kun stole på en ekstern python3 og bpy-modulet. Bpy-modulet er let at lave .. og du kan holde det stort set adskilt fra din eksisterende blenderinstallation (jeg kører fra kildemappen).
Kør bare denne kommando ( sørg for at du ikke har en $ 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
Jeg fandt også dette: https://code.google.com/p/pyblenderfile/ men ærligt talt kan jeg ikke se meget fordel. Det er ikke udviklet enou gh for at tillade import af alt, så jeg fandt en bedre måde at gøre det samme ved hjælp af bpy-modulet.
Hvad jeg gør er dette:
– bygg ting i blender (jeg gør det via python uden nogensinde at starte den officielle applikation)
import bpy #build stuff bpy.ops.wm.save_as_mainfile(filepath="./objects8.blend")
– importer modellen
import bpy bpy.ops.wm.open_mainfile(filepath="./objects8.blend")
Fungerer godt for mig. Jeg har nogle problemer med at genskabe ting, du kan gøre i GUI, men det er hovedsageligt fordi Blender har frygtelig dokumentation til kode (imo). Stadig kan du lave søde ting, da du kalder alle de tilsvarende kommandoer direkte i python, og det udføres ved hjælp af bpy-modulet.
Kommentarer
- Brug af blender api var en tilgang, vi brugte før, men stort set opgav på grund af hyppige API-ændringer i blender, og antallet af supportanmodninger fra brugere, der ikke kunne ' ikke finde ud af, hvordan man installerer et plugin i blender . Men pyblender-filen ser ud som en læsbar start til at finde ud af de grundlæggende strukturer for blandingsfilen. Tak!
Svar
Der er ingen officiel API til at skrive blenderfiler uden for blender. et par mennesker har dog skrevet måder at læse blenderfiler på. den eneste, jeg har set i python, der er åben, er Blender Aid https://code.google.com/p/blender-aid/
det læser blenderfilen og indtaster information i en database om links fra en fil til en anden.
Det kan være et godt udgangspunkt for dig at skrive dit eget script for at oprette blend-filer, hvis du vælger at gå denne vej .
Svar
BAM (Bam Asset Manager) er i stand til at manipulere .blend-filer (det kan udtrække / pakke alt det, der er nødvendigt af en given .blanding (biblioteker, billeder …) i en enkelt fil), kan du se på dens kode .