Onko sekoitustiedostojen tuottamiseen ei-sekoittajan sovellusliittymä?

Minulla on python-sovellus, joka luo 3D-malleja. Se pystyy jo viemään nämä mallit kuten FBX, DAE, OBJ jne. Suurimmassa osassa tapauksia, seuraava vaihe putkessa on koskettaa mallia sekoittimen sisällä, mikä tarkoittaa, että minun on sitten tuotava mallit sekoittimessa mainitut vientimuodot.

Joitakin tehosekoitinkohtaisia ominaisuuksia ei kuitenkaan voida ilmaista näissä tiedostomuodoissa. Selkeä idea tämän ratkaisemiseksi olisi viedä suoraan sekoitetiedostoon kolmannen osan etuyhteydettömään tiedostomuotoon.

Tutkiessani tapoja tehdä tämä olen löytänyt http://wiki.blender.org/index.php/User%3aIdeasman42/BlenderAsPyModule , joka vaikuttaa yhdeltä lähestymistavalta. . Tämä näyttää kuitenkin edellyttävän räätälöityä sekoitinta.

Olen myös löytänyt tiedostomuodon binaariset määritykset, erityisesti http://wiki.blender.org/index.php/Dev:Source/Data_Structures/DNAStructs ja (joitain muita linkkejä, joita en saa sisällyttää atm-postiin).

… niin ilmeisesti se on mahdollista (vaikkakin hankalaa) kirjoittaa vientitoiminto, jossa on vähän kokeiluvirhettä.

Ennen kuin teen tämän: Onko tämä jo tehty? Onko olemassa olemassa olevaa kirjastoa / sovellusliittymää sekoitetiedostojen tuottamiseksi sekoittimen ulkopuolella?

Kommentit

  • Kysymys, kuinka kiinteät tekniset tiedot ovat?
  • Jos puhumme ' DNAS-rakenteista jne., minusta ' tuntuu, että tämä ei ole muodollinen tiedostomuodomääritys , vain osoitus siitä, miltä se yleensä näyttää. Blend-tiedostot muistuttavat muistimuistia enemmän kuin jäsenneltyjen tietojen järjestämistä. Mutta en ' en ole missään nimessä sen asiantuntija.

Vastaa

En tiedä kuinka viedä suoraan Blenderiin (näyttää liian monimutkaiselta), mutta voit tuoda PLY / STL / etc -tiedostoja ja kirjoita sitten kaikki haluamasi lisäominaisuudet.

Minun tapauksessani sain vapaasti valita alkuperäisen CAD-ohjelman, joten päätin rakentaa suoraan Blenderiin PyModulen kautta. Työskentelen Blenderin kanssa täysin erillään GUI, ja luottaa vain ulkoiseen python3: een ja bpy-moduuliin. Bpy-moduuli on helppo tehdä .. ja voit pitää sen suurelta osin erillään nykyisestä tehosekoittimen asennuksesta (suoritan lähdekansiosta).

Suorita vain tämä komento ( varmista, että sinulla ei ole $ 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 

Löysin myös tämän: https://code.google.com/p/pyblenderfile/ mutta rehellisesti sanottuna en näe paljon hyötyä. Sitä ei ole kehitetty enou gh sallii kaiken tuonnin, joten löysin paremman tavan tehdä sama asia bpy-moduulin avulla.

Teen seuraavasti:

– rakenna tavaraa tehosekoittimeen (teen sen pythonin kautta käynnistämättä koskaan virallista sovellusta)

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

– tuo malli

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

Toimii minulle hyvin. Minulla on joitain asioita, jotka luodaan uudelleen graafisen käyttöliittymän kautta tehtäville tavaroille, mutta se johtuu lähinnä siitä, että Blenderillä on kauhea dokumentaatio koodille (imo). Voit silti tehdä makeita juttuja, koska soitat kaikki vastaavat komennot suoraan pythoniin ja se suoritetaan bpy-moduulin avulla.

Kommentit

  • Blenderin käyttö api oli lähestymistapa, jota käytimme aiemmin, mutta hylättiin suurimmaksi osaksi sekoittimen usein tapahtuvien sovellusliittymän muutosten vuoksi, ja sellaisten käyttäjien tukipyyntöjen määrä, jotka eivät osanneet ' selvittää, kuinka laajennus asennetaan tehosekoittimeen . Mutta pyblender-tiedosto näyttää olevan luettava alku sekoitetiedoston perusrakenteiden selvittämiseksi. Kiitos!

Vastaa

Blender-tiedostojen kirjoittamiseen blenderin ulkopuolella ei ole virallista API: ta. harvat ihmiset ovat kuitenkin kirjoittaneet tapoja lukea tehosekoitintiedostoja. ainoa, jonka olen nähnyt avoimessa pythonissa, on Blender Aid https://code.google.com/p/blender-aid/

se lukee tehosekoitintiedoston ja syöttää tietoja tietokantaan linkeistä tiedostosta toiseen.

Voisi olla hyvä lähtökohta, kun kirjoitat oman skriptisi luoda sekoitetiedostoja, jos päätät mennä tällä tavalla .

Vastaus

BAM (Bam Asset Manager) pystyy käsittelemään .blend-tiedostoja (se voi purkaa / pakata kaiken tarvittavan) tietyn .blendin (kirjastot, kuvat …) yhdeksi tiedostoksi), kannattaa ehkä tarkastella sen koodia .

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *