Blender 2.8 Python Scripting superkrachten voor niet-programmeurs

het maken van 3d renders, games en animaties is altijd ongelooflijk spannend! Behalve als het uitdagend of vervelend wordt. Als je al een tijdje Blender of een andere 3D-app gebruikt, heb je ontdekt dat je steeds weer dezelfde taken doorloopt en op een gegeven moment denkt: “Ik zou echt willen dat Blender dit voor mij deed”.

door scripting kan het! Niet alleen dat, Python kan leuke nieuwe functies die niet eens mogelijk zijn door te klikken rond de interface te creëren.

als je net als Ik bent en geen opleiding in informatica hebt gehad, kan programmeren een vierletterwoord lijken, behalve met elf letters (2,75 keer zo slecht!). Het is een geheime taal die alleen slimme mensen kennen, die waarschijnlijk ook altijd de voedingsfeiten lezen, raketmotoren bouwen voor de lol, of een Ph.D. hebben in een soort wiskunde die zelfs geen cijfers gebruikt.

dat is gelukkig helemaal niet het geval. De waarheid is, als je Ctrl + C en Ctrl + V kunt gebruiken om te kopiëren en plakken, kun je meteen beginnen met het maken van je eigen Blender Python scripts.

wen aan het zien van code

blootstellingstherapie. Progressieve desensibilisatie. Noem het wat je wilt, maar de beste manier om iets te normaliseren dat vreemd lijkt in eerste instantie is om het vaak genoeg in de juiste context te zien.

elke actie die u onderneemt in de interface van Blender wordt uitgevoerd via Python commando ‘ s. U kunt dit zelf controleren door uw tijdlijn over te schakelen naar de Info-Editor en te zien wat het uitspuugt wanneer u uw normale werk doet.

de info editor kan een beetje een brandslang, maar er is iets over command lines en dergelijke dat zou kunnen worden programmering ketterij, maar zet me op hun gemak bij het starten – het grootste deel van wat je ziet is er voor het geval je het nodig hebt en 98% van de tijd die je niet nodig hebt. Dus als je iets simpels doet, zoals het verplaatsen van de kubus en het geeft je twee of drie volledige regels code, kun je het meeste negeren. Het belangrijkste is aan het begin:

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

u weet al dat de naam voor het verplaatsen van iets ’translate’ heet, dus de waarden die daarna komen zijn hoeveel u uw object hebt vertaald op respectievelijk de X -, Y-en Z-assen. Alles voor ‘vertalen’ is waar dat commando wordt gevonden in de code van Blender. Het is alsof Blender een gigantisch genest menu is en je blender Python -> Operations -> Transform -> Translate hebt geselecteerd.

er zijn negen hoofdsecties van Blender Python (bpy). U hoeft deze niet te onthouden, maar het herkennen van een aantal van hen kan u helpen begrijpen hoe Blender werkt onder de motorkap.

  • bpy.app-informatie over Blender zelf die niet verandert tijdens het uitvoeren.
  • bpy.context-alleen-lezen lijsten van wat er momenteel actief is in Blender.
  • bpy.data – alle interne gegevens van Blender, zoals objecten.
  • bpy.msgbus-staat voor” message bus”, en wordt gebruikt voor het melden van Blender van bepaalde wijzigingen. Niet iets waar we ons zorgen over hoeven te maken.
  • bpy.ops – alle bewerkingen die u kunt doen in Blender, van modellering tot het toevoegen van bestanden tot rendering.
  • bpy.pad-functies die omgaan met bestandspaden.
  • bpy.props – de verschillende eigenschappen die Blender gebruikt. Je zou dit gebruiken om Blender te vertellen of een ingang een nummer of een kleur moet zijn.
  • bpy.types-elk type ding dat bestaat in Blender, van modifiers tot texturen tot Lampen en nog veel meer.
  • bpy.utils-Utility functies die alleen voor Blender maar niet omgaan met interne gegevens.

als je nieuwsgierig bent, hier is de API documentatie voor Blender 2.8 en voor alle vorige versies.

terwijl u werkt, went u eraan om te zien waar uw favoriete tools in de code te vinden zijn. Je hoeft het niet allemaal te begrijpen op dit punt – gewoon wennen aan hoe het eruit ziet!

de Python Console van Power

als u klaar bent voor de volgende stap, ga dan naar het tabblad Scripting workspace. U vindt de nu bekende info-editor linksonder. Direct daarboven is de Python Console, waar je commando ‘ s kunt plakken en dingen kunt laten gebeuren. Probeer dit: selecteer een regel in de Info-Editor, druk op Ctrl+C om te kopiëren en gebruik vervolgens Ctrl+V om deze in de console te plakken. Druk op enter en je ziet exact dezelfde actie opnieuw gebeuren!

Probeer nu dit: draai, schaal en verplaats iets, of doe andere drie acties op een Rij. Kopieer alle drie van de info editor en plak ze in de Console. Nu heb je drie dingen tegelijk gedaan! Er is geen limiet aan dit, dus je kunt honderden dingen tegelijk doen op deze manier als je wilt. Zelfs als je niet verder in het coderen, dit is een geweldige truc om te houden in je achterzak.

commando ’s opslaan met de teksteditor

een aantal commando’ s doorzoeken en de hele tijd kopiëren / plakken is op zichzelf al behoorlijk vervelend als je het vaak doet! Laten we onszelf wat tijd besparen en onze multitasking nog efficiënter maken door Blender ‘ s teksteditor te gebruiken.

Maak een nieuw tekstbestand en kopieer en plak drie of meer verschillende acties van de info-editor in de tekst-editor. Ik zal beginnen met het toevoegen van een kubus:

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

dan draai ik de kubus langs de Z-as:

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, dat is een hoop code voor zoiets simpels! Als het je niet stoort, ga je gang en hou het. Als je het intimiderend vindt, probeer dan alles te verwijderen, behalve de waarde en de georiënteerde as, zodat het makkelijker leest. De rest zal gewoon standaardwaarden aannemen.

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

ten slotte, laten we een afschuining modifier toevoegen:

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

het enige extra ding dat je moet doen om het script uit te voeren is het type:

import.bpy

bovenaan het bestand, zodat het Blender Python kan lezen. Het is ook handig om de drie knoppen voor regelnummers, regelafbreking en syntaxismarkering in de koptekst van de teksteditor in te schakelen.

daar ga je, je hebt nu een script! U kunt nu drie zeer belangrijke dingen tegelijk doen door te klikken op Script uitvoeren in de koptekst van de teksteditor. Als u het voor later wilt opslaan of in een ander bestand wilt gebruiken, gaat u naar Text -> opslaan als en opslaan als een .Py Python-bestand.

als u andere commando ‘ s hebt geprobeerd dan ik en uw script werkt niet zoals verwacht, Is dit waarschijnlijk te wijten aan context – welk object is geselecteerd of welke editor actief is. U kunt objecten in Blender 2.8 selecteren of deselecteren door de eigenschap selectie in te stellen op True of False:

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

All Hail Autocomplete

sommige commando ‘ s die Blender heeft, kunnen alleen door middel van code worden uitgevoerd en zijn niet gevonden in de interface. Bovendien, andere dingen die veranderen in de interface (zoals het schrobben van de tijdlijn) niet altijd geven u iets in de Info-Editor die u kunt kopiëren en plakken.

u kunt altijd Google of de Blender API Docs gebruiken om u te helpen het juiste commando te vinden om te doen wat u nodig hebt, maar vaak is het makkelijker om het gewoon te vinden met behulp van autocomplete. Als je begint met het typen van een adres in de Python Console, kun je op Ctrl+Space drukken en Blender zal je alle beschikbare manieren tonen om te voltooien wat je hebt geschreven. Het is een geweldige manier om door de codebase te navigeren en nieuwe functies te ontdekken.

de teksteditor heeft ook een Ctrl + Space autocomplete functie, maar het werkt niet hetzelfde en is over het algemeen niet zo nuttig. Als het iets is wat je vaak zou gebruiken, zou ik aanraden grijpen Jacques Lucke ‘ s Code Autocomplete addon die u zal toestaan om veel sneller te werken.

geweldige sjablonen

Als u van uw script een goede addon wilt maken die toegankelijk is via een knop in de interface of een menu, zijn de ingebouwde sjablonen van Blender een geweldige plek om te beginnen. Er kan veel te onthouden zijn als het gaat om het verstrekken van de informatie die is te zien in de voorkeuren van de gebruiker of hoe de addon te registreren, zodat het goed wordt weergegeven, dus sjablonen zijn een geweldig ding om te verwijzen naar (of kopiëren en plakken van) als je vast komen te zitten.

eigenlijk leren Python

als je hebt genoten van het maken van je eigen scripts, maar voel je een beetje onder de indruk van hun gebrek aan macht (Ik maakte een aantal grote beloften in het begin!), dan is het tijd om meer te leren over Python en programmeren in het algemeen. Concepten zoals variabelen, loops en functies zijn essentieel om iets echt nieuw of krachtig te maken. Een beetje kennis kan hier een lange weg gaan, dus het is echt de moeite waard. Ik zou aanraden graven in Python op een van de volgende sites. We zijn op geen enkele manier verbonden, ze doen gewoon goed werk.

  • Team Boomhut
  • Code Academy
  • Data Camp
  • Python Leren

Stuur Hulp!

onvermijdelijk komt u vast te zitten in het midden van het bouwen van uw eigen scripts en add-ons. Het overkomt de beste van ons. Hier zijn de plaatsen waar u kunt gaan om vragen te stellen over het coderen in Blender:

  • Blender StackExchange
  • Blender DevTalk

u kunt meer informatie krijgen door deze cursussen op CG Cookie te bekijken:

  • Inleiding tot Python Scripting in Blender
  • Scripting met Python Handler functies in Blender
  • Scripting a Custom Rig UI in Blender