Finnes det et ikke-blender-API for å produsere blend-filer?

Jeg har et pythonprogram som lager 3d-modeller. Det er allerede i stand til å eksportere disse modellene som FBX, DAE, OBJ etc. I de aller fleste tilfeller er neste trinn i rørledningen å berøre modellen inne i blender, noe som betyr at jeg da må importere modellene i blender fra sa eksportformatene.

Noen blender-spesifikke funksjoner er imidlertid ikke mulig å uttrykke i disse filformatene. Den åpenbare ideen om å løse dette vil være å eksportere direkte til en blandingsfil i stedet for til et tredjeparts urelatert filformat.

Jeg har funnet http://wiki.blender.org/index.php/User%3aIdeasman42/BlenderAsPyModule som har undersøkt måter å gjøre dette på, som virker som en tilnærming . Dette ser imidlertid ut til å kreve en spesialbygd blender.

Jeg har også funnet de binære spesifikasjonene for filformatet, spesielt http://wiki.blender.org/index.php/Dev:Source/Data_Structures/DNAStructs og (noen andre lenker som jeg ikke har lov til å ta med i postmaskinen).

… så åpenbart ville det være mulig (om enn tungvint) å skrive en eksportfunksjon med litt prøveversjon av en feil.

Men før jeg gjør dette: Er dette allerede gjort? Er det et eksisterende bibliotek / API der ute for å produsere blandingsfiler utenfor blender?

Kommentarer

  • Spørsmål, hvor faste er spesifikasjonene?
  • Hvis vi ' snakker om DNAStructs etc, er det ' mitt inntrykk av at dette ikke er en formell filformatspesifikasjon , bare en indikasjon på hvordan det vanligvis ser ut. Blandingsfiler ligner mer på minneutslipp enn organisering av strukturerte data. Men jeg ' er på ingen måte en ekspert på det.

Svar

Jeg vet ikke hvordan jeg skal eksportere direkte til Blender (virker altfor komplisert), men du kan importere PLY / STL / etc filer, og så skript alle tilleggsfunksjonene du vil ha.

I mitt tilfelle var jeg fri til å velge det originale CAD-programmet, så jeg valgte å bygge direkte i Blender via PyModule. Jeg jobber med Blender helt atskilt fra GUI, og stole bare på en ekstern python3 og bpy-modulen. Bpy-modulen er enkel å lage .. og du kan holde den stort sett atskilt fra din eksisterende blenderinstallasjon (jeg kjører fra kildemappen).

Bare kjør denne kommandoen ( sørg for at du ikke har et $ 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 fant også dette: https://code.google.com/p/pyblenderfile/ men ærlig talt ser jeg ikke mye fordel. Det er ikke utviklet enou gh for å tillate import av alt, så jeg fant en bedre måte å gjøre det samme ved hjelp av bpy-modulen.

Det jeg gjør er dette:

– bygg ting i blender (jeg gjør det via python, uten å starte den offisielle applikasjonen)

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 bra for meg. Jeg har noen problemer med å gjenskape ting du kan gjøre i GUI, men det er hovedsakelig fordi Blender har forferdelig dokumentasjon for kode (imo). Likevel kan du gjøre søte ting siden du kaller alle tilsvarende kommandoer direkte i python og den kjøres ved hjelp av bpy-modulen.

Kommentarer

  • Bruk av blender api var en tilnærming vi brukte før, men i stor grad forlatt på grunn av hyppige API-endringer i blender, og mengden støtteforespørsler fra brukere som ikke kunne ' t finne ut hvordan man installerer et plugin i blender . Men pyblender-filen ser ut som en lesbar start for å finne ut de grunnleggende strukturene til blandingsfilen. Takk!

Svar

Det er ingen offisiell API for å skrive blenderfiler utenfor blenderen. noen få mennesker har skrevet måter å lese blenderfiler på. den eneste jeg har sett i python som er åpen, er Blender Aid https://code.google.com/p/blender-aid/

det leser blenderfilen og legger inn informasjon i en database om lenker fra en fil til en annen.

Det kan være et godt utgangspunkt for deg å skrive ditt eget skript for å lage blend-filer hvis du velger å gå denne veien .

Svar

BAM (Bam Asset Manager) er i stand til å manipulere .blend-filer (den kan trekke ut / pakke alt som trengs av en gitt .blanding (biblioteker, bilder …) i en enkelt fil), kan det være lurt å se på koden .

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *