Ich habe eine Python-Anwendung, die 3D-Modelle erstellt. Es ist bereits möglich, diese Modelle als FBX, DAE, OBJ usw. zu exportieren. In den allermeisten Fällen besteht der nächste Schritt in der Pipeline darin, das Modell im Mixer auszubessern, was bedeutet, dass ich die Modelle im Mixer aus dem Mixer importieren muss besagte Exportformate.
Einige Blender-spezifische Funktionen können jedoch nicht in diesen Dateiformaten ausgedrückt werden. Die naheliegende Idee, dies zu lösen, besteht darin, direkt in eine Mischdatei anstatt in ein nicht verwandtes Dateiformat eines dritten Teils zu exportieren.
Nach Möglichkeiten gesucht, habe ich http://wiki.blender.org/index.php/User%3aIdeasman42/BlenderAsPyModule gefunden, was wie ein Ansatz erscheint . Dies scheint jedoch einen speziell angefertigten Mixer zu erfordern.
Ich habe auch die Binärspezifikationen für das Dateiformat gefunden, insbesondere http://wiki.blender.org/index.php/Dev:Source/Data_Structures/DNAStructs und (einige andere Links, die ich nicht in den Post-Atm aufnehmen darf).
… also offensichtlich wäre es möglich (wenn auch umständlich) Eine Exportfunktion mit ein wenig Versuch einen Fehler zu schreiben.
Bevor ich dies jedoch tue: Wurde dies bereits getan? Gibt es eine vorhandene Bibliothek / API zum Erstellen von Mischdateien außerhalb von Blender?
Kommentare
- Frage, wie fest sind die Spezifikationen?
- Wenn wir ' über DNAStructs usw. sprechen, ist ' mein Eindruck, dass dies keine formale Dateiformatspezifikation ist , nur ein Hinweis darauf, wie es normalerweise aussieht. Mischdateien ähneln eher Speicherabbildern als das Organisieren strukturierter Daten. Aber ich ' bin keineswegs ein Experte dafür.
Antwort
Ich weiß nicht, wie ich direkt in Blender exportieren soll (scheint zu kompliziert), aber Sie könnten PLY / STL / etc -Dateien importieren und Schreiben Sie dann alle gewünschten zusätzlichen Funktionen per Skript.
In meinem Fall konnte ich das ursprüngliche CAD-Programm frei auswählen. Daher habe ich mich entschieden, Blender direkt über das PyModule zu erstellen. Ich arbeite mit Blender völlig getrennt von dem GUI, und verlassen Sie sich nur auf eine externe Python3 und das bpy-Modul. Das bpy-Modul ist einfach zu erstellen .. und Sie können es weitgehend getrennt von Ihrer vorhandenen Blender-Installation (ich laufe aus dem Quellordner).
Führen Sie einfach diesen Befehl aus ( stellen Sie sicher, dass Sie kein $ HOME / src haben):
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
Ich habe auch Folgendes gefunden: https://code.google.com/p/pyblenderfile/ aber ehrlich gesagt sehe ich nicht viel Nutzen. Es ist nicht genug entwickelt gh, um den Import von allem zu ermöglichen, also habe ich eine bessere Möglichkeit gefunden, dasselbe mit dem bpy-Modul zu tun.
Was ich tue, ist Folgendes:
– Sachen im Mixer erstellen (ich mache es über Python, ohne jemals die offizielle Anwendung zu starten)
import bpy #build stuff bpy.ops.wm.save_as_mainfile(filepath="./objects8.blend")
– importiere das Modell
import bpy bpy.ops.wm.open_mainfile(filepath="./objects8.blend")
Funktioniert hervorragend für mich. Ich habe einige Probleme beim Neuerstellen von Dingen, die Sie in der GUI ausführen können, aber hauptsächlich, weil Blender eine schreckliche Dokumentation für Code (imo) hat. Trotzdem können Sie süße Sachen machen, da Sie alle entsprechenden Befehle direkt in Python aufrufen und diese mit dem bpy-Modul ausführen.
Kommentare
- Verwenden von Blender API war ein Ansatz, den wir zuvor verwendet haben, der jedoch aufgrund häufiger API-Änderungen im Blender und der Vielzahl von Supportanfragen von Benutzern, die ' nicht herausfinden konnten, wie ein Plugin im Blender installiert werden kann, weitgehend aufgegeben wurde . Die Pyblender-Datei scheint jedoch ein lesbarer Anfang zu sein, um die Grundstrukturen der Mischdatei herauszufinden. Danke!
Antwort
Es gibt keine offizielle API zum Schreiben von Blender-Dateien außerhalb von Blender. Einige Leute haben jedoch Möglichkeiten zum Lesen von Blender-Dateien geschrieben. Das einzige, was ich in Python gesehen habe, das geöffnet ist, ist Blender Aid https://code.google.com/p/blender-aid/
it liest die Blender-Datei und gibt Informationen über Links von einer Datei zur anderen in eine Datenbank ein.
Es könnte ein guter Ausgangspunkt für Sie sein, ein eigenes Skript zum Erstellen von Blend-Dateien zu schreiben, wenn Sie diesen Weg wählen .
Antwort
BAM (Bam Asset Manager) kann Blend-Dateien bearbeiten (es kann alles extrahieren / packen, was von benötigt wird Bei einer bestimmten Mischung (Bibliotheken, Bilder …) in einer einzigen Datei möchten Sie möglicherweise einen Blick auf seinen Code werfen.