Was ist 3D-Grafik ?

Natürlich können die meisten was mit diesem Begriff anfangen, nur ist dieses Thema leider nicht einfach in drei Sätzen erklärt. Hierbei gibt es eine Menge von Unterteilungen wie z.B. 3D-Konstruktion, 3D-Rendering oder Echtzeit 3D für Spiele. Die meisten sind miteinander verwandt und müssen auch in einer sogenannten Pipeline genutzt werden, was heißt das verschiedene Arten der 3D-Grafik nacheinander kombiniert werden müssen. Zum Beispiel kann man kein Computerspiel ohne 3D-Rendering entwickeln, da z.B. Texturen meistens aus 3D-Programmen wie Maya, MODO, 3ds Max oder Cinema 4D errechnet (oder auch 'gebacken') werden. Hier werden auch hochauflösende Modelle erstellt und daraus erstellt man Bitmaps wie Normal-, Bump-, Diffuse- oder Ambient Occlusion-Maps. Dann erstellt man ein weniger hoch aufgelöstes Modell und legt dann diese Bitmaps auf dieses Modell. Normal-, und Bumpmaps geben Informationen über Struktur der Oberfläche, also beulen oder sonstige Erhöhungen/Vertiefungen, wobei Normalmaps auch Informationen der Blickrichtung von Flächennormalen haben. Diffusemaps sind einfach die Farbinformation des Modells und Ambient Occlusion wird weiter unten etwas genauer erklärt. 3D-Grafik ist sehr komplex und es sind quasi keine Grenzen gesetzt. Das macht es für mich so interessant, da man nebenbei auch ein bisschen Physik und Naturwissenschaft lernt :).

Das Internet ist voll von Tutorials, mit denen man sich ansehen kann wie es genau funktioniert. Trotzdem versuche ich hier mal kurz und einfach anzuschneiden worum es in meinem Hobby und Beruf geht.

Grundsätzlich muss man vier Sachen erledigen um ein Rendering zu erstellen.

1. Geometrie erstellen

2. Materialien festlegen/erstellen

3. Beleuchtung

4. Positionieren einer Kamera

Im Grunde ist es wie Fotografieren, nur das man hierbei keine Geometrie und Materialien erstellen muss, aber Licht und Kamera auch hier natürlich zwingend nötig.

Geometrie sind alle Objekte in einer Szene. Diese Geometrie kann auch aus der 3D-Kontruktion kommen was bei einer Produktvisualisierung völlig normal ist. Es soll bei einer Produktvisualisierung meist gezeigt werden was in der Realität noch nicht existiert, also nutzt man hier die Konstruktionsdaten vom Entwickler die man meistens zur Verfügung gestellt bekommt. Hier wird hauptsächlich die Volumenmodellierung und die Flächenmodelling genutzt.

Materialien oder auch Shader simulieren das Verhalten von Lichtstrahlen, wenn sie auf eine Oberfläche treffen. Hier werden Eigenschaften wie Farbe, Rauheit, Streuung, Reflektion und Glanz festgelegt. Die Möglichkeiten sind vielseitig und sehr komplex. Zum Beispiel kann auch das Verhalten von Lichtstrahlen simuliert werden, die eine bestimmte Tiefe in ein Objekt eindringt und darunter verstreut wird. Diese Materialien heißen 'subsurface scattering'-Materialien (SSS) und einer der bekanntesten Vertreter dieser Art von Material ist die menschliche Haut. Man sieht es am besten wenn man sich eine Taschenlampe an einen Finger hält und dieser dann scheinbar glüht. Milch oder Orangensaft sind hier auch bekannte Beispiele für diese Art von Material.

Beleuchtung wird oft unterschätzt und vernachlässigt. Mit Licht lässt sich ganz drastisch die Stimmung beeinflussen und die Setzung der Lichtquellen ist quasi identisch mit der des Fotografierens oder des Films. Hier wird auch definiert wie der Schatten wirken soll, d.h. ob das Licht ein harten oder weichen Schatten werfen soll. Der Vorteil der Computergrafik ist hier, das man auch Lichter ohne Schattenwurf erstellen könnte.

Kameras sind auch stark für die Wirkung des Bildes verantwortlich. Wie auch bei fotografieren ist eine interessante Perspektive wichtig für ein schönes Rendering. Regeln wie der Goldene Schnitt oder Drittel-Regel sind hier genauso richtig wie in der Fotografie. Die Kamera bestimmt auch die Bildgröße/Verhältnis und auch spezifische Einstellung der Fotografie, wie Blende, Weitwinkel, f-Stop für Tiefenunschärfe oder auch Bewegungsunschärfe (Motionblur) bei bewegten Szenen.

Alle vier sind eine Wissenschaft für sich. In großen Studios arbeiten mehrere Leute an jeder einzelnen Kategorie und es wird wesentlich komplizierter, wenn Bewegung ins Spiel kommt. Dann muss man sich auch mit 'Rigging' auseinandersetzen was unter umständen sehr kompliziert werden kann. 'Rigging' nennt man das definieren der Abhängigkeit der Geometrie zueinander (Kinematik). Hierbei baut man beispielsweise aus 'Knochen' ein Skelett, was sich bei Bewegung korrekt verhält (z.B. man zieht am Finger und der Arm bewegt sich). Darauf will ich hier aber nicht eingehen, denn ich denke das lässt sich schlecht in einfachen Worten erklären.

Der letzte Schritt ist das Rendern selbst, was je nach Rechenleistung des verwendeten PC entweder Stunden oder Wochen dauern kann. Hier gilt die Regel: Es kann nie genug Leistung geben! Aber dadurch das die PCs immer schneller werden, ist es schon an einem PC 'von der Stange' möglich gute Bilder zu erstellen. Zum Vergleich: Eine Szene aus der Software Real3D (heute Realsoft 3D) auf einem Amiga 500 mit 1 MB hatte 4 Stunden gedauert. Ein späterer Test auf einem PC (Intel 486 DX4 100Mhz mit 8MB und Windows 3.11) brauchte nur 45 Sekunden.

Anhand eines Beispiels möchte ich auch verschiedene Ausgaben (passes) zeigen. Es ist möglich verschiedene Informationen als Bilder auszugeben und die später in einem 2D-Grafikprogramm wie Affinity Photo, GIMP oder Adobe Photoshop zur nachträglichen Manipulation zu nutzen:

FinalRender (Beauty- oder auch Diffuse-Map)

Im FinalRender-Pass wird wie der Name schon sagt das fertige Rendering ausgegeben und kommt dem fertigen Bild schon ohne Bearbeitung am nächsten. Es ist auch der rechenintensivster Pass, da alle Eigenschaften der Szene berechnet werden (Spiegelung, Glanz, Globale Illumination usw.). Alle zusätzlich ausgegebenen Passes sind durch diesen schon vorhanden und können daher ohne großen Zeitaufwand zusätzlich gespeichert werden.

Ambient Occlusion

Ambient Occlusion (Umgebungsverdeckung) simuliert einen Effekt der GI (Globale Illumination). Je näher sich Flächen kommen, um so schlechter kommt das Licht an die Oberfläche. Dadurch entsteht ein Schatten, den man später mit einer 2D-Software zu dem FinalRenering (Bild 2) hinzu multipliziert (Bild 3). Dieser Pass ist physikalisch nicht korrekt, aber man bemerkt den Unterschied kaum. Durch das hinzufügen des AO-Passes wirken die Bilder wesentlich realistischer und kontrastreicher.

Z-Depth (Z-Puffer)

Mit dem Z-Puffer kann man z.B. mit Adobe Photoshop oder ähnlichen Programmen dem FinalRendering eine Unschärfe in Abhängigkeit der Bildtiefe hinzufügen. Diese Funktion fehlt momentan noch in Affinity Photo, aber ich habe das schon (mehrfach :) ) im Forum angefragt und hoffe das es bald implementiert wird. Das simuliert einen Effekt, den man aus der Fotografie kennt und zwar die der Tiefenschärfe. Somit kann man ohne viel Rechenaufwand den Fokus auf bestimmte Teile im Bild legen und lässt das Bild auch sehr viel realistischer aussehen. Mit Compositing-Software wie AfterEffects, Fusion oder Nuke lassen sich so auch sehr gut eine fokusierende Kamera animieren. Man könnte die Tiefenschärfe auch direkt in das FinalRendering einrechnen lassen, aber man hat später keine Kontrolle darüber, wo und wie stark der Fokus sich im Bild befinden soll. Deshalb ist es üblich den Z-Puffer gesondert auszugeben. Es spart zudem Rechenzeit, da dieser Prozess unter anderem eine hohe Kantenglättung (AntiAliasing) voraussetzt.

 

Alpha-Maske

Ein ganz wichtiger Punkt in der Computergrafik ist das maskieren von Bildausschnitten. Somit können zum Beispiel nachträglich Farbkorrekturen an Objekte innerhalb einer Szene verändert oder auch ganze Teile sauber ausgeschnitten werden. Alphamasken sind auch sehr wichtig beim zusammenstellen von Realbild und Computergrafik. Am Amiga gab es sogenannte Genlocks, die Video und Computerbild zusammensetzten. Das war aber sehr unschön, da hier kein Alpha-Kanal bzw. kein abgestuften Alphakanal gab. Es gab da nur transparent oder nicht transparent. Die heutigen Aplha-Kanäle sind in 256 Abstufungen transparent, was ein wesentlich weicheren Übergang zur Folge hat.  Bildformate wie z.B. PNG oder auch BMP können Aplha-Kanäle beinhalten. Das untere, ausgeschnittene Beispiel hat einen solchen Kanal und deshalb kann man diese Bild auf jeden Hintergrund legen und dieser wird immer in den 'Löchern' sichtbar sein. Diese Kanäle nennt man auch RGBA und bedeuten Rot, Grün, Blau, Alpha ( naja, eigentlich Red, Green, Blue, Alpha :) )

 

 

3D-Daten für 2D-Grafiken verwenden

Man kann 3D-Informationen auch sehr gut für 2D-Strichgrafiken verwenden. Viele 3D-Programme exportieren Vektorgrafik-Formate, die dann in anderen speziellen Programmen wie Adobe Illustrator, IsoDraw oder CorelDesigner/CorelDraw weiterverarbeitet werden können. Hier mal ein kleines Beispiel, wie eine weitere Verwendung von CAD-Daten aussehen kann.

 

Ich benutze hauptsächlich das Programm MODO von The Foundry. Davor habe ich viele Jahre mit 3ds Max gearbeitet, aber als man keine wirkliche Entwicklung mehr bei Max erkennen konnte, habe ich mich umorientiert und bin mit MODO sehr zufrieden. Es ist auch Geschmackssache was man für seine Renderings benutzt und oft gibt einem der Arbeitsgeber oder Kunde es vor. Alle haben ihre Vor- und Nachteile und meistens haben sich die Programme spezialisiert. Ich hab mich für MODO entschieden, weil es zu einem der besten Modellierer gehört und generell der Workflow sehr durchdacht ist. Es macht einfach Spaß damit zu arbeiten, was man zu den späteren Versionen von 3ds Max nicht mehr sagen konnte.