Nicht-fotorealistische Computergrafik / Cartoon Shading
Icon des Grundlagenmoduls
Kurze Beschreibung des Inhalts, vor allem für die Suchabfragen
Nicht-fotorealistische Computergrafik und deren Eigenschaften: Cartoon-Shader und Vektor-Renderer
Grundlagenmodule, die für dieses Grundlagenmodul vorausgesetzt werden sollten
Kapitel
Vorbemerkung / NPF

Nicht-fotorealistisches Rendering oder Non-Photorealistic Rendering ( NPR) ermöglicht alles das, was nicht unbedingt realitätsnah oder fotorealistisch aussehen soll. Durch Cartoon-Shader, Plugins oder eigene Vector-Renderer lassen sich unendlich viele unterschiedliche Stile rendern. Saubere technische Zeichnungen, handgezeichnete Skizzen, Zeichnungen mit Filzstift, Edding oder Kohle, abstrakte Maleffekte oder div. Comic-Stile können gerendert werden. Durch Kombinationen, auch mit fotorealistischen Renderings, ist die Anzahl an kreativen Lösungen für Standbilder, Animation oder auch Echtzeitanwendungen unendlich groß.

Verschiedene Renderergebinsse:
Gerendert wurde mit dem Maya Software Renderer in Kombination mit dem Plugin Tomcat. Dieses Plugin verwendet Paint Effects Brushes für die Konturlinien. Effekte wie Ölfarben, Pastelkreide, Aibrush oder Buntstifte sind dadurch möglich.

Generell bietet ein nicht-fotorealistischer Shader bzw. Comic-Shader zwei separate Komponenten:

  • Outline bzw. Konturzeichnung: Durch eine Umrisslinie wird das Objekt definiert.
  • Color-Shading bzw. Farbfüllung: Füllt die Flächen des Objektes
(a) Outline im Vektor-Renderer Ravix von electricrain gerendert
(b) Outline Shading mit einem Cartoon-Shader
(c) Outline und Color-Shading mit einem Cartoon-Shader
(d) Fotorealistisches Rendering

Vergleich: Photorealistisches Rendering / Nicht-fotorealistisches Rendering

Farbfüllung

Anstatt mit einer Standardmethode wie der Phong-Beleuchtung einen Eckpunkt zu Beleuchten und glatte Farbverläufe zu erzeugen, kann die Farbe auf Objektflächen auch in Stufen interploiert werden. Der Farbverlauf kann so verfremdet werden, dass die beleuchteten Objekte im Comic-Stil erscheinen. Meist wird für die Farb-Schattierung ein Lambert-Beleuchtungsmodell zur diffusen Beleuchtung verwendet. Der Winkel zwischen Flächennormale n und dem Lichtvektor L wird als Maß für die Abschwächung herangezogen. Durch einen Farbverlauf kann diese Abschwächung kontrolliert werden.

Die Beleuchtung wird nach dem Beleuchtungsmodell von Lambert berechnet. Der Winkel zwischen Flächennormale und Lichtvektor bestimmt nach dem Beleuchtungsmodell von Lambert die Intensität des darzustellenden Punktes. Das Color-Shading der Kugel wird durch einen Farbverlauf gesteuert. Der abgebildete Farbverlauf definiert ein Color-Shading nach folgenden Regeln:
90-80° = RGB (102/102/102)
79-60° = RGB (153/153/153)
59-30° = RGB (204/204/204)
29°-0 = RGB (255/255/255)
Ein Cartoon-Shader mit unterschiedlichen Verläufen:
Der Farbverlauf des linken Schaders verläuft linear, der rechte Shader erzeugt harte Schattierungen. Die für den Comic-Look so typische Umrisslinie wird ähnlich berechnet.
Outline

Für Konturlinien gibt es verschiedene Ansätze, die jeweils ihre eigenen Vor- und Nachteile haben. Einige generelle Varianten für Umrisslinien sind:

  • Vektor-Renderer eignen sich besonders für exakte Linienzeichnungen jedoch nicht für handgezeichnete geschwungene Linien. Es lassen sich die Stichbreite sowie die Detailzeichnung innerhalb des Objektes beeinflussen. Eine Winkeleinstellung zwischen Flächennormalen ist dafür verantwortlich, ob eine Linie gezeichnet wird oder nicht.
  • Das Plugin Tomcat verknüpft Paint Brushes mit den berechneten Konturlinien. Effekte wie Ölfarben, Pastelkreide, Aibrush oder Buntstifte sind dadurch auch für Umrisslinien möglich.
  • Cartoon-Shader, der abhängig vom Winkel zwischen Kamera und Flächennormale über einen Farbverlauf Konturlinien berechnet. Diese Lösung eignet sich ehr für organische bzw. runde Formen.

(a) Outline Shading mit einem Cartoon-Shader (Ramp-Shader mit Sampler-Info)
(b) Vector-Renderer: Konturlinie= 4.0 pt |Kantendetail= 90°
(c) Vector-Renderer: Konturlinie= 4.0 pt | Kantendetail= 45°
(d) Vector-Renderer: Konturlinie= 4.0 pt | Kantendetail= 90° | Verdekte Linien berücksichtigt

(a) Outline Shading mit einem Cartoon-Shader (Sampler-Info)
(b) Outline im Vektor-Renderer Ravix von electricrain gerendert
Konturlinie durch Geometrie
Eine weitere Möglichkeit für Konturlinien ist eine zusätzliche invertierte und skalierte Geometrie: Zuerst wird das Originalobjekt dupliziert. Dieses Duplikat wird in Richtung der Flächennormalen skaliert, quasi aufgeblasen und umschließt somit das gesamte Originalobjekt. Die Flächennormalen des Duplikats werden invertiert und das Objekt bzw. das neue Material (je nach Software abhängig) wird auf einseitig oder single sided eingestellt. Somit wird das Original wieder sichtbar, das Duplikat bildet die Konturlinie. Die Farbe der Umrisslinie wird durch ein neues Material definiert, die Dicke ist vom Skalierungswert des Duplikats abhängig.
Diese Methode eignet sich für einfache und runden/organische Objekte und ist in der Regel nicht besonders rechenintensiv. Dadurch ist diese Methode auch für Echtzeitanwendungen sinnvoll. .Bei exakten, eckigen Objekten wie z.B. bei Technischen Visualisierungen eignet sich der Vektor-Renderer, der wesentlich länger rendert.

Beispiel für Konturlinie durch Geometrie in Echtzeitanwendung: XIII

(a) skaliertes Duplikat mit einem Lambert-Shader
(b) skaliertes Duplikat mit invertierten Normalen (das Material bzw. Objekt ist auf single Sided eingestellt)
(c) originales Objekt
(d) originales Objekt
(e) originales Objekt mit skaliertem Duplicat mit invertierten Normalen

Konturlinie durch Geometrie

Vector-Renderer

Ein Vektor-Renderer wie Swift 3D oder Illustrate sind eigenständige Renderer. Diese können eine 3d-Szene wie ein Standard-Renderer rastern – als Pixel-Grafik berechen. Zusätzlich kann die Szene auch in 2d-Vektoren, zu Kurven und Flächen berechnet werden. 2d-Vektorformaten wie Adobe Illustrator, EPS-Daten oder Macromedia SWF können gerendet werden. Vektor-Renderer reduzieren den Farbraum der 3d-Szene auf ein, zwei oder mehreren Farben bzw. Farbflächen. Umrisslinien, Schatten, Glanzlichter und Reflexionen werden bei Bedarf berücksichtigt. Vektor-Renderer basieren auf dem Erkenne von Geometriekanten und eignen sich nicht für Rasterkanten, wie bei prozeduralen Texturen oder Bitmaps. Fällt die Wahl auf einen Vector-Renderer, sollten keine Maps verwendet werden. Generell verursachen Rasterkannten besonders in Animationen unerwünschten Flackereffekten.

Vector-Animation

(a) Vektor-Renderer: Konturlinie der Geometrie, ohne Füllfarbe, als 2d-Vektordatei (Adobe Illustrator) gerendert.
(b) Vektor-Renderer: Konturlinie der Geometrie mit Füllfarbe (Full Color)
(c) Vektor-Renderer: Konturlinie der Geometrie mit Füllfarbe und Verlauf (Area Gradient), zusätzliche Glanzlichter und Reflexionen
(d) Standard-Renderer: Ein Cartoon-Shader mit prozeduraler Textur
(e) Vektor-Renderer: Konturlinie der Geometrie mit Füllfarbe (Full Color) in Kombination mit prozduraler Textur

Vector-Renderer Link
Illustrate - Cell and illustration renderer
http://www.davidgoul.com
Swift 3D - Cell and illustration renderer electric rain
Ravix - Cell and illustration renderer electric rain
Ergänzende, erweiternde und vertiefende Module und Links







Relevante Kategorien und Bereiche
%Kategorie und Bereich eingeben, z.B. 3D-Grafik Modelling

Glossarbegriffe, die in diesem Grundlagenmodul erklärt werden

%Glossarbegriff
%Glossaraliasbegriff  
%Glossartext