blender freestyle

Freestyle. NPR Rendering in Blender- Artikel in Digital Production 1401

Für den Bereich fotorealistisches Rendering bringt Blender seit längerer Zeit die Pathtracing Engine Cycles mit. Für den nicht fotorealistischen (NPR) Bereich, wie beispielsweise Cartoons, musste bisher auf den zweiten mitgelieferten Renderer, Blender Internal, ausgewichen werden. Dieser ist aber inzwischen schon arg in die Jahre gekommen und bot für den Zeichnungsstil nur begrenzte Möglichkeiten. Seit Version 2.67 ist in Blender das Render-Add-on Freestyle integriert, das ausschließlich Linien rendert und dabei eine große Bandbreite an Konfigurationsmöglichkeiten hat.

Freestyle wird als Zusatz für den internen Renderer angeboten, kann aber dank des Compositors in Blender auch mit Cycles und anderen Render-Engines kombiniert werden.

The Story of (Free-)Style

Die Entwicklung von Freestyle geht zurück auf eine wissenschaftliche Veröffentlichung im Jahr 2004. Ein Jahr später wurde ein Open-Source-Projekt ins Leben gerufen, um die in dem Paper beschriebenen Methoden in einer eigenständigen Render-Engine zu implementieren. Im Jahr 2007 schlugen dann zwei Entwickler auf der Mailing-Liste von Blender vor, Freestyle in die 3D-Suite zu integrieren. Das Projekt wurde im Jahr 2008 im Rahmen des “Google Summer of Code” begonnen und seither in einer seperaten Blender-Version, einem sogenannten Entwicklungszweig oder “Branch”, geführt.

Während der Entwicklung ging die normale Entwicklung von Blender natürlich weiter, und so passierte es, dass die Freestyle-Entwickler ihr Werkzeug zweimal mehr oder minder komplett überarbeiten mussten. Zum ersten Mal nach der Veröffentlichung von Blender 2.50, zum zweiten Mal nach der Integration von “BMesh”, welches das in die Jahre gekommene Mesh-System in Blender komplett durch moderne Technologie ersetzte. Im Jahr 2013, neun Jahre nach der Publikation des Papers und fünf Jahre nach Beginn der Integrationsarbeiten, wurde Freestyle endlich in den Hauptzweig von Blender aufgenommen und steht seit Version 2.67 jedem Blender-Nutzer zur Verfügung.

Freestyle, was ist das eigentlich?

Salopp gesagt, ist Freestyle ein Werkzeug, um Linien auf Basis der Kanten und Konturen von 3D-Objekten zu zeichnen. Das passiert nachdem das eigentliche Rendering beendet ist und kann damit als Post-Processing-Effekt betrachtet werden. Sprich, wenn man ein cartoon-ähnliches Rendering wünscht, dann braucht man neben Freestyle auch noch einen Toon-Shader. Seit Version 2.68 bringen sowohl der Blender-interne Renderer als auch Cycles einen solchen mit. Wenn man nur eine Strichzeichnung benötigt, dann kann man den ersten Schritt weglassen und ausschließlich Freestyle-Linien rendern. Derzeit werden die Linien als Bitmaps ausgegeben, für die Zukunft ist aber auch ein Export als Vektorgrafik im SVG-Format geplant.

Anwendungsbeispiele

Bei den Suzanne Awards, dem Kurzfilm-Programm der jährlichen Blender-Konferenz in Amsterdam, waren schon im Jahr 2012 zahlreiche Einreichungen zu sehen, die mit Hilfe von Freestyle erstellt wurden. Das lag wohl unter anderem daran, dass Rendering von Freestyle in Verbindung mit Toon-Shadern und eventuellem Postprocessing im Compositor ausgesprochen schnell vonstatten geht. Die möglichen Anwendungen sind jedenfalls vielfältig, einige Beispiele sollen hier vorgestellt werden.

Am naheliegendsten ist es natürlich, zusammen mit einem Toon-Shader Freestyle für digitalen Zeichentrick einzusetzen. Hier werden einige Möglichkeiten geboten, verschiedene Stile zu erzeugen. Die Linien können zum Beispiel so gerendert werden, als wären sie mit einem typischen Kalligraphie-Federkiel gezeichnet, hierbei ändert sich die Dicke abhängig vom Winkel. Oder als hätte die Hand des Zeichners leicht gezittert, ein Stil der vor allem durch die späten Peanuts-Comics große Beliebtheit erlangte.

Für Zeichnungen stehen einige Werkzeuge bereit. So lassen sich mehrere Linien leicht versetzt mit variierender Dicke und Deckkraft erzeugen, so als hätte der Zeichner mehrere Striche gezogen. Auch lässt sich einstellen, dass die Linien jeweils etwas länger als die eigentliche Kante gezeichnet werden, was ebenfalls der Glaubwürdigkeit als Zeichnung zugute kommt. Selbst die Kästen, mit denen Zeichner vor dem eigentlichen Werk die Proportionen abstimmen, lassen sich mit Freestyle erzeugen.

blender freestyle
Die schraffierten Oberflächen bei diesem Beispiel von Charblaze sind durch Texturen erzeugt, Freestyle zeigt sich für die Kanten und Konturen verantwortlich.

Eine weitere Anwendungsmöglichkeit ist, pseudo-technische Zeichnungen aus 3D-Modellen zu erzeugen. Diese lassen sich zum Beispiel für Präsentationen nutzen. Das 3D-Modell zweimal dupliziert und rotiert, ergibt Ansichten von allen drei Achsen, ein weiteres Duplikat zweimal rotiert, eine Isometrie. Da Freestyle auch verdeckte Kanten rendern kann, lässt sich so das gesamte Modell abbilden, zum Beispiel mit den verdeckten Bereichen als gestrichelte Linien. Freestyle geht hier sogar so weit, dass man unterschiedliche Überdeckungstiefen auswählen kann. So ist es zum Beispiel möglich, dass Kanten, die von zwei Flächen überdeckt sind, anders dargestellt werden als Kanten, die nur von einer Fläche überdeckt sind. Ein Gefühl für die Tiefe eines Modells lässt sich herstellen, indem die Kanten- je nach Entfernung von der Kamera- unterschiedliche Farben, Dicke oder Transparenz haben können, natürlich mit feinen Gradienten.

Dank Freestyle lässt sich auch mit wenig Aufwand ein Wireframe-Render des 3D-Modells erstellen. Hierfür müssen lediglich alle Kanten des Objekts als Freestyle-Kanten markiert werden und schon ist der Wireframe-Render fertig. Dieser kann natürlich auch über den Original-Render gelegt werden und von den oben beschriebenen Features, wie der Darstellung von verdeckten Kanten und Fade-Out in die Tiefe, profitieren.

blender freestyle
Für Wireframe-Render lässt sich Freestyle besonders gut einsetzen. Hier ein stark stilisierter Drahtgitter-Render mit verdeckter Geometrie (gestrichelte Linien) und Fade-Out. Die beiden Features schlagen allerdings auch deutlich auf die Renderzeit durch.

Ein letztes praktisches Anwendungsbeispiel wäre das Erstellen eines Logos. Bei diesem kann zuerst eine Version in 3D mit Beleuchtung, Materialien et cetera erstellt werden. Später kann dann noch die 2D-Version mit Freestyle ausgerendert werden. Normalerweise würde man erst die 2D-Version in einem Vektorgraphik-Programm erstellen. Letztgenanntes Beispiel ist ein Fall, der wohl am meisten vom geplanten SVG-Export profitieren würde.

Wie funktioniert Freestyle praktisch?

Wer sein Rendering mit Freestyle-Linien aufpeppen will, sollte sich zuallererst im Klaren sein, dass Freestyle derzeit nur für den internen Renderer zur Verfügung steht. Wer für das Rendering Cycles verwenden will, sollte eine Kopie der Szene erstellen und dort auf den Blender-internen Renderer wechseln. In den Render-Einstellungen des Properties-Panels findet sich dann unter dem „Post Processing“-Tab ein neues Tab mit der Bezeichnung „Freestyle“. Dort findet sich neben einem Häkchen zum Aktivieren von Freestyle nur eine Option für die Dicke der Linien. Der Rest der Optionen findet sich sich bei den Einstellungen für die Render-Layer. Bei der „Line Thickness“ kann man zwischen absoluter und relativer Dicke wählen. Absolut bedeutet, dass die Linien immer die gleiche Dicke haben, unabhängig von der Größe des Renderings. Das bedeutet natürlich auch: Wenn man zum Beispiel für ein Poster zunächst Preview-Renderings mit geringer Auflösung macht, erscheinen bei der finalen Version in voller Auflösung die Linien plötzlich sehr dünn. Um das Problem schnell ausgleichen zu können, findet sich daher bei der Absolut-Version noch ein Multiplikator. Wenn man zum Beispiel die Preview-Renderings bei 25 Prozent durchgeführt hat, so kann man für die finale Version dort einfach den Wert 4.0 eingeben. Die Dicken der unterschiedlichen Linienstile werden dann mit diesem Wert multipliziert.

Im Tab für die Render-Layer finden sich dann die eigentlichen Einstellungen für die Freestyle-Linien. Standardmäßig ist der Parameter-Editier-Modus eingestellt. Bei diesem erstellt man sich Linienstile, wie sonst von Blender gewohnt, über diverse Knöpfe und Werte. Für fortgeschrittene Nutzer gibt es außerdem noch den „Python Scripting Mode“. Dieser erlaubt größere Freiheiten und zudem den einfachen Austausch von Freestyle-Stilen über Python-Dateien. Diese Übersicht beschränkt sich aber auf den Modus zum Editieren von Parametern.

Linien und ihr Stil

Jeder Freestyle-Layer besteht aus einem Set von Linien. Dieses bestimmt, welche Kanten gerendert werden. Zum Beispiel könnte man nur die Kontur des Objekts zeichnen oder sämtliche Kanten, die man vorher als Freestyle-Kante im Editiermodus markiert hat. Oder nur die verdeckten Kanten. Jedem Linien-Set ist ein Stil zugeordnet. Dieser beschreibt letztlich, wie die Linien aussehen sollen. Einfluss nehmen kann man dabei auf mehrere Parameter. Zum einen auf den Strich selbst – soll der Strich eine durchgehende Linie sein oder periodisch unterteilt werden? Sollen mehrere Kanten zu einem Strich zusammengefasst werden oder vielleicht doch lieber jede Kante einzeln gezeichnet werden? Außerdem können Farbe, Transparenz und Dicke beeinflusst werden. Diese drei Parameter können jeweils über Modifier verändert werden. Möglich ist beispielsweise, die Dicke entlang des Strichs varriieren zu lassen, zum Beispiel könnte sie immer dünner werden. Andere verfügbare Optionen sind die Distanz zur Kamera, Entfernung von einem gegebenen Objekt (zum Beispiel ein Empty) oder durch das Material, welches das Objekt an dieser Kante hat.

Anders hingegen verhält es sich mit dem letzten Parameter, der die Geometrie der Linien selbst beeinflusst. Hier finden sich vor allem verschiedene Arten von Rauschen und mathematische Funktionen. Eine mit zittriger Hand erstellte Zeichnung könnte man zum Beispiel über eine Sinus-Verzerrung zusammen mit ein wenig Perlin-Rauschen nachbilden. Bei den Einstellungen für die Geometrie findet sich aber noch viel mehr. So kann jeder Strich in beide Richtungen ein wenig verlängert werden, oder man kann die Bounding-Boxes der einzelnen Elemente nachzeichnen lassen.

Die Aufteilung in Linien-Sets und Stile mag zwar auf den ersten Moment etwas kompliziert und verwirrend erscheinen, ist aber streng logisch aufgebaut. Will man zum Beispiel verdeckte Kanten anders darstellen als sichtbare, so benötigt man zwei Sets. Eines für die nicht verdeckten Kanten, das man zum Beispiel mit einer durchgehenden Linie darstellen könnte, und eines für die verdeckten Kanten. Letzteres könnte zum Beispiel leicht transparent und gestrichtelt dargestellt werden.

Kombination mit anderen Render-Engines

Die Nutzung des Blender-internen Renderers ist vielleicht nicht jedermanns Sache. Zum Glück gibt es eine einfache Möglichkeit, Freestyle mit anderen von Blender unterstützten Render Engines zu nutzen, zum Beispiel mit Cycles. Dabei kommt zugute, dass Freestyle ein Post-Processing-Effekt ist. Der Trick ist Folgender: Man macht eine Kopie der Szene (zum Beispiel mit verlinkten Objekten, damit sich Änderungen auf beide Szenen auswirken) und wählt bei der Kopie der Szene den Blender-internen Renderer. Dort aktiviert man Freestyle und schaltet bei den Includes für die Render-Layer alles aus bis auf Freestyle. Damit erhält man in der zweiten Szene ausschließlich die Freestyle-Linien. Über den Compositor lassen sich diese dann mit dem Rendering der anderen Engine kombinieren.

blender freestyle
Bei einer Auflösung von 5.120 x 2880 Bildpunkten benötigte dieser Render von Frederik Steinmetz inklusive Compositing rund 50 Sekunden.

Fazit

Mit Freestyle hat die NPR-Community um Blender ein sehr mächtiges Werkzeug für zahlreiche Anwendungsfälle an die Hand bekommen. Es gab Befürchtungen, dass dieser Zweig mit der Einführung von Cycles vernachlässigt werden würde, was sich aber nicht als richtig herausgestellt hat. Mit dem Projekt BEER („Blender Extended Expressive Rendering“) sollen zudem die Toon-Shading- Optionen des internen Renderers deutlich erweitert werden. In der Kombination mit Freestyle könnte sich Blender zum Geheimtipp für die Produktion von Zeichentrick mittels 3D mausern.

 

Dieser Artikel erschien im Magazin Digital Production, Ausgabe 1401. Herunterladen können Sie ihn hier als PDF. Darüber hinaus gibt es noch ein Interview mit Tamito Kajiyama, dem Entwickler von Freestyle und Hauptverantwortlichen für dessen Integration in Blender.