OpenGL.org 3Dsource.de: Infos rund um 3D-Computergrafik, OpenGL und VRML
space Telefon-Tarife space VDI - Arbeitskreis Fahrzeugtechnik space Beschallungsanlagen und Elektroakustik space Heise-News space

Was ist eigentlich Raytracing, Pong-Shading... ?

Ein Versuch der Erklärung.

An dieser Stelle sollen einige Techniken vorgestellt werden, mit denen sich geometrische Objekte realitätsnah darstellen lassen.Alternativ-Titel: Methoden zur realistischeren Darstellung.
Falls Fragen zu Koordinatensystemen, Projektionen oder Begriffen wie Augpunkt etc. auftauchen, schaut bitte mal unter [3D-Mathematik] nach.

Objektgenerierung

Durch die Definition verschiedener Punkte in einem Modellkoordinatensystem will man ein geometrisches Objekt beschreiben. Für eine effektive Berechnung der Objektgeometrie greift man dazu auf verschiedene Primitive (Primitives) zurück (Bild 1).


Bild 1, Primitives: Linie, Polygon und Spline

Durch diese wird es möglich, spezielle und damit effektivere Transformationsschritte für die gesamte Objektbeschreibung vorzusehen. Zur korrekten Abbildung einer Linie würde es dann zum Beispiel ausreichen, die beiden Endpunkte zu transformieren und diesen Punkten die entsprechende Objektbeschreibung zuzuordnen. Ein entsprechender Algorithmus kann dann aus diesen Informationen ein Abbild generieren bzw. rendern.

Im Bereich der 3D-Computergrafik findet man zumindest die in Bild 1 dargestellten Primitive. Während man mit einer Linie nur Objektkanten darstellen kann, lassen sich die als Polygone bezeichneten geschlossenen Linienzüge auch zur Beschreibung - farbiger - Flächen nutzen. Mit Hilfe von Splines ist auch die formelmässige Beschreibung unregelmässig geformter Konturen möglich.

[zum Seitenanfang]

Z-Buffer

Während der Projektionstransformation werden alle Objekte aus dem dreidimensionalen Raum auf eine zweidimensionale Fläche projiziert. Dabei werden 3D-Punkte aus verschiedenen Objekten den gleichen 2D-Pixel beanspruchen. Es muss also entschieden werden, welcher der verschiedenen 3D-Punkte den Farbwert des 2D-Pixels vorgibt.
Der Begriff Z- oder auch Depth-Buffer lässt bereits auf seine Funktion schliessen: Für jeden auf die Bildfläche projizierten Punkt wird zusätzlich die ursprüngliche n-Koordinate, also die Tiefeninformation gespeichert.


Bild 2: Z-Buffer

Für eine Projektion verschiedener Punkte auf die gleichen Bildkoordinaten kann nur dann die richtige Zuweisung der Farbwerte erfolgen, wenn strikt auf die Reihenfolge "fern nah" geachtet wird (im Bild 2: Projektion in der Reihenfolge Q3, Q2, Q1, P).
Wertet man aber durch einen zusätzlichen Vergleich noch die Tiefeninformation des Z-Buffers aus, so kann man von der strikten Reihenfolge abweichen: Es werden nur diejenigen Punkte gezeichnet, deren n-Koordinate näher an der Vorderfront liegt. Dafür muss man vor der Projektion alle Werte im Z-Buffer auf die n-Koordinate der Rückfront setzen und während der Projektion den Wert des Z-Buffers für jeden abgebildeten Punkt aktualisieren.

Der damit verbundene Vorteil wird schon an einem einfachen Beispiel greifbar: Besitzt man die Information über die räumliche Lage der Punkte, so lassen sich diese in der Reihenfolge der gezeichneten Objekte abbilden oder auch einzelne Objekte getrennt berechnen. Durch Vergleich der ursprünglichen n-Koordinaten werden dann nur die dem Augpunkt AP jeweils am nächsten liegenden Punkte gezeichnet. Ebenfalls erst dadurch wird es möglich, einzelne Objekte getrennt voneinander aus ihrem Modellkoordinatensystem MC in das Bildkoordinatensystem DC zu transformieren.
Im ungünstigsten Fall - es werden zufällig alle Punkte in der Reihenfolge fern nah abgefragt - verlängert der Vergleich der n-Koordinaten die Laufzeit des gesamten Abbildungsprozesses nicht wesentlich.

Der Z-Buffer ermöglicht durch einfachen Vergleich in den meisten Fällen das richtige Erkennen von verdeckten Flächen oder Körpern. Allerdings ist die richtige Entscheidung bei sehr nah beieinander liegenden Objekten nicht mehr sichergestellt: Eine genau auf Fahrbahnhöhe gezeichnete Markierung wird aufgrund von Rechenungenauigkeiten nicht an jeder Stelle sichtbar sein, sondern zum Teil noch durch Fahrbahnteile überdeckt werden. Genauso problematisch ist die exakte Darstellung von durchdrungenen Körpern, da eine exakte Schnittstelle durch den Z-Buffer nicht definiert werden kann. Während das Problem exakt übereinander liegender Flächen durch einen zusätzlich vorgegeben Offset umgangen werden kann, wird bei komplexeren Situationen der Rückgriff auf andere Verfahren notwendig [1], [2].

[zum Seitenanfang]

Clipping

Im Abschnitt über die Projektionstransformationen (siehe [3D-Mathematik]) wird angesprochen, dass nur die innerhalb des Viewing-Volumens liegenden Punkte transformiert werden. Formuliert man als Beispiel einmal die gesamte Transformationspipeline einer durch die Eckpunkte P und Q gegebenen Linie mit: "transformiere die Eckpunkte aus dem MC in das DC und berechne dann eine Gerade von P nach Q", so lässt sich diese Aufgabe nur dann eindeutig lösen, wenn beide Punkte innerhalb des Viewing-Volumens liegen. Wird diese Voraussetzung nicht erfüllt, kann das berechnete Bild zum Beispiel dem Bild 3 skizzierten Ergebnis entsprechen.


Bild 3: Objektberechnung ohne bzw. mit Clipping, Quelle: [3]

Die als Clipping bezeichnete Methode stellt nun sicher, dass beim Wegschneiden des Punktes Q ein Ersatzpunkt Q* berechnet und transformiert wird, mit dem das Zeichnen des sichtbaren Teils vom definierten Objekt "Linie" ohne Einschränkungen möglich ist. Dadurch ergibt sich die in Bild 3 rechts erkennbare korrekte Darstellung.

[zum Seitenanfang]

Drahtgitter- und Flächendarstellung

Am Beispiel eines Würfels, dessen 6 Oberflächen man durch Polygone beschreiben kann, sollen jetzt die hauptsächlichen Darstellungsmöglichkeiten eines Volumenmodells vorgestellt werden.


Bild 4: Würfel als Drahtgitter, mit farbigen Flächen und ohne verdeckte Kanten

Die einfachste, als Drahtgitter oder Wireframe bezeichnete Variante zeigt Bild 4 links, für welche die gegebenen Eckpunkte in einer bestimmten Reihenfolge durch Polygone oder Linienzüge verbunden worden sind. Eine aufwendigere Möglichkeit zeigt Bild 4 mitte. Das erkennbare farbige Ausfüllen der eingeschlossenen Flächen wird als Surface Modeling bezeichnet und kommt der Vorstellung von einem tatsächlichen Körper schon eher nahe. Allerdings wird auch der dahinterstehende Algorithmus entsprechend aufwendiger, da zusätzlich zum Bestimmen sämtlicher innerhalb eines geschlossenem Linienzuges liegenden Punkte noch eine Entscheidung über die räumliche Position und damit dem Farbwert (Vorder- oder Rückseite) der Punkte getroffen werden muss.

Mit der dritten, in Bild 4 rechts skizzierten Methode - verdeckte Kanten werden nicht gezeichnet - kann zwar auf die Farbdarstellung der Oberflächenpunkte verzichtet werden, jedoch muss dafür eine aufwendige Bestimmung der von anderen Flächen verdeckten Körperkanten in Kauf genommen werden. Um trotzdem einen geringeren Rechenaufwand erreichen zu können, wird für diese Darstellungsart oftmals ein vereinfachter Algorithmus genutzt. Dieser ist Gegenstand des nächsten Abschnitts.

[zum Seitenanfang]

Hidden Line und Hidden Surface Removal

Das Entfernen der verdeckten Kanten aus einer Gitterdarstellung wird als "Hidden Line Removal" bezeichnet. Das eigentliche Ziel dieser Methode ist eine leichter verständliche Darstellung. Der Einsatz lohnt sich aber aufgrund der zeitaufwendigen Berechnung aller Oberflächenpunkte und nachfolgender Entscheidung über die Sichtbarkeit bestimmter Punkte nur selten. Einen häufig angewendeten Kompromiss bietet das "Hidden Surface Removal":


Bild 5: Backface Culling (vollständig, nur die Flächennormalen, nur die Vorderflächen), Quelle: [3]

Bei dieser, auch als "Backface Culling" bezeichneten Methode werden nur die Flächen dargestellt, deren Normalenvektoren zum Betrachter hin zeigen. Das heisst, bei aktiviertem Backface Culling würde ein Prisma (Bild 5 links) mit den in Bild 5 mitte skizzierten Flächennormalen so wie in Bild 5 rechts erkennbar abgebildet werden. Da die Punkte der nicht zu zeichnenden Flächen auch nicht auf ihre räumliche Lage hin überprüft werden müssen, lässt sich so der Rechenaufwand für das Rendering erheblich verringern. Andererseits kann es sein, dass bestimmte Objekte nicht mehr richtig dargestellt werden (was der Vergleich von Bild 5 links bzw. rechts zeigt). Enthält die Szene nur geschlossene Objekte (das trifft auf alle Körper zu), bietet sich die Anwendung dieser Technik an.

[zum Seitenanfang]

Flat Shading und Gouraud Shading

Am Anfang dieser Seite wurden zur Generierung komplexer Objekte aus einfachen Primitiven lediglich verschiedene Arten von Linienzügen dargestellt. Tatsächlich gibt es in der üblichen 3D-Objektbeschreibung keine echten Kreise, Zylinder oder Kugeln, sondern lediglich eine Kombination aus mehreren Flächenstücken. Damit sich dem Betrachter trotzdem die Illusion eines stetigen Kurvenverlaufes bietet, wird die Technik des Smooth Shadings angewendet.


Bild 6: Flat- und Gouraud Shading, Quelle: [3]

Zur Beschreibung des Shadings zeigt Bild 6 einmal die Möglichkeit des Flat Shadings (links) sowie die des Gouraud bzw. Smooth Shadings (rechts). Ein Unterschied beider Verfahren zeigt sich aber nur, wenn aneinander grenzende Flächen verschiedenfarbig sind. Der im linken Bild gezeichnete obere Torus lässt deutlich seinen Aufbau aus Flächenteilstücken erkennen. Dagegen zeigt das rechte Bild einen völlig glatte Oberfläche, obwohl die dahinter stehenden Gitterstrukturen identisch sind. Smooth Shading kennzeichnet also die Interpolation der Farbverläufe derart, dass die angrenzenden Kanten exakt gleichfarbig sind.

[zum Seitenanfang]

Lichteffekte

Durch das Berücksichtigen von Licht lässt sich die Realitätsnähe einer modellierten Szene wesentlich erhöhen. Dabei unterscheidet man die vier Lichtquellen ambientes Licht, gerichtetes Licht, positioniertes Licht und Strahler sowie die Reflexionsarten ambiente Reflexion, diffuse Reflexion und spekulare Reflexion.


Bild 7: ambientes, gerichtetes und positioniertes Licht, Quelle: [3]

In Bild 7 ist die Vorstellung vom ambienten Licht skizziert. Ambientes Licht entspricht dem Umgebungslicht, welches keiner konkreten Lichtquelle zugeordnet werden kann und dabei aus allen Richtungen strahlt (wolkenverhangener Himmel auf freiem Feld). Im Gegensatz dazu wird mit dem in Bild 7 mitte demonstrierten gerichteten Licht die Richtung der Lichtquelle definiert, wobei allerdings die Lichtquelle in unendlich grosser Entfernung sitzt (Sonneneinstrahlung durch Baumkronen). Mit einem Punktlicht (Bild 7 rechts) wird die Wirkung einer Lichtquelle beschrieben, die sich in der näheren Umgebung befindet und in alle Richtungen leuchtet, was zum Beispiel der Eigenschaft einer nicht abgedeckten Glühlampe nahekommt. Nicht skizziert ist der vom positionierten Licht abgeleitete Strahler (oder auch Spotlicht), der sich vom Punktlicht durch die Angabe eines Öffnungswinkels unterscheidet. Damit lassen sich beispielsweise Fahrzeugscheinwerfer oder Strassenlaternen nachbilden.


Bild 8: diffuse und spekulare Reflexion, Quelle: [3]

Ähnlich zu den verschiedenen Lichtquellen lassen sich auch die Materialeigenschaften der Objektoberflächen in verschiedene Kategorien einordnen. Jedes Material absorbiert einen Teil der auftreffenden (Licht-) Strahlung und reflektiert den anderen Teil. Dabei wird der reflektierte Anteil als Materialfarbe erkennbar. Für das in einer modellierten Umgebung an allen Punkten gleich intensive Streulicht (ambientes Licht) definiert man die ambiente Reflexion. Diese bedingt eine gleichmässige Ausleuchtung (also in alle Richtungen gleiche Reflexion) aller Körperoberflächen derart, dass zum Beispiel eine Kugel nur als Scheibe erkennbar wird. Durch Überlagerung dieser ambienten mit einer diffusen Reflexion lassen sich aber auch noch die Richtung und die Entfernung der Lichtquelle vom Objekt berücksichtigen, so dass dadurch bereits eine grosse Realitätsnähe erreicht werden kann (Bild 8 links). Diffuse Reflexion kennzeichnet also die Eigenschaft, auftreffende Lichtstrahlen zwar gleichmässig in alle Richtungen zu reflektieren, allerdings den Anteil der reflektierten Strahlung von der Einfallsrichtung abhängig zu machen. Die Wirkung auf eine kugelähnliche Oberfläche erkennt man links vorn in Bild 8 (ganz vorn dunkel, seitlich heller).

Um zusätzlich den Glanz einer Oberfläche modellieren zu können, greift man auf die Eigenschaft der spekularen Reflexion zurück. Diese beschreibt die gerichtete Reflexion an einer Oberfläche. Im Gegensatz zur ambienten und diffusen Reflexion erfolgt also keine Reflexion in alle Richtungen, sondern ausschliesslich in die Richtung der eintreffenden Lichtstrahlen. Dadurch ergeben sich die in Bild 8 rechts erkennbaren Glanzlichter (Highlights).

[zum Seitenanfang]

Antialiasing

Mit Antialiasing wird eine Methode bezeichnet, mit der die Treppeneffekte bei der Abbildung von Linien auf dem Rasternetz des Monitors (oder eines anderen Gerätes) optisch nicht so deutlich erkennbar sind. Da die Beschreibung einer Szene durch mathematische Modelle erfolgt, der Betrachter aber meist keine scharf gezeichneten Linien mit dem realen Erscheinungsbild verbinden kann, wird durch zusätzlich berechnete Punkte eine künstliche Unschärfe erzeugt. Diese bietet ab einer bestimmten Distanz eine wesentlich realitätsnähere Darstellung (Bild 9).


Bild 9: Linie ohne bzw. mit Antialiasing, Quelle: [3]

[zum Seitenanfang]

Transparenz und Nebel

Während ein Teil der bis jetzt vorgestellten Methoden nicht ausschliesslich in der dreidimensionalen Computergrafik zum Einsatz kommen muss, sind für die folgenden Methoden die vollständige Kenntnis um die ursprüngliche räumliche Position aller Objekte notwendig. Für die herkömmliche, zweidimensionale Abbildung müssen einem bestimmten Bildpunkt P nur seine Position und Farbe eindeutig zugeordnet werden können. Die echte Dreidimensionalität äussert sich nun genau darin, dass jedem Punkt P darüber hinaus seine Raumtiefe (Z-Buffer), Objektzugehörigkeit und Materialeigenschaft sowie bei Bedarf noch weitere Informationen zugeordnet werden können.


Bild 10: Überlagern von Farbwerten bei Transparenz und Depth Cueing, Quelle: [3]

Bild 10 links zeigt die möglichen Effekte, wenn bei der Abbildung eines Objektes zusätzlich seine Transparenz berücksichtigt wird. Dabei wird einem Bildpunkt nicht mehr ausschliesslich die Farbe eines einzelnen, am weitesten vorn liegenden Objektes zugeordnet, sondern es erfolgt eine durch den Alpha-Wert (Bezeichnung der Transparenzeigenschaft) bestimmte Mischung dieses Farbwertes mit anderen, auf dem selben Projektionsstrahl liegenden Farbwerten. Ähnlich lässt sich die in Bild 10 rechts erkennbare Abbildung zum Depth Cueing berechnen: In Abhängigkeit von der Raumtiefe eines Punktes wird dessen Farbwert derart manipuliert, dass eine greifbarere Vorstellung eines Volumenmodells entsteht. Das gleiche Prinzip gilt auch für die Simulation von Nebel, der ebenfalls nur durch die - tiefenabhängige - Überlagerung eines weissen Farbanteils über die vorhandene Punktfarbe dargestellt wird.

[zum Seitenanfang]

Texturen

Für die Darstellung eines komplizierten Modells, zum Beispiel eines Baums, durch verschiedenfarbige geometrische Objekte müssen sehr viele Punkte transformiert werden. Eine komplexe Szene wird dadurch nur noch schwer in Echtzeit, also mindestens 25 mal je Sekunde, berechenbar. Beschreibt man diesen Baum aber nur durch eine einfache Fläche und projiziert auf diese Fläche das Bild eines Baumes, reduziert sich die Komplexität der notwendigen Algorithmen erheblich. Diese Technik, Projektion eines Bildes auf eine Fläche, wird als Texturing, das benutze Bild als Textur und die einzelnen Punkte der Textur als Texel (Texture Element) bezeichnet. Damit lässt sich eine Szene wesentlich realitätsnäher abbilden, ohne dass die dahinter stehenden Algorithmen aufwendigste Berechnungen notwendig machen.

Die Methoden

  • Alpha-Blending(teilweise Transparenz der Textur),
  • Bilineare Filterung(Antialiasing zwischen Texeln),
  • Color-Key-Transparenz(eine bestimmte Texturfarbe ist vollkommen transparent) und
  • Trilineares MIP-Mapping(eine Textur wird automatisch in verschiedene Auflösungen umgerechnet)
ergänzen die Möglichkeiten, welche sich durch die Nutzung von Texturen ergeben.

[zum Seitenanfang]

Ray-Tracing und Radiosity

Abschliessend werden noch zwei Verfahren zur realitätsnahen Abbildung dreidimensionaler Szenen vorgestellt, die aufgrund ihrer exakteren und damit zeitaufwendigen Berechnungsmethoden die Anforderungen an eine Echtzeit-Visualisierung nicht erfüllen können.


Bild 11: Ray-Tracing und Radiosity, Quelle: [3]

Das in Bild 11 links dargestellte Beispiel für das Ray-Tracing zeigt, dass diese Lichtstrahl-Verfolgung sehr realistische Darstellungen ermöglicht. Allerdings müssen dafür alle Wechselwirkungen des Lichts mit der Umwelt, also dessen Reflexion und Schattenbildung berechnet werden, so dass das Rendern eines Bildes schon bei einfachen Szenen bis zu mehreren Minuten in Anspruch nehmen kann. Die Lichtstrahl-Berechnung vom Auge hin zu jedem einzelnen Punkt der Objektoberfläche und der Umgebung bedingt eine (zum Teil unnatürlich) scharfe, klare und realistische Schattenbildung und Reflexion, hat aber auch den Nachteil, dass das berechnete Bild immer vom Standort des Betrachters abhängig ist. Damit ist es nicht möglich, einen interaktiven Gang durch die modellierte Szene durchzuführen. Animationen lassen sich nur durch das Abspielen von bereits berechneten Bildern und deshalb auch nur auf festgelegten Wegen realisieren.

Eine nach dem Radiosity-Verfahren berechnete Szene zeigt Bild 11 rechts. Dieses Verfahren wurde ursprünglich für die Berechnung des Wärmeenergieaustausches innerhalb geschlossener Räume an der Cornell University entwickelt und später für die Nutzung in der Computergrafik angepasst. Die Methode beruht darauf, für jede Fläche die einfallende und auch die - aufgrund von Reflexion und Eigenstrahlung (zum Beispiel eines Fensters) - diffuse, also in alle Richtungen austretende Lichtenergie zu ermitteln. Im Gegensatz zum Ray-Tracing lassen sich dadurch zwar keine Glanzlichter erzeugen, allerdings ist die einmal berechnete Szene vom Standort des Betrachters unabhängig, so dass das interaktive Durchwandern der Umgebung problemlos möglich ist [3], [4], [5].

Vergleicht man beide Verfahren mit Hilfe von Bild 11, so hat Radiosity den Vorteil der weicheren und damit realistischeren Schattenbildung, während nur das Ray-Tracing eine Objektspiegelung ermöglicht. Um die Vorteile beider Verfahren nutzen zu können, werden diese oft miteinander gekoppelt [2], [3].

Seite durchsuchen nach:

Fragen oder Ideen an:
Thomas.Kern@3Dsource.de
Linux-Counter
(C) Thomas Kern