Jag har en pythonapplikation som skapar 3d-modeller. Det kan redan exportera dessa modeller som FBX, DAE, OBJ etc. I de allra flesta fall är nästa steg i rörledningen att röra upp modellen inuti mixern, vilket innebär att jag sedan måste importera modellerna i mixer från nämnda exportformat.
Vissa mixerspecifika funktioner är emellertid inte möjliga att uttrycka i dessa filformat. Den uppenbara idén att lösa detta skulle vara att exportera direkt till en blandningsfil istället för till ett tredje parts orelaterade filformat.
Jag har hittat http://wiki.blender.org/index.php/User%3aIdeasman42/BlenderAsPyModule , som verkar vara en metod . Detta verkar dock kräva en specialbyggd mixer.
Jag har också hittat de binära specifikationerna för filformatet, särskilt http://wiki.blender.org/index.php/Dev:Source/Data_Structures/DNAStructs och (några andra länkar som jag inte får ta med i post-bankomaten).
… så uppenbarligen skulle det vara möjligt (om än besvärligt) för att skriva en exportfunktion med lite försök ett fel.
Men innan jag gör detta: Har detta redan gjorts? Finns det ett befintligt bibliotek / API där för att producera blandningsfiler utanför mixern?
Kommentarer
- Fråga, hur fasta är specifikationerna?
- Om vi ' talar om DNAStructs etc, är det ' mitt intryck att detta inte är en formell filformatspecifikation , bara en indikation på hur det vanligtvis ser ut. Blandningsfiler är mer besläktade med minnesdumpar än strukturerad dataorganisation. Men jag ' är inte alls en expert på det.
Svar
Jag vet inte hur man exporterar direkt till Blender (verkar alltför komplicerat), men du kan importera PLY / STL / etc filer och skript sedan alla ytterligare funktioner du vill ha.
I mitt fall var jag fri att välja det ursprungliga CAD-programmet, så jag valde att bygga direkt i Blender via PyModule. Jag arbetar med Blender helt separat från GUI, och förlita dig bara på en extern python3 och bpy-modulen. Bpy-modulen är enkel att göra .. och du kan hålla den i stort sett skild från din befintliga mixerinstallation (jag kör från källmappen).
Kör bara det här kommandot ( se till att du inte har ett $ 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
Jag hittade också detta: https://code.google.com/p/pyblenderfile/ men ärligt talat ser jag inte mycket nytta. Det är inte utvecklat enou gh för att tillåta import av allt, så jag hittade ett bättre sätt att göra samma sak med bpy-modulen.
Vad jag gör är detta:
– bygg saker i mixer (jag gör det via python, utan att någonsin starta den officiella applikationen)
import bpy #build stuff bpy.ops.wm.save_as_mainfile(filepath="./objects8.blend")
– importera modellen
import bpy bpy.ops.wm.open_mainfile(filepath="./objects8.blend")
Fungerar bra för mig. Jag har några problem med att återskapa saker du kan göra i GUI, men det beror främst på att Blender har hemsk dokumentation för kod (imo). Ändå kan du göra söta saker eftersom du ringer till alla motsvarande kommandon direkt i python och det körs med hjälp av bpy-modulen.
Kommentarer
- Använda mixer api var ett tillvägagångssätt som vi använde tidigare men som till stor del övergavs på grund av frekventa API-ändringar i mixer, och massan av supportförfrågningar från användare som inte kunde ' t räkna ut hur man installerar ett plugin i mixer . Men pyblenderfilen ser ut som en läsbar start för att räkna ut de grundläggande strukturerna för blandningsfilen. Tack!
Svar
Det finns inget officiellt API för att skriva blandarfiler utanför mixern. några personer har dock skrivit sätt att läsa blandarfiler. den enda som jag har sett i python som är öppen är Blender Aid https://code.google.com/p/blender-aid/
det läser blandarfilen och lägger in information i en databas om länkar från en fil till en annan.
Det kan vara en bra utgångspunkt för dig att skriva ditt eget skript för att skapa blandningsfiler om du väljer att gå detta sätt .
Svar
BAM (Bam Asset Manager) kan manipulera .blend-filer (det kan extrahera / packa allt som behövs av en viss .blandning (bibliotek, bilder …) i en enda fil), kanske du vill titta på dess kod .