Blender 2.8 Python Scripting szuperhatalmak nem programozók számára
3D megjelenítések, játékok és animációk készítése mindig hihetetlenül izgalmas! Jól, kivéve, ha kihívássá vagy unalmassá válik. Ha már egy ideje használja a Blendert vagy bármely más 3D-s alkalmazást, akkor azon kapta magát, hogy újra és újra ugyanazokat a feladatokat végzi, és egy bizonyos ponton azt gondolja: “nagyon szeretném, ha a Blender ezt csak nekem tette volna”.
keresztül scripting, akkor! Nem csak, hogy a Python szórakoztató új funkciókat hozhat létre, amelyek még a felületen való kattintással sem lehetségesek.
ha olyan vagy, mint én, és nem volt semmilyen képzés a számítástechnikában, a programozás négybetűs szónak tűnhet, kivéve tizenegy betűvel (2,75-szer olyan rossz!). Olyan, mint egy titkos nyelv, amelyet csak okos emberek ismernek, akik valószínűleg mindig elolvassák a táplálkozási tényeket, szórakozásból rakétamotorokat építenek, vagy Ph.D. valamilyen matematikában, amely még számokat sem használ.
szerencsére egyáltalán nem ez a helyzet. Az igazság az, hogy ha a Ctrl+C és a Ctrl+V segítségével másolhatja és beillesztheti, akkor azonnal elkezdheti elkészíteni saját Blender Python szkriptjeit.
szokja meg a
expozíciós terápia kódját. Progresszív deszenzitizáció. Hívja, amit akar, de a legjobb módja annak, hogy normalizáljon valamit, ami kezdetben furcsának tűnik, ha elég gyakran látja a megfelelő kontextusban.
a Blender felületén végrehajtott minden művelet Python parancsokkal történik. Ezt ellenőrizheti magának, ha átkapcsolja az idővonalát az Info szerkesztőre, és látja, hogy mit köp ki, amikor a szokásos munkáját végzi.
az info editor lehet egy kicsit firehose, de van valami a parancssorokban és olyanokban, amelyek eretnekséget programozhatnak, de megkönnyíthetik az indulást – a legtöbb, amit látsz, csak abban az esetben van, ha szüksége van rá, és az idő 98% – ában nem lesz rá szüksége. Tehát, ha valami egyszerű dolgot csinálsz, mint például a kocka mozgatása, és két vagy három teljes sornyi kódot ad, akkor a legtöbbet figyelmen kívül hagyhatod. A fontos rész az elején van:
bpy.ops.transform.translate(value = (0.5, 0, 0))
már tudod, hogy a mozgatás neve ‘fordítás’, tehát az utána következő értékek az, hogy mennyit fordítottál az objektumra az X, Y és Z tengelyen. A ‘fordítás’ előtt minden megtalálható a Blender kódjában. Mintha a Blender egy hatalmas beágyazott menü lenne, és a Blender Python -> Operations -> Transform -> Translate lehetőséget választottad.
a Blender Python (bpy) kilenc fő szakasza van. Ezeket nem kell megjegyeznie, de néhányuk felismerése segíthet megérteni, hogyan működik a Blender a motorháztető alatt.
- bpy.app-magáról a Blenderről szóló információ, amely futás közben nem változik.
- bpy.kontextus-csak olvasható listák arról, hogy mi jelenleg aktív a Blenderben.
- bpy.adatok-A Blender összes belső adata, például objektumok.
- bpy.msgbus-jelentése “message bus”, és a Blender értesítésére szolgál bizonyos változásokról. Nem kell aggódnunk miatta.
- bpy.ops-a Blenderben elvégezhető összes művelet, a modellezéstől a fájlok hozzáfűzéséig a renderelésig.
- bpy.path-a fájl elérési útjaival foglalkozó funkciók.
- bpy.kellékek – a Blender által használt különböző tulajdonságok. Ezzel megmondhatja a Blendernek, hogy a bemenetnek számnak vagy színnek kell-e lennie.
- bpy.típusok-minden típusú dolog, ami a Blenderben létezik, a módosítóktól a textúrákon át a lámpákig és még sok más.
- bpy.utils-segédprogram funkciók, amelyek csak a Blender, de nem foglalkoznak a belső adatok.
ha kíváncsi vagy, itt található a Blender 2.8 API dokumentációja és az összes korábbi verzió.
munka közben szokja meg, hogy hol találhatók kedvenc eszközei a kódban. Ezen a ponton nem kell mindent megértenie – csak szokja meg, hogy néz ki!
a Power Python konzolja
ha készen áll a következő lépésre, lépjen át a Scripting workspace fülre. Megtalálja a már ismerős info szerkesztő a bal alsó sarokban. Közvetlenül felette van a Python konzol, ahol parancsokat illeszthet be, és dolgokat hajthat végre. Próbálja ki ezt: válasszon ki egy sort az Információszerkesztőben, nyomja meg a Ctrl + C billentyűkombinációt a másoláshoz, majd a Ctrl+V billentyűkombinációval illessze be a konzolba. Nyomja meg az enter billentyűt, és látni fogja, hogy pontosan ugyanaz a művelet történik újra!
most próbáld ki ezt: forgatni, méretezni és mozgatni valamit, vagy bármilyen más három műveletet egy sorban. Másolja mindhármat az info szerkesztőből, majd illessze be őket a konzolba. Most csak három dolgot csináltál egyszerre! Ennek nincs határa, így több száz dolgot tehet egyszerre így, ha akarja. Még akkor is, ha nem megy tovább a kódolásba, ez egy nagyszerű trükk, amelyet a hátsó zsebében tarthat.
parancsok mentése a szövegszerkesztővel
vadászat egy csomó parancson keresztül, valamint a másolás / beillesztés egész idő alatt önmagában elég unalmas, ha sokat csinálod! Spóroljunk magunknak egy kis időt, és tegyük még hatékonyabbá multitaskingunkat a Blender szövegszerkesztőjének használatával.
hozzon létre egy új szövegfájlt, majd másoljon be három vagy több különböző műveletet az info szerkesztőből a szövegszerkesztőbe. Kezdem egy kocka hozzáadásával:
bpy.ops.mesh.primitive_cube_add(size=2, view_align=False, enter_editmode=False, location=(0, 0, 0))
ezután elforgatom a kockát a Z tengely mentén:
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)
Yikes, ez egy csomó kód valami ilyen egyszerű! Ha nem zavar, akkor menj és tartsd meg. Ha azonban félelmetesnek találja, próbáljon meg mindent törölni, kivéve az értéket és az orientált tengelyt, hogy könnyebben olvasható legyen. A többi egyszerűen alapértékeket fog feltételezni.
bpy.ops.transform.rotate(value=-0.261911, orient_axis='Z')
végül adjunk hozzá egy ferde módosítót:
bpy.ops.object.modifier_add(type='BEVEL')
az egyetlen extra dolog, amit meg kell tennie a szkript futtatásához, a típus:
import.bpy
a fájl tetején, hogy el tudja olvasni Blender Python. Az is hasznos, ha bekapcsolja a három gombot a sorszámokhoz, a szócsomagoláshoz és a szintaxis kiemeléséhez a szövegszerkesztő fejlécében.
tessék, most már van egy forgatókönyved! Most egyszerre három nagyon fontos dolgot tehet meg, ha rákattint futtassa a szkriptet a szövegszerkesztő fejlécében. Ha későbbre szeretné menteni, vagy egy másik fájlban szeretné használni, lépjen a Text -> Mentés másként menüpontra, majd mentse .py Python fájlként.
ha más parancsokat próbált meg, mint én, és a szkript nem a várt módon működik, akkor valószínűleg a kontextus miatt van – melyik objektum van kiválasztva, vagy melyik szerkesztő aktív. A Blender 2.8 alkalmazásban kijelölhet vagy megszüntethet objektumokat, ha a kijelölési tulajdonságát igaz vagy hamis értékre állítja:
bpy.data.objects.select_set(state=True)
All Hail Autocomplete
a Blender egyes parancsai csak kódon keresztül hajthatók végre, és nem találhatók meg a felületen. Ezenkívül más dolgok, amelyek megváltoznak a felületen (például az idővonal súrolása), nem mindig adnak valamit az Info szerkesztőben, amelyet másolhat és beilleszthet.
mindig használhatja a Google vagy a Blender API dokumentumokat, hogy segítsen megtalálni a megfelelő parancsot, amire szüksége van, de gyakran könnyebb megtalálni az automatikus kiegészítés használatával. Ha elkezd beírni egy címet a Python konzolba, akkor nyomja meg a Ctrl+Space billentyűkombinációt, és a Blender megmutatja az összes rendelkezésre álló módot, hogy befejezze az írást. Ez egy nagyszerű módja annak, hogy navigáljon a kódbázisban, és felfedezzen új funkciókat.
a szövegszerkesztőnek van egy Ctrl + Space automatikus kiegészítési funkciója is, de nem működik ugyanúgy, és általában nem olyan hasznos. Ha ez valami, amit gyakran használna, azt javaslom, hogy ragadja meg Jacques Lucke kódját Automatikus kiegészítés addon amely lehetővé teszi, hogy sokkal gyorsabban dolgozzon.
fantasztikus sablonok
ha azt szeretné, hogy kapcsolja be a script egy megfelelő addon keresztül érhető el egy gombot a felületen, vagy egy menü, Blender beépített sablonok egy remek kiindulópont. Sok mindenre lehet emlékezni, amikor arról van szó, hogyan lehet megadni a felhasználói beállításokban látható információkat, vagy hogyan lehet regisztrálni az addont úgy, hogy az megfelelően jelenjen meg, tehát a sablonok nagyszerű dolog, amire hivatkozni (vagy másolni és beilleszteni), ha elakad.
valójában tanulás Python
Ha élvezte létre saját szkripteket, de úgy érzi, egy kicsit underwhelmed azok erőtlenség (tettem néhány nagy ígéreteket az elején!), akkor itt az ideje, hogy többet megtudjon a Pythonról és általában a programozásról. Az olyan fogalmak, mint a változók, a hurkok és a függvények elengedhetetlenek ahhoz, hogy valami igazán új vagy erőteljes legyen. Egy kis tudás hosszú utat tehet itt, tehát valóban megéri az extra erőfeszítést. Azt javaslom, hogy ásson be a Pythonba a következő webhelyek egyikén. Nem vagyunk kapcsolatban semmilyen módon, csak jó munkát végeznek.
- Team Treehouse
- Code Academy
- Data Camp
- Tanulj Python
Küldj Segítséget!
elkerülhetetlenül elakadsz a saját szkriptek és kiegészítők készítésének közepén. A legjobbakkal történik! Itt vannak azok a helyek, ahol kérdéseket tehet fel a Blender kódolásával kapcsolatban:
- Blender StackExchange
- Blender DevTalk
többet is megtudhat, ha megnézi ezeket a tanfolyamokat a CG Cookie-n:
- Bevezetés A Python Scripting Blender
- Script Python kezelő funkciók Blender
- Scripting egyéni Telep UI Blender