Czy istnieje interfejs API inny niż blender do tworzenia plików mieszania?

Mam aplikację w języku Python, która tworzy modele 3D. Jest już w stanie wyeksportować te modele jako FBX, DAE, OBJ itp. W większości przypadków następnym krokiem w przygotowaniu jest poprawienie modelu wewnątrz blendera, co oznacza, że muszę następnie zaimportować modele w blenderze z wspomniane formaty eksportu.

Jednak niektóre cechy specyficzne dla blendera nie są możliwe do wyrażenia w tych formatach plików. Oczywistym pomysłem rozwiązania tego problemu byłoby eksportowanie bezpośrednio do pliku mieszanego zamiast do niepowiązanego formatu pliku trzeciej części.

Szukając sposobów, aby to zrobić, znalazłem http://wiki.blender.org/index.php/User%3aIdeasman42/BlenderAsPyModule , co wydaje się jednym z podejść . Wydaje się jednak, że wymaga to niestandardowego blendera.

Znalazłem również binarne specyfikacje formatu pliku, w szczególności http://wiki.blender.org/index.php/Dev:Source/Data_Structures/DNAStructs i (kilka innych linków, których nie wolno mi umieszczać w bankomacie pocztowym).

… więc oczywiście byłoby to możliwe (choć uciążliwe) napisać funkcję eksportu z odrobiną próby błędu.

Jednak zanim to zrobię: czy to już zostało zrobione? Czy istnieje biblioteka / API do tworzenia plików mieszania poza blenderem?

Komentarze

  • Pytanie, jak poprawiono specyfikacje?
  • Jeśli ' mówimy o DNAStructs itp., ' mam wrażenie, że nie jest to formalna specyfikacja formatu pliku , tylko wskazanie, jak to zwykle wygląda. Pliki mieszane są bardziej podobne do zrzutów pamięci niż do uporządkowania danych strukturalnych. Ale ja ' nie jestem ekspertem w tej dziedzinie.

Odpowiedź

Nie wiem, jak eksportować bezpośrednio do Blendera (wydaje się to zbyt skomplikowane), ale możesz zaimportować pliki PLY / STL / etc i następnie skryptuj wszystkie dodatkowe funkcje, które chcesz.

W moim przypadku miałem swobodę wyboru oryginalnego programu CAD, więc zdecydowałem się zbudować bezpośrednio w Blenderze za pośrednictwem PyModule. Pracuję z Blenderem całkowicie niezależnie od GUI i polegaj tylko na zewnętrznym Pythonie3 i module bpy. Moduł bpy jest łatwy do wykonania … i możesz go w dużej mierze oddzielić od istniejącej instalacji blendera (uruchamiam z folderu źródłowego).

Po prostu uruchom to polecenie ( upewnij się, że nie masz $ 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 

Znalazłem też to: https://code.google.com/p/pyblenderfile/ ale szczerze mówiąc, nie widzę większych korzyści. Nie jest wystarczająco rozwinięty gh, aby umożliwić importowanie wszystkiego, więc znalazłem lepszy sposób na zrobienie tego samego za pomocą modułu bpy.

Robię to:

– buduję rzeczy w blenderze (robię to przez Pythona, nigdy nie uruchamiając oficjalnej aplikacji)

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

– zaimportuj model

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

U mnie działa świetnie. Mam pewne problemy z odtwarzaniem rzeczy, które możesz zrobić w GUI, ale głównie dlatego, że Blender ma okropną dokumentację kodu (imo). Mimo to możesz robić fajne rzeczy, ponieważ wywołujesz wszystkie równoważne polecenia bezpośrednio w Pythonie i wykonuje się je za pomocą modułu bpy.

Komentarze

  • Używanie blendera API było podejściem, którego używaliśmy wcześniej, ale w dużej mierze porzuconym z powodu częstych zmian interfejsu API w blenderze i obciążenia żądaniami pomocy od użytkowników, którzy nie mogli ' dowiedzieć się, jak zainstalować wtyczkę w blenderze . Ale plik pyblendera wygląda jak czytelny początek do ustalenia podstawowych struktur pliku mieszania. Dzięki!

Odpowiedź

Nie ma oficjalnego API do pisania plików blendera poza blenderem. jednak kilka osób napisało sposoby czytania plików blendera. jedynym, który widziałem w Pythonie, który jest otwarty, jest Blender Aid https://code.google.com/p/blender-aid/

it czyta plik blendera i wprowadza informacje do bazy danych o linkach z jednego pliku do drugiego.

Może to być dobry punkt wyjścia do napisania własnego skryptu do tworzenia plików mieszania, jeśli zdecydujesz się pójść tą drogą .

Odpowiedź

BAM (Bam Asset Manager) jest w stanie manipulować plikami .blend (może wyodrębnić / spakować wszystko, czego potrzeba, dany plik .blend (biblioteki, obrazy …) do jednego pliku), możesz rzucić okiem na jego kod .

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *