Is er een niet-blender-API voor het produceren van blend-bestanden?

Ik heb een Python-applicatie die 3D-modellen maakt. Het is al in staat om deze modellen te exporteren als FBX, DAE, OBJ enz. In de overgrote meerderheid van de gevallen is de volgende stap in de pijplijn het bijwerken van het model in de blender, wat betekent dat ik de modellen in de blender moet importeren vanuit de genoemde exportformaten.

Sommige blenderspecifieke functies zijn echter niet in deze bestandsindelingen uit te drukken. Het voor de hand liggende idee om dit op te lossen zou zijn door rechtstreeks naar een blend-bestand te exporteren in plaats van naar een derde-deel niet-gerelateerd bestandsformaat.

Toen ik onderzoek deed naar manieren om dit te doen, heb ik “ http://wiki.blender.org/index.php/User%3aIdeasman42/BlenderAsPyModule gevonden, wat lijkt op één benadering . Dit lijkt echter een op maat gemaakte blender te vereisen.

Ik heb ook de binaire specificaties voor het bestandsformaat gevonden, met name http://wiki.blender.org/index.php/Dev:Source/Data_Structures/DNAStructs en (enkele andere links die ik” niet mag opnemen in de post-pinautomaat).

… dus het is duidelijk mogelijk (zij het omslachtig) om een exportfunctie te schrijven met een beetje vallen en opstaan.

Maar voordat ik dit doe: is dit al gedaan? Is er een bestaande bibliotheek / API beschikbaar voor het produceren van blend-bestanden buiten blender?

Opmerkingen

  • Vraag, hoe vast zijn de specificaties?
  • Als we ' het hebben over de DNAStructs enz., ' is mijn indruk dat dit geen formele specificatie van het bestandsformaat is , slechts een indicatie van hoe het er gewoonlijk uitziet. Blend-bestanden lijken meer op geheugendumps dan op het organiseren van gestructureerde gegevens. Maar ik ' ben zeker geen expert op dit gebied.

Antwoord

Ik weet niet hoe ik rechtstreeks naar Blender moet exporteren (lijkt overdreven ingewikkeld), maar je zou PLY / STL / etc -bestanden kunnen importeren, en script vervolgens alle extra functies die u wilt.

In mijn geval was ik vrij om het originele CAD-programma te kiezen, dus koos ik ervoor om rechtstreeks in Blender te bouwen via de PyModule. Ik werk met Blender volledig los van de GUI, en vertrouw alleen op een externe python3 en de bpy-module. De bpy-module is eenvoudig te maken .. en je kunt het grotendeels gescheiden houden van je bestaande blender-installatie (ik draai vanuit de bronmap).

Voer gewoon deze opdracht uit ( zorg ervoor dat je geen $ HOME / src hebt):

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 

Ik heb dit ook gevonden: https://code.google.com/p/pyblenderfile/ maar, eerlijk gezegd, ik zie niet veel voordeel. Het is niet voldoende ontwikkeld gh om alles te kunnen importeren, dus ik vond een betere manier om hetzelfde te doen met behulp van de bpy-module.

Wat ik doe is dit:

– bouw dingen in blender (ik doe het via python, zonder ooit de officiële applicatie te starten)

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

– importeer het model

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

Werkt prima voor mij. Ik heb wat problemen met het opnieuw maken van dingen die je kunt doen in de GUI, maar dat komt vooral omdat Blender vreselijke documentatie heeft voor code (imo). Toch kun je leuke dingen doen, aangezien je alle equivalente commandos rechtstreeks in Python aanroept en het wordt uitgevoerd met behulp van de bpy-module.

Opmerkingen

  • Blender gebruiken api was een benadering die we eerder gebruikten, maar grotendeels verlaten vanwege frequente API-wijzigingen in blender en de enorme hoeveelheid ondersteuningsverzoeken van gebruikers die niet konden ' achterhalen hoe een plug-in in blender te installeren . Maar het pyblender-bestand ziet eruit als een leesbaar begin om de basisstructuren van het blend-bestand te achterhalen. Bedankt!

Answer

Er is geen officiële API voor het schrijven van blenderbestanden buiten blender om. een paar mensen hebben echter manieren geschreven om blenderbestanden te lezen. de enige die ik in python heb gezien die open is, is Blender Aid https://code.google.com/p/blender-aid/

leest het blender-bestand en voert informatie in een database in over links van het ene bestand naar het andere.

Het kan een goed startpunt zijn voor u om uw eigen script te schrijven om blend-bestanden te maken als u ervoor kiest om op deze manier te gaan .

Answer

BAM (Bam Asset Manager) kan .blend-bestanden manipuleren (het kan alles extraheren / verpakken een gegeven .blend (bibliotheken, afbeeldingen …) in een enkel bestand), wil je misschien zijn code bekijken.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *