Blender 2.8 Python Scripting Superkräfte für Nicht-Programmierer
Das Erstellen von 3D-Renderings, Spielen und Animationen ist immer unglaublich aufregend! Nun, außer wenn es herausfordernd oder langweilig wird. Wenn Sie Blender oder eine andere 3D-App für eine Weile verwendet haben, haben Sie sich immer wieder durch die gleichen Aufgaben geschuftet und irgendwann gedacht: „Ich wünschte wirklich, Blender hätte das einfach für mich getan“.
Durch Scripting kann es! Darüber hinaus kann Python unterhaltsame neue Funktionen erstellen, die nicht einmal durch Klicken auf die Benutzeroberfläche möglich sind.
Wenn Sie wie ich sind und keine Ausbildung in Informatik hatten, kann Programmieren wie ein Wort mit vier Buchstaben erscheinen, außer mit elf Buchstaben (2,75 mal so schlimm!). Es ist wie eine geheime Sprache, die nur kluge Leute kennen, die wahrscheinlich auch immer die Nährwertangaben lesen, Raketentriebwerke zum Spaß bauen oder einen Doktortitel in irgendeiner Art von Mathematik haben, die nicht einmal Zahlen verwendet.
Das ist zum Glück überhaupt nicht der Fall. Die Wahrheit ist, wenn Sie Strg + C und Strg + V zum Kopieren und Einfügen verwenden können, können Sie sofort mit der Erstellung Ihrer eigenen Blender-Python-Skripte beginnen.
Gewöhnen Sie sich an den Code
Expositionstherapie. Progressive Desensibilisierung. Nennen Sie es wie Sie wollen, aber der beste Weg, etwas zu normalisieren, das anfangs seltsam erscheint, besteht darin, es oft genug im richtigen Kontext zu sehen.
Jede Aktion, die Sie in der Blender-Oberfläche ausführen, wird über Python-Befehle ausgeführt. Sie können dies selbst überprüfen, indem Sie Ihre Zeitleiste in den Info-Editor wechseln und sehen, was sie ausspuckt, wenn Sie Ihrer normalen Arbeit nachgehen.
Der Info-Editor kann ein bisschen ein Firehose sein, aber es gibt etwas über Befehlszeilen und solche, die Ketzerei programmieren könnten, aber mich am Anfang beruhigen – das meiste, was Sie sehen, ist da, nur für den Fall, dass Sie es brauchen und 98% der Zeit werden Sie es nicht brauchen. Wenn Sie also etwas Einfaches wie das Verschieben des Würfels tun und zwei oder drei vollständige Codezeilen erhalten, können Sie das meiste davon ignorieren. Der wichtige Teil steht gleich am Anfang:
bpy.ops.transform.translate(value = (0.5, 0, 0))
Sie wissen bereits, dass der Name für das Verschieben von etwas ‚translate‘ heißt, also sind die Werte, die danach kommen, wie viel Sie Ihr Objekt auf der X-, Y- und Z-Achse übersetzt haben. Alles vor ‚übersetzen‘ ist, wo dieser Befehl im Blender-Code gefunden wird. Es ist, als ob Blender ein riesiges verschachteltes Menü ist und Sie Blender Python -> Operations -> Transform -> Translate ausgewählt haben.
Es gibt neun Hauptabschnitte von Blender Python (bpy). Sie müssen sich diese nicht merken, aber wenn Sie einige davon erkennen, können Sie besser verstehen, wie Blender unter der Haube funktioniert.
- bpy.app – Informationen über Blender selbst, die sich während des Betriebs nicht ändern.
- bpy.kontext – Schreibgeschützte Listen dessen, was derzeit in Blender aktiv ist.
- bpy.daten – Alle internen Daten von Blender, z. B. Objekte.
- bpy.msgbus – Steht für „Message Bus“ und wird verwendet, um Benutzer über bestimmte Änderungen zu informieren. Nichts, worüber wir uns Sorgen machen müssen.
- bpy.ops – Alle Operationen, die Sie in Blender ausführen können, vom Modellieren über das Anhängen von Dateien bis zum Rendern.
- bpy.pfad – Funktionen, die sich mit Dateipfaden befassen.
- bpy.requisiten – Die verschiedenen Eigenschaften, die Blender verwendet. Sie würden dies verwenden, um Blender mitzuteilen, ob eine Eingabe eine Zahl oder eine Farbe sein soll.
- bpy.typen – Jede Art von Dingen, die in Blender vorhanden sind, von Modifikatoren über Texturen bis hin zu Lampen und vielem mehr.
- bpy.utils – Utility-Funktionen, die nur für Blender sind, aber nicht mit internen Daten umgehen.
Wenn Sie neugierig sind, finden Sie hier die API-Dokumentation für Blender 2.8 und für alle vorherigen Versionen.
Gewöhnen Sie sich während der Arbeit daran, zu sehen, wo sich Ihre bevorzugten Tools im Code befinden. Sie müssen an dieser Stelle nicht alles verstehen – gewöhnen Sie sich einfach daran, wie es aussieht!
Die Python-Konsole von Power
Wenn Sie für den nächsten Schritt bereit sind, gehen Sie zur Registerkarte Scripting Workspace. Unten links finden Sie den bekannten Info-Editor. Direkt darüber befindet sich die Python-Konsole, in die Sie Befehle einfügen und Dinge ausführen können. Versuchen Sie Folgendes: Wählen Sie eine Zeile im Info-Editor aus, drücken Sie Strg + C, um sie zu kopieren, und fügen Sie sie dann mit Strg + V in die Konsole ein. Drücken Sie die Eingabetaste, und Sie werden sehen, dass genau die gleiche Aktion wieder passiert!
Versuchen Sie nun Folgendes: Drehen, skalieren und bewegen Sie etwas oder führen Sie drei weitere Aktionen hintereinander aus. Kopieren Sie alle drei aus dem Info-Editor und fügen Sie sie in die Konsole ein. Jetzt hast du nur noch drei Dinge auf einmal gemacht! Es gibt keine Begrenzung, so dass Sie Hunderte von Dingen auf einmal auf diese Weise tun könnten, wenn Sie wollten. Selbst wenn Sie nicht weiter in die Codierung gehen, ist dies ein großartiger Trick, den Sie in Ihrer Gesäßtasche aufbewahren sollten.
Speichern von Befehlen mit dem Texteditor
Das ständige Durchsuchen einer Reihe von Befehlen und Kopieren / Einfügen ist selbst ziemlich mühsam, wenn Sie dies häufig tun! Lassen Sie uns etwas Zeit sparen und unser Multitasking mit dem Texteditor von Blender noch effizienter gestalten.
Erstellen Sie eine neue Textdatei und kopieren Sie drei oder mehr verschiedene Aktionen aus dem Info-Editor in den Texteditor. Ich beginne mit dem Hinzufügen eines Würfels:
bpy.ops.mesh.primitive_cube_add(size=2, view_align=False, enter_editmode=False, location=(0, 0, 0))
Dann drehe ich den Würfel entlang der Z-Achse:
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)
Huch, das ist viel Code für etwas so Einfaches! Wenn es dich nicht stört, dann mach weiter und behalte es. Wenn Sie es jedoch einschüchternd finden, löschen Sie alles außer dem Wert und der orientierten Achse, damit es einfacher liest. Der Rest wird einfach Standardwerte annehmen.
bpy.ops.transform.rotate(value=-0.261911, orient_axis='Z')
Zuletzt fügen wir einen Abschrägungsmodifikator hinzu:
bpy.ops.object.modifier_add(type='BEVEL')
Die eine zusätzliche Sache, die Sie tun müssen, um das Skript auszuführen, ist::
import.bpy
Oben in der Datei, damit Blender Python gelesen werden kann. Es ist auch hilfreich, die drei Schaltflächen für Zeilennummern, Zeilenumbruch und Syntaxhervorhebung in der Kopfzeile des Texteditors einzuschalten.
Los geht’s, Sie haben jetzt ein Skript! Sie können jetzt drei sehr wichtige Dinge auf einmal tun, indem Sie in der Kopfzeile des Texteditors auf Skript ausführen klicken. Wenn Sie es für später speichern oder in einer anderen Datei verwenden möchten, gehen Sie zu Text -> Speichern unter und speichern Sie es als .py Python-Datei.
Wenn Sie andere Befehle als ich ausprobiert haben und Ihr Skript nicht wie erwartet funktioniert, liegt dies wahrscheinlich am Kontext – welches Objekt ist ausgewählt oder welcher Editor ist aktiv. Sie können Objekte in Blender 2.8 auswählen oder abwählen, indem Sie die selection-Eigenschaft auf True oder False setzen:
bpy.data.objects.select_set(state=True)
Alle Befehle Autocomplete
Einige Befehle, die Blender hat, können nur über Code ausgeführt werden und sind nicht in der Benutzeroberfläche zu finden. Darüber hinaus geben Ihnen andere Dinge, die sich in der Benutzeroberfläche ändern (z. B. das Schrubben der Zeitleiste), im Info-Editor nicht immer etwas, das Sie kopieren und einfügen können.
Sie können immer Google oder die Blender API-Dokumente verwenden, um den richtigen Befehl zu finden, um das zu tun, was Sie brauchen, aber oft ist es einfacher, ihn einfach mit der automatischen Vervollständigung zu finden. Wenn Sie eine Adresse in die Python-Konsole eingeben, können Sie Strg + Leertaste drücken und Blender zeigt Ihnen alle verfügbaren Möglichkeiten, um das Geschriebene zu vervollständigen. Es ist eine großartige Möglichkeit, durch die Codebasis zu navigieren und neue Funktionen zu entdecken.
Der Texteditor verfügt auch über eine automatische Vervollständigungsfunktion für Strg + Leertaste, funktioniert jedoch nicht gleich und ist im Allgemeinen nicht so hilfreich. Wenn es etwas ist, das Sie oft verwenden würden, würde ich empfehlen, Jacques Luckes Code Autocomplete Addon zu greifen, mit dem Sie viel schneller arbeiten können.
Tolle Vorlagen
Wenn Sie Ihr Skript in ein richtiges Addon verwandeln möchten, auf das Sie über eine Schaltfläche in der Benutzeroberfläche oder ein Menü zugreifen können, sind die integrierten Vorlagen von Blender ein großartiger Ausgangspunkt. Es kann viel zu beachten geben, wenn es darum geht, die Informationen in den Benutzereinstellungen bereitzustellen oder das Addon so zu registrieren, dass es ordnungsgemäß angezeigt wird.
Python tatsächlich lernen
Wenn Sie es genossen haben, Ihre eigenen Skripte zu erstellen, sich aber ein wenig über deren mangelnde Leistung enttäuscht fühlen (ich habe am Anfang einige große Versprechungen gemacht!), dann ist es Zeit, mehr über Python und Programmierung im Allgemeinen zu lernen. Konzepte wie Variablen, Schleifen und Funktionen sind unerlässlich, um etwas wirklich Neues oder Leistungsfähiges zu schaffen. Ein wenig Wissen kann hier viel bewirken, es lohnt sich also wirklich. Ich würde empfehlen, auf einer der folgenden Websites in Python zu graben. Wir sind in keiner Weise verbunden, sie machen nur einen guten Job.
- Team Treehouse
- Code Academy
- Datenlager
- Python lernen
Hilfe senden!
Unweigerlich werden Sie beim Erstellen Ihrer eigenen Skripte und Add-Ons stecken bleiben. Es passiert den Besten von uns! Hier sind die Orte, an denen Sie Fragen zum Codieren in Blender stellen können:
- Blender StackExchange
- Blender DevTalk
Sie können auch mehr erfahren, indem Sie sich diese Kurse auf CGI ansehen:
- Einführung in Python Scripting in Blender
- Scripting mit Python-Handler-Funktionen in Blender
- Scripting eine benutzerdefinierte Rig UI in Blender