Existuje API bez míchání pro výrobu souborů míchání?

Mám aplikaci v Pythonu, která vytváří 3D modely. Je již schopen exportovat tyto modely jako FBX, DAE, OBJ atd. Ve velké většině případů je dalším krokem v potrubí oprava modelu uvnitř mixéru, což znamená, že pak musím importovat modely v mixéru z uvedené exportní formáty.

Některé funkce specifické pro mixér však v těchto formátech souborů nelze vyjádřit. Zjevným nápadem, jak to vyřešit, by byl export přímo do kombinovaného souboru místo do nesouvisejícího formátu souboru třetí části.

Při zkoumání způsobů, jak toho dosáhnout, jsem našel http://wiki.blender.org/index.php/User%3aIdeasman42/BlenderAsPyModule , který vypadá jako jeden přístup . Zdá se však, že to vyžaduje vlastní mixér.

Také jsem našel binární specifikace pro formát souboru, zejména http://wiki.blender.org/index.php/Dev:Source/Data_Structures/DNAStructs a (některé další odkazy, které nesmím zahrnout do poštovního bankomatu).

… takže je to zjevně možné (i když těžkopádné) napsat exportní funkci s trochou pokusu o chybu.

Než to však udělám: Bylo to již provedeno? Existuje nějaká knihovna / API pro produkci souborů blendu mimo mixér?

Komentáře

  • Otázka, jak pevné jsou specifikace?
  • Pokud ' mluvíme o DNAStructs atd., má to ' dojem, že se nejedná o formální specifikaci formátu souboru , jen údaj o tom, jak to obvykle vypadá. Soubory Blend se více podobají výpisům paměti než organizaci strukturovaných dat. Ale já ' m na to v žádném případě nejsem odborníkem.

Odpovědět

Nevím, jak exportovat přímo do Blenderu (vypadá to příliš komplikovaně), ale mohli byste importovat soubory PLY / STL / etc a poté skriptujte všechny další funkce, které chcete.

V mém případě jsem si mohl zvolit původní program CAD, a tak jsem se rozhodl stavět přímo v Blenderu přes PyModule. Pracuji s Blenderem úplně odděleně od GUI a spoléhejte se pouze na externí python3 a modul bpy. Modul bpy se snadno vyrábí .. a můžete si jej ponechat do značné míry odděleně od vaší stávající instalace mixéru (běžím ze zdrojové složky).

Stačí spustit tento příkaz ( ujistěte se, že nemáte $ 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 

Našel jsem také toto: https://code.google.com/p/pyblenderfile/ ale, upřímně, nevidím mnoho výhod. Není vyvinuta enou gh umožnit import všeho, takže jsem našel lepší způsob, jak dělat totéž pomocí modulu bpy.

Co udělám, je toto:

– stavět věci v mixéru (dělám to přes python, aniž bych spustil oficiální aplikaci)

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

– import modelu

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

Funguje pro mě skvěle. Mám nějaké problémy s znovuvytvářením věcí, které můžete udělat v grafickém uživatelském rozhraní, ale hlavně proto, že Blender má strašlivou dokumentaci pro kód (imo). Přesto můžete dělat sladké věci, protože voláte všechny ekvivalentní příkazy přímo v pythonu a provádí se pomocí modulu bpy.

Komentáře

  • Používání mixéru api byl přístup, který jsme použili dříve, ale z velké části opuštěný kvůli častým změnám API v mixéru a zatížení požadavků na podporu od uživatelů, kteří nemohli ' zjistit, jak nainstalovat plugin do mixéru . Soubor pyblender ale vypadá jako čitelný začátek pro zjišťování základních struktur souboru blend. Děkujeme!

Odpověď

Neexistuje žádné oficiální API pro psaní souborů mixéru mimo mixér. několik lidí však napsalo způsoby čtení souborů mixéru. jediný, koho jsem viděl v pythonu, který je otevřený, je Blender Aid https://code.google.com/p/blender-aid/

it přečte soubor mixéru a zadá do databáze informace o odkazech z jednoho souboru na druhý.

Může být dobrým výchozím bodem pro napsání vlastního skriptu pro vytvoření souborů blend, pokud se rozhodnete jít touto cestou .

Odpověď

BAM (Bam Asset Manager) je schopen manipulovat se soubory .blend (dokáže extrahovat / zabalit vše potřebné daný soubor .blend (knihovny, obrázky …) do jednoho souboru), možná se budete chtít podívat na jeho kód .

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *