Blender 2.8 Python Scripting Superpowers for Non-Programmers

3D-renderien, pelien ja animaatioiden luominen on aina uskomattoman jännittävää! Paitsi silloin, kun se käy haastavaksi tai tylsäksi. Jos olet käyttänyt Blenderiä tai mitä tahansa muuta 3D-sovellusta jo jonkin aikaa, olet löytänyt itsesi sloggaamasta samojen tehtävien läpi kerta toisensa jälkeen ja jossain vaiheessa ajatellut: ”toivoisin Blenderin vain tehneen tämän minulle”.

kautta skriptaus, se voi! Sen lisäksi, Python voi luoda hauskoja uusia ominaisuuksia, jotka eivät ole edes mahdollisia napsauttamalla käyttöliittymän ympärillä.

jos olet kuin minä, etkä ole saanut koulutusta tietojenkäsittelytieteessä, ohjelmointi voi tuntua nelikirjaimiselta sanalta paitsi yhdellätoista kirjaimella(2,75 kertaa huonompi!). Se on kuin salainen kieli, jonka vain fiksut ihmiset osaavat, jotka luultavasti myös aina lukevat ravintofaktoja, rakentavat rakettimoottoreita huvikseen tai ovat tohtoreita jossain matematiikassa, jossa ei edes käytetä numeroita.

näin ei onneksi ole lainkaan. Totuus on, jos voit käyttää Ctrl+C ja Ctrl+V kopioida ja liittää, voit alkaa tehdä omia Blender Python skriptejä heti.

totu näkemään koodi

Altistushoito. Asteittainen siedätyshoito. Kutsu sitä miksi haluat, mutta paras tapa normalisoida jotain, joka tuntuu oudolta aluksi on nähdä se tarpeeksi usein oikeassa yhteydessä.

jokainen Blenderin käyttöliittymässä suoritettava toiminto suoritetaan Python-komennoilla. Voit tarkistaa tämän itse vaihtamalla aikajanan Info Editor ja nähdä, mitä se sylkee ulos, kun menet normaaliin työhön.

info editor voi olla hieman firehose, mutta siellä on jotain komentorivejä ja sellainen, että saattaa olla ohjelmointi harhaoppia, mutta laittaa minut helposti kun aloittaa – suurin osa mitä näet on siellä vain siltä varalta, että tarvitset sitä ja 98% ajasta et tarvitse sitä. Joten kun teet jotain yksinkertaista, kuten liikutat kuutiota ja se antaa sinulle kaksi tai kolme täyttä riviä koodia, voit sivuuttaa suurimman osan siitä. Tärkeä osa on heti alussa:

bpy.ops.transform.translate(value = (0.5, 0, 0))

tiedät jo, että jonkin siirtämisen nimi on ”translate”, joten sen jälkeen tulevat arvot ovat, kuinka paljon olet kääntänyt kohteesi X -, Y-ja Z-akseleilla. Kaikki ennen’ translate ’ – komentoa löytyy Blenderin koodista. Aivan kuin Blender olisi yksi jättimäinen sisäkkäinen valikko ja valitsit Blender Python -> operaatiot -> muunnos -> Käännä.

Blender Pythonissa (bpy) on yhdeksän pääjaksoa. Näitä ei tarvitse opetella ulkoa, mutta joidenkin niistä tunnistaminen voi auttaa ymmärtämään, miten Blender toimii konepellin alla.

  • bpy.sovellus – tietoa Blenderistä itsestään, joka ei muutu ajon aikana.
  • bpy.context-Read-only-listat siitä, mitä Blenderissä on tällä hetkellä käytössä.
  • bpy.data – kaikki Blenderin sisäiset tiedot, kuten objektit.
  • bpy.msgbus-tulee sanoista ”message bus”, ja sitä käytetään Blenderin ilmoittamiseen tietyistä muutoksista. Meidän ei tarvitse huolehtia siitä.
  • bpy.ops – kaikki toiminnot, joita voit tehdä Blenderissä, mallintamisesta tiedostojen liittämiseen ja renderöintiin.
  • bpy.polku-toiminnot, jotka käsittelevät tiedostopolkuja.
  • bpy.rekvisiitta-Blenderin käyttämät erilaiset ominaisuudet. Käyttäisit tätä kertoaksesi Blenderille, pitäisikö syötön olla numero vai väri.
  • bpy.tyypit-kaikenlaisia asia, joka on olemassa Blender, muuntimet tekstuurit lamput ja paljon muuta.
  • bpy.utils-Utility-toiminnot, jotka ovat vain Blenderille, mutta eivät käsittele sisäisiä tietoja.

jos olet utelias, tässä on API-dokumentaatio Blender 2.8: lle ja kaikille aiemmille versioille.

kun työskentelet, totu näkemään, mistä lempityökalusi löytyvät koodista. Sinun ei tarvitse ymmärtää sitä kaikkea tässä vaiheessa – vain tottua siihen, miltä se näyttää!

Powerin Python-konsoli

kun olet valmis seuraavaan vaiheeseen, suuntaa komentosarjojen työtila-välilehdelle. Nyt tutuksi tullut info-editori löytyy alavasemmalta. Suoraan sen yläpuolella on Python-konsoli, johon voi liittää komentoja ja saada asioita tapahtumaan. Kokeile tätä: Valitse rivi Info-muokkaimessa, paina Ctrl+C kopioidaksesi ja liitä se sitten Ctrl + V: llä konsoliin. Paina enter, ja näet, että täsmälleen sama toiminta tapahtuu uudelleen!

kokeile nyt tätä: kierrä, skaalaa ja siirrä jotain tai tee kolme muuta toimenpidettä peräkkäin. Kopioi kaikki kolme info editor ja liitä ne konsoliin. Nyt teit kolme asiaa kerralla! Tässä ei ole mitään rajaa, joten näin voisi halutessaan tehdä satoja asioita kerralla. Vaikka koodaamiseen ei menisi sen pidemmälle, tämä on mainio kikka, joka kannattaa pitää takataskussa.

komentojen tallentaminen tekstieditorilla

komentojen metsästäminen läpi ja kopiointi / liittäminen koko ajan on itsessään aika työlästä, jos sitä tekee paljon! Säästämme aikaa ja tehostamme moniajoa Blenderin tekstieditorilla.

Luo uusi tekstitiedosto ja kopioi ja liitä vähintään kolme erilaista toimintoa info-Editorista tekstieditoriin. Aloitan lisäämällä kuution:

bpy.ops.mesh.primitive_cube_add(size=2, view_align=False, enter_editmode=False, location=(0, 0, 0))

sitten pyöritän kuutiota Z-akselin suuntaisesti.:

bpy.ops.transform.rotate(value=-0.261911, orient_axis='Z', orient_type='GLOBAL', orient_matrix=((1, 0, 0), (0, 1, 0), (0, 0, 1)), orient_matrix_type='GLOBAL', constraint_axis=(False, False, True), mirror=True, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1)

aika paljon koodia noin yksinkertaiselle asialle! Jos se ei häiritse sinua, pidä se. Jos pidät sitä uhkaavana, yritä poistaa kaikki paitsi arvo ja suuntautunut akseli niin, että se lukee helpommin. Loput yksinkertaisesti olettaa oletukset.

bpy.ops.transform.rotate(value=-0.261911, orient_axis='Z')

lisätään lopuksi viistosmuunnos:

bpy.ops.object.modifier_add(type='BEVEL')

yksi ylimääräinen asia, että sinun täytyy tehdä saada script ajaa on tyyppi:

import.bpy

tiedoston yläosassa, jotta se voi lukea Blender Python. On myös hyödyllistä kytkeä päälle kolme painiketta rivinumerot, rivitys, ja syntaksin korostus tekstieditorin otsikko.

nyt sinulla on käsikirjoitus! Voit nyt tehdä kolme erittäin tärkeää asiaa kerralla napsauttamalla Run Script tekstieditorin otsikossa. Jos haluat tallentaa sen myöhempää käyttöä varten tai käyttää sitä eri tiedostona, siirry kohtaan Text -> Tallenna nimellä ja tallenna .Py Python-tiedostona.

jos kokeilit eri komentoja kuin minä ja skriptisi ei toimi odotetulla tavalla, se johtuu todennäköisesti kontekstista – mikä objekti on valittu tai mikä editori on aktiivinen. Voit valita tai poistaa objektien valinnan Blender 2.8: ssa asettamalla sen valintaominaisuuden True or False:

bpy.data.objects.select_set(state=True)

kaikki Hail Automaattitäydennys

jotkut Blenderin komennot voidaan tehdä vain koodin kautta, eikä niitä löydy rajapinnasta. Lisäksi, muut asiat, jotka eivät muutu käyttöliittymän (kuten jynssää aikajanalla) eivät aina anna sinulle jotain Info Editor että voit kopioida ja liittää.

voit aina käyttää Googlea tai Blender API-dokumentteja, jotka auttavat sinua löytämään oikean komennon tehdäksesi mitä tarvitset, mutta usein on helpompaa vain löytää se automaattitäydennyksen avulla. Jos alat kirjoittaa osoitetta Python-konsoliin, voit painaa Ctrl+Space-näppäintä ja Blender näyttää sinulle kaikki käytettävissä olevat tavat täydentää kirjoittamasi. Se on hyvä tapa navigoida codebase ja löytää uusia ominaisuuksia.

tekstieditorissa on myös Ctrl+Space-automaattinen täydennysominaisuus, mutta se ei toimi samalla tavalla eikä ole yleensä kovin hyödyllinen. Jos käytät sitä usein, suosittelen Jacques Lucken koodin automaattista täydennystä, jonka avulla voit työskennellä paljon nopeammin.

loistavat mallit

jos haluat muuttaa skriptisi oikeaksi addoniksi, jota voi käyttää käyttöliittymän painikkeen tai valikon kautta, Blenderin sisäänrakennetut mallit ovat hyvä paikka aloittaa. Voi olla paljon muistaa, kun se tulee, miten tarjota tietoja, jotka on nähty käyttäjän asetukset tai miten rekisteröidä addon niin, että se näkyy oikein, joten mallit ovat hyvä asia viitata (tai kopioida ja liittää), jos juuttua.

Actually Learning Python

If you ’ ve enjoyed creating your own scripts but feel a little underwhelmed at their lack of power (I made some big promises at the beginning!), sitten on aika oppia lisää Pythonista ja ohjelmoinnista yleensä. Käsitteet kuten muuttujat, silmukat ja funktiot ovat välttämättömiä, jotta kaikki on todella uutta tai tehokasta. Pienellä tiedolla voi päästä pitkälle, joten se todella on ylimääräisen vaivan arvoista. Suosittelisin Pythoniin kaivautumista jossakin seuraavista kohteista. Emme ole sidoksissa mihinkään, he vain tekevät hyvää työtä.

  • Team Treehouse
  • Code Academy
  • Dataleiri
  • Opi Python

Lähetä Apua!

väistämättä jää jumiin keskelle omien käsikirjoitusten ja lisäosien rakentamista. Niin käy parhaille meistä! Tässä ovat paikat, joihin voit mennä kysymään koodaamisesta Blenderissä:

  • Blender StackExchange
  • Blender DevTalk

voit myös oppia lisää katsomalla näitä kursseja CG-evästeestä:

  • Python Scripting in Blender
  • Scripting with Python Handler Functions in Blender
  • Scripting a Custom Rig UI Blenderissä