Ja, guten Tag zusammen. Wir hatten in der vergangenen
Woche mit dem Einstieg in das Kapitel Photometrisches Modellieren begonnen.
Und wir haben zunächst einmal so eine kleine Vorbereitung auf die traditionellen Shading-Algorithmen dadurch gemacht,
dass wir uns überlegt haben, wie kann man eigentlich den Aufwand,
der betrieben werden muss, um eine grafische Darstellung vorzubereiten und durchzuführen,
möglichst weit reduzieren und hatten da zunächst einmal im ersten Teil dieses Kapitels,
uns mit den sogenannten Hidden Line beziehungsweise Hidden Surface
Algorithmen beschäftigt und einige davon exemplarisch kennengelernt. Und der ein wichtiger Algorithmus,
den wir kennengelernt haben,
war das Backface Kulling mit dessen Hilfe wir von allen Objekten,
die wir grafisch darstellen wollen, auf jeden Fall die Flächelelemente identifizieren können,
die von der Betrachtungsrichtung oder von der Richtung,
in die die Kamera sieht,
Abgewandt sind und damit garantiert nicht sichtbar sind.
Wenn wir diese Flächen eliminieren können und in die weiteren Berechnungen
nicht mehr mit einbeziehen können, dann können wir sagen,
im Schnitt sparen wir in etwa die Hälfte der erforderlichen Rechenzeit.
Dann geht es nur noch darum,
dass wir im nächsten Schritt herausfinden, welche der nicht abgewandten Flächenelemente,
also der potenziell sichtbaren Flächenelemente tatsächlich sichtbar sind und welche dieser Elemente
eventuell ganz oder teilweise durch andere davorliegende Flächenelemente verdeckt werden.
So wie sie also jetzt, wenn ich meine Hände hier so hinhalte,
einen Teil meines Hemdes nicht sehen können,
weil meine Hände das eben verdecken, obwohl es ihnen zugewandt ist.
Und damit potenziell sichtbar ist. Und da hatten wir also zunächst
ein paar Algorithmen exemplarisch kennengelernt, die genau diese Aufgabe erfüllen.
Und zum Abschluss hatten wir ein kleines Experiment gemacht.
Wir waren wieder zurückgegangen in das vorige oder vorvorige Kapitel des biometrischen Modellierens.
Wir haben ein ganz einfaches geometrisches Modell von einer einfachen Szene betrachtet,
dass sich Ihnen hier noch einmal in den Folien dargestellt habe.
Wir haben drei Gegenstände in der Szene, ein Zylinder,
eine Kugel, einen Quader, die Abmessungen als Form beschreibende Parameter sind vorgegeben.
Es ist ebenfalls beschrieben, wie diese drei Gegenstände im Raum angeordnet sind.
Und die Frage war, wie sieht jetzt eigentlich die Szene aus,
wenn wir von dieser Szene ein Bild machen sollten, Wie würde dieses Bild aussehen?
Und wir hatten festgestellt, es war niemand von Ihnen auf
dieses Bild gekommen, das da beschrieben worden ist.
Und ja, warum nicht? Das ist vielen Dank auch gänzlich,
die Materialienformation, muss ich mal sagen,
das sind nur irgendwie, so fickt es sich größer,
rot irgendwie ist, statt es nicht drauf,
das Leiden und eine Kugel so.
Ja. Nur die Jugendmetrie wurde ja geschrieben.
Genau. Es ist nur die Geometrie beschrieben
Und damit fehlt jegliche Information über die Beschaffenheit der Oberflächen dieser Gegenstände,
die wir ja in einem Bild dann sehen können müssten.
Und wir haben also keine Ahnung davon,
aus welchem Material diese Gegenstände sind, welche Farbe die Oberfläche hat,
ob die Oberfläche der einzelnen Gegenstände eventuell irgendein Muster hat,
ob sie die Oberfläche spiegelt ist oder matt ist und so weiter.
Alle diese Informationen stecken natürlich in der geometrischen Formbeschreibung
überhaupt nicht drin
Den müssten wir noch dazu nehmen. Und ja,
was fehlt noch? Nehmen wir an, wir hätten eine
präzise Geometriebeschreibung, so wie wir sie hier gegeben haben.
Die ist ja präzise. Nehmen wir an,
wir hätten dazu weiterhin eine Beschreibung, die ich sage,
dieser Golfball ist also so irgendwie pink und hat irgendeine Aufschrift irgendwo da drauf.
Darunter liegt ein dieser Zylinder, die Büchse mit dem Magnetband.
Und darunter liegt quaderförmig ein Buch, ein berühmtes Buch der Computergrafik,
mit entsprechender Aufschrift, Titelaufschrift und so weiter.
Wenn wir diese Information noch mit dazu angegeben hätten,
könnten wir jetzt, hätten wir da genügend Informationen gegeben,
um ein Bild davon anzufertigen.
Das wäre immer noch Licht und Kamera. Ja, das ist
ganz wichtig. Wir müssen jetzt auch noch definieren, zum einen,
wo stellen wir unsere Kamera oder unser betrachtendes Auge hin?
Also aus welcher Perspektive betrachten wir diese Szene,
die sieht ja aus den unterschiedlichen Blickwinkeln ganz unterschiedlich aus und vor allen Dingen,
solange kein Licht da ist, sehen wir gar nichts,
können wir also uns kein Bild davon machen.
Das heißt, wir müssen dann auch noch definieren,
wie diese Szene beleuchtet ist,
wo eine Lichtquelle oder wo eventuell auch mehrere Lichtquellen angeordnet sind,
die dieser Szene beleuchten,
damit wir dann am Ende tatsächlich das so sehen können,
wie es hier auf dem Foto dargestellt ist
So, damit wollen wir uns dann heute einmal etwas näher
beschäftigen und etwas tiefer in die sogenannten photometrischen Modelle einsteigen.
Photometrische Modelle, wie brauchen wir also als eine ganz wichtige Basis für die Computergrafik,
um Bilder erzeugen können, die einen Realitätsgrad aufweisen,
der dem einer guten Fotografie vergleichbar ist.
Und wir nennen das eine fotorealistische Computergrafik,
es gibt ja auch andere Grafiken,
sehr abstrakte Grafiken,
die eben nicht fotorealistisch sind
Wir wollen also mithilfe dieser fotorealistischen Computergrafik und der photometrischen Modelle,
die wir definieren, möglichst naturgetreue,
grafische Darstellungen von Gegenständen und komplexen Szenen herstellen.
Dazu müssen wir die Beleuchtung der Szene beziehungsweise der einzelnen Objekte
genau beschreiben und wir müssen in diesen photometrischen Modellen in die
zugrunde liegenden physikalischen Gesetze der geometrischen Optik bzw. das Licht Austausches oder Energieaustausches,
Lichtenergieaustausches zwischen den einzelnen Oberflächen in der Szene modellieren.
Und wir müssen dann ebenfalls zusätzlich modellieren, Eigenschaften der Gegenstände,
wie die Farbe, die Rauigkeit, das Reflexionsverhalten der Oberfläche der Gegenstände.
Und das Refraktionsverhalten, das Brechungsverhalten, wenn diese Gegenstände durchsichtig sind,
müssen wir modellieren, wie ein Lichtstrahl,
der auf die Oberfläche fällt,
zunächst einmal gebrochen wird
In der gebrochenen Bahn im Gegenstand weitergeleitet wird und beim Austritt aus
dem Gegenstand wiedergebrochen wird, welche Richtung er dann hat.
All das fassen wir dann in den sogenannten photometrischen Modellen zusammen und Mithilfe solcher Modelle,
müssten wir dann in der Lage sein, ein gutes,
fotorealistisches Bild von unserer Szene zu machen.
Wir wollen heute zunächst einmal einsteigen in dieses Kapitel,
über die Betrachtung der sogenannten Shader, der Systeme,
mit deren Hilfe wir einfache, farbig schadierte Darstellungen von Gegenständen und Szenen anfertigen können.
Und dazu dienen uns die sogenannten lokalen Beleuchtungsmodelle,
die sich also lokal auf den Gegenstand auf einen Oberflächenausschnitt des
darzustellenden Gegenstandes und auf eine Relation zu den beleuchtenden Lichtquellen beziehen.
Hier werden also in diesen lokalen Beleuchtungsmodellen recht einfach die Wechselwirkung zwischen den Lichtquellen,
die irgendwo an definierten Stellen im Raum angeordnet sind und der Betrachtungsposition oder der Position in unserer Kamera,
in Bezug auf die Oberflächenteile beschrieben,
die von dieser Betrachtungsposition oder Kameraposition aus sichtbar sind.
Wir gehen davon aus,
dass wir im Allgemeinen die Oberflächen unserer Gegenstände durch kleine Polygone,
in der Regel sind das Dreieckssektmente, beschreiben,
dass wir also keine kontinuierlich gekrümmten Oberflächen für diese Schattierungsalgorithmen verwenden.
Und wir gehen davon aus, dass wir eine gleichmäßige Streuung
des einfallenden Lichtes in alle Richtungen haben.
Eine solche Streuung nennen wir eine Lambert für Streuung oder eine
lambertische Reflexion und eine Oberfläche, die diese Eigenschaft aufweist,
nennt man
einen Lambert-Reflektierer
Das ist eine sehr idealistische Annahme,
einen nahezu idealen Landwertreflektierer finden wir in diesem Material,
so ein Stück Kreide oder wenn sie eine Landschaft mit frisch gefallenem Schnee überziehen,
das wäre dann so etwas wie ein Lambertscher Reflektierer,
den wir da vor uns haben,
da wird das einfallende Licht in etwa in alle Richtungen gleich abgestrahlt.
Ganz exakt ist das nicht, aber für unsere Annahmen,
für unsere Modelle reicht das aus und wir kommen da
ganz gut hin, können damit ganz gute Bilder beschreiben.
Wenn wir uns das einmal so als Funktion ansehen würden,
nehmen wir an, wir hätten eine Oberfläche eines Gegenstandes,
die wir hier im Schnitt betrachten und wir wollen wissen,
wie das Licht von einem Punkt der Oberfläche reflektiert ist,
wenn ein Lichtstrahl von einer gegebenen Lichtquelle aus auf diesen
Punkt fällt
Dann ist in der Idealannahme des Lambertischen Reflektierers die Verteilung in
Abhängigkeit von dem Betrachtungswinkel eine solche. Das heißt also,
in jeder Richtung ist die Intensität des reflektierten Lichtes in etwa gleich.
Das ist die besondere Eigenschaft des Lambertischen Strahlers. In der Praxis
ist es auch bei nahezu ideal, die Fußreflektierenden Oberflächen so,
dass es eine sogenannte Spiegelungsvorzugsrichtung gibt. Die der physikalischen Optik entspricht,
das heißt, wir kennen das Reflexionsgesetz aus der physikalischen Optik,
Einfallswinkel ist gleich Ausfallswinkel und unsere Reflexionsverteilung bei einem diffus reflektierenden,
bei einer diffus reflektierenden Oberfläche sähe dann eher so aus,
dass wir in Richtung Der exakten Reflexion, der echt spiegelnden Reflexion,
auch bei einer streuenden Reflexion ein Maximum des reflektierten Lichtes haben und für die anderen Richtung ist es dann geringer.
Das heißt also, hier wäre dann die Verteilung eher so anzunehmen.
Und Es gibt Modelle, die eher von einer solchen Verteilung ausgehen,
die natürlich dann auch ein wenig aufwendiger zu berechnen ist.
Die meisten Modelle, die einfachen Shader,
die wir in der Praxis einsetzen und die wir hier auch jetzt kennenlernen wollen,
die gehen allerdings eben davon aus,
dass das einfallende Licht in alle Richtungen gleich gespiegelt wird oder gestreut wird.
So, traditionell haben sich drei unterschiedliche Verfahren etabliert
Die sogenannte konstante Schattierung, Flatrading genannt in der angelsächsischen Literatur.
Dann eine Schattierung über eine Farbwertinterpolation. Das ist ein Verfahren,
das ein Herr Guru entwickelt hat. Und nach ihm ist
es benannt, als Guru-Shading. Das ist eine Schattierungsform,
die praktisch in allen Grafiksystemen, man kann sagen,
fest verdrahtet ist. Und dann eine etwas komplexere Schattierungsmethode,
die von Herrn Fong entwickelt worden ist und die nach ihm
benannt ist, die die normalen Vektoren interpoliert.
Wir wollen uns das jetzt einmal im Einzelnen ansehen.
Zunächst einmal gehen wir von der, sehen wir uns einmal an,
wie man die Farbwerte berechnet für die farbige Erscheinung und die Lichtintensität eines Punktes an einer Oberfläche,
eines Gegenstandes, der von einer Lichtquelle beleuchtet wird.
Gehen wir also davon aus, wir hätten hier eine Oberfläche
Wir interessieren uns für die Lichtintensität an diesem Punkt,
die sich ergibt aus der Lichtintensität der Lichtquelle,
des Lichtes, das von dieser Lichtquelle ausgeht.
Was müssen wir dazu kennen, um das berechnen zu können?
Wir müssen die Flächennormale in diesem Punkt kennen.
Die Flächennormale können wir in der Regel relativ einfach berechnen,
besonders wenn wir kleine Ebene, Dreiecke haben,
dann haben wir immer zwei, drei Eckskanten.
Wir können für diese beiden Kanten als Vektoren formulieren,
und daraus das Vektorprodukt bilden und das Vektorprodukt gibt uns
den Vektor der Senkrecht auf der Ebene dieser beiden Vektoren steht,
damit also den normalen Vektor der Fläche,
den wir dann nur noch normieren, um den Einheitszweck da zu erhalten.
So, dann brauchen wir einen Vektor in Richtung der Lichtquelle
und last but not least müssen wir den Winkel bestimmen,
der zwischen diesen beiden Vektoren eingeschlossen ist.
Und Ja, natürlich müssen wir die Lichtintensität kennen,
der Lichtquelle des Lichtes, das von der Lichtquelle ausgeht.
Wenn wir diese Größen festgelegt haben, dann können wir die Farbwertberechnung durchführen,
so wie sie bei den normalen Shadern,
die in der Praxis eingesetzt werden, verwendet wird.
Da können wir also die Intensität an dem betrachteten Oberflächenpunkt berechnen aus der Intensität der Lichtquelle,
multipliziert mit dem Cosinus des Winkels,
der zwischen den beiden Vektoren Flächennormale und nur zur Lichtquelle eingeschlossen wird,
multipliziert mit einem Dämpfungsfaktor, dem sogenannten Koeffizienten,
der diffusen Reflexion.
Und dazu kommt noch ein zweiter Term, den addieren wir drauf.
Das ist die Intensität des sogenannten Ambientenlichtes. Und auch diese
multiplizieren wir mit einem Dämpfungsfaktor, dem Koeffizienten,
der Ambientenreflexion, diese beiden Koeffizienten sind Werte,
die irgendwo zwischen 0 und 1 liegen
Dieser Wert hier zum Beispiel,
der Koeffizient der diffusen Reflexion, wird natürlich null sein,
wenn der Oberflächenpunkt von einer Lichtquelle gar nicht bestrahlt werden kann,
weil irgendetwas anderes dazwischen liegt, dass ein Schatten darauf wirft.
So, diesen Term,
die Elemente dieses Summanten hatte ich bisher noch nicht weiter erläutert,
die Intensität des Ambientenlichtes oder des Hintergrundlichtes.
Können Sie sich vorstellen,
was das ist
Was gehst du? Hintergrundlicht, Ambientes Licht, dieses Dach
? Indirekte Beleuchtung, okay? Wo kommt die her?
Das weiß man noch nicht. Wozu,
wozu brauchen wir die
Wir haben ja beschrieben, eine Szene beschrieben,
zunächst mal die Geometrie, die Form der Gegenstände,
ihre Oberflächeneigenschaften, ihre Farbe und so weiter beschrieben.
Und dann haben wir gesagt, so, und an dieser
Stelle haben wir eine Lichtquelle, die diese Szene beleuchtet.
Und das berücksichtigen wir ja hiermit. Ansonsten haben wir
keine weitere Lichtquelle definiert. Wie kommen wir jetzt dazu,
hier noch so, mehr oder weniger willkürlich,
einen zusätzlichen Termin zu schreiben?
Weil dem Rest ein bisschen oft zu werden,
was wir jetzt so zu einer Punktwelle haben oder so
Halt so Kegel wäre oder so werden, nur diesen einen Teil deutsch und überall
wäre es halt schwarz quasi. Und dass diese Ambiente,
das ist halt so diese innere indirekte Reflexion des Lichts,
die hat ja wirklich den Raum,
fliegt und die halt irgendwie nicht quasi so nachrechnen könnte jetzt.
Viel zu komplexer eigentlich, um nicht gerade zu verfolgen und gucken,
wo trifft er auch, ah, da hast du ein bisschen Herz.
Deswegen sagt man einfach, ja, das ist allgemein,
du Grundhell. Ja, ist richtig. Das ist ja,
entspricht ja unserer ganz normalen alltäglichen Erfahrung, dass wir In einem Raum,
in dem wir wohldefinierte Lichtquellen haben, auch an Stellen etwas sehen,
die garantiert von diesen Lichtquellen nicht beleuchtet werden.
Also ich kann Ihnen sagen, ich kann hier unter diesem Pult,
das ist ja ein Kasten, der nur zu dieser Seite eine Öffnung hat,
darunter kann ich etwas sehen, Gegenstände, die da unten rumliegen,
kann ich also sehr wohl deutlich wahrnehmen, optisch wahrnehmen,
obwohl keine dieser Lampen, die hier im Raum sind,
da direkt hinleuchtet.
Das ist einfach eine Erfahrung, die wir machen,
das Licht,
das von den Lichtquellen ausgeht
Wird an allen möglichen Oberflächen diffus gespiegelt oder auch spiegelnd reflektiert,
aber in der Regel und den meisten unserer Umgebungen diffus gespiegelt.
Und dann kommt es auch an Stellen, die von den Lichtquellen
nicht direkt beleuchtet werden. Und das müssen wir natürlich in
irgendeiner Form berücksichtigen. Und das wird bei diesen einfachen Farbwertberechtigungen,
bei diesen einfachen fotometrischen Modellen, durch diesen Ambienten Term gemacht.
Das wird auch bei komplexeren, das werden wir noch sehen,
bei komplexeren photometrischen Modellen durch einen solchen Tern,
der ganz allgemein sagt, so, das ist eine Beleuchtung,
die ist einfach da.
Das gibt also so eine Grundhelligkeit, damit man die Gegenstände überhaupt sehen kann.
Die wird da also noch mit eingeführt. So,
und damit können wir also für jeden Punkt auf der Oberfläche,
für jeden sichtbaren Punkt auf der Oberfläche unserer Gegenstände in unserer Szene berechnen,
wie hell die sind,
welche Farbe sie haben,
wie wir sie also optisch wahrnehmen
So, und das Einfachste, die einfachste Möglichkeit,
dieses jetzt anzuwenden, ist die sogenannte konstante Schattierung.
In der angelsächsischen Literatur als Flat-Shading bezeichnet. Beim Flat-Shading gehen wir davon aus,
dass wir den Farbwert an einer Stelle unseres Flächensegmentes berechnen.
Also unser I an einer Stelle berechnen und
diese Stelle könnte zum Beispiel einfach der Mittelpunkt sein.
Wenn wir also irgendwie so ein Dreieck haben,
ein Dreieckiges Flächenelement, dann sagen wir,
wir berechnen unser I an dieser Stelle in der Mitte
des Dreieckes
Und beziehen also auf diesen Punkt in der Mitte des Dreieckes diese Anwendung,
dass wir sagen, von dem Punkt ausgesehen,
ist die Lichtquelle unter dem und dem Winkel zu sehen und die Lichtquelle hat die und die Intensität,
wenn sie mit der Intensität auf diesen Punkt leuchtet,
dann wird er mit der und der Intensität wahrgenommen,
in Abhängigkeit von der Farbe der Lichtquelle,
von der Farbe der Oberfläche selbst und so weiter.
Und dann gehen wir bei diesem einfachen Flatshading davon aus,
dass wir den Farbwert, den wir dafür berechnet haben,
Ganz einfach über das gesamte Flächenelement verteilen und das gesamte Flächenelement in genau dieser Farbe grafisch darstellen.
Das ist die einfachste Weise, einen Felder zu bauen.
Das hat allerdings einen kleinen Nachteil. Da die meisten Objekte,
die wir damit grafisch darstellen wollen, eigentlich im wahren Leben Objekte sind,
die eine kontinuierlich gekrümmte Oberfläche haben, Sind wir ein bisschen unzufrieden mit einer solchen Darstellung,
denn diese Darstellung gibt sehr präzise die Faszitierung in einzelne kleine Ebene,
Flächelemente, z.B. Dreieckselemente wieder. Das heißt also,
unsere Oberfläche, die eigentlich kontinuierlich gekrümmt ist, wird dargestellt,
wie eine Oberfläche, die aus lauter Ebenen kleinen Teilflächen zusammengesetzt ist,
praktisch so geschliffen wie ein Diamant oder so etwas,
oder das Phänomen der Spiegelkugel in der Disco,
das kennen sie auch, das ist eine,
eigentlich vom Prinzip her eine richtige ideale Kugel,
aber auf die Oberfläche sind lauter kleine Ebene Spiegel gesetzt und schon hat sie eine ganz andere Wirkung,
als wenn sie eine wirklich kontinuierlich gekrümmte,
spiegelnde Kugel betrachten.
Wir sehen also dann lauter einzelne Facetten,
die jede für sich wahrnehmbar ist und dadurch erscheint unsere Kugel oder allgemein unser Gegenstand,
trotz einer normal zugrunde liegenden, kontinuierlich gegründen Oberfläche,
irgendwo eckig und kantig.
Und dieses Problem, Hat man schon sehr früh erkannt und wollte es umgehen.
Es reicht übrigens diese Darstellungsform des konstanten Schattierens für alle Gegenstände, die tatsächlich poledrisch sind.
Wenn wir also diese schönen Tische hier und anderes fahren,
schönes Mobiliar, das so ähnlich aussieht,
da hinten dieses Pult und viele Gegenstände in unserer ganz normalen Umwelt grafisch darstellen wollen,
dann kommen wir mit dem Konstanten,
mit der konstanten Schattierung im Großen und Ganzen ganz gut hin,
denn deren Oberflächen sind eben.
Aber da, wo wir die Ebenen und Oberflächen,
die räumlich gekrümmten Oberflächen durch kleine Ebene Polyeda,
wie Dreiecke angenähert haben, da ist diese Darstellungsform sehr unbefriedigend.
Da hat sich der Herr Büro ein Verfahren ausgedacht,
mit dem sich dieses Problem lösen lässt. Er hat nämlich gesehen,
dass dieses eckige, kantige Erscheinungsbild unserer Gegenstände daher rührt,
dass wir bei zwei benachbarten Flächen Zum einen eine Vorzugsreflexion des Lichtes in einer Richtung haben,
in Abhängigkeit von der Lichtquelle, dem Winkel,
unter dem die Lichtquelle das Flächenelement beleuchtet.
Und beim Nachbarelement, das um einen gewissen Winkel gegen dieses erste Element
geneigt ist, ist dieser Winkel natürlich auch ein anderer.
Und damit ist da das Erscheinungsbild des Lichtes auch anders. Und Herr Goro hat gesagt,
es wäre doch eigentlich ganz einfach zu sagen, wir versuchen,
die Farbwerte Nicht an der Grenze zwischen zwei Elementen in einem Sprung wechseln zu lassen,
sondern wir versuchen,
einen stetigen Übergang zwischen dem Farbwert in dem einen Element und dem Farbwert in dem Nachbarelement herzustellen.
Und das hat Herr Goro dann auf folgende Weise gemacht.
Er hat gesagt, wir ermitteln zunächst einmal
den tatsächlichen normalen Vektor im Eckpunkt jedes Flächenelementes
Das heißt also, wir ermitteln nicht den normalen Vektor in der Mitte des Flächenelementes,
sondern wir ermitteln für eine Dreiecksfläche drei normalen Eckpunkte,
Vektoren in den Eckpunkten unseres Dreiecks.
Nach Möglichkeit sollten das die tatsächlichen normalen Vektoren unserer Fläche sein. Das heißt also,
wenn wir unsere Flächenformel kennen, wenn wir zum Beispiel wissen,
wir haben hier eine durch Dreiecksfacetten angenäherte, sagen wir,
Kunst für Fläche, wie wir sie Kapitel des geometrischen Modellierens kennengelernt haben,
dann können wir natürlich für jeden Flächenpunkt die Flächennormale aus der Flächenfarmel berechnen und sie hier eingehen lassen.
Wenn wir den Komfort nicht haben, wenn uns also
die Originalfläche nicht geboten wird, was können wir dann machen,
wenn wir also praktisch nur dieses Netz von Ebenen Dreiecksflächen geliefert bekommen.
Und wir möchten gerne in den Eckpunkten jedes einzelnen Dreiecks
einen normalen Vektor haben, der gleichzeitig auch gündig ist,
für alle anderen angrenzenden Dreiecke, die diesen Eckpunkt teilen.
Kommen wir denn an die Karten ran, die voller Gut ausgehen?
Ja, an die Kanten kommen wir ran,
weil wir ja die Arztfektoren der Eckpunkte haben und damit natürlich auch die Arztfektoren der angrenzenden Eckpunkte,
und damit können wir über die Differenzvektoren natürlich die Kanten Vektoren bestimmen.
Und dann? Ja,
dann kann man da auch so einen normalen Vektor ziehen,
weil der ja dann quasi automonal zu den Mittelwert der Bekannten,
die davon auskleben,
irgendwie stehen muss
Richtig. Man kann da so praktisch den Mittelwert der normalen Vektoren aller Dreiecke,
die hier zusammenstoßen in einem Punkt, einfach dadurch ermitteln,
dass man zunächst mal jeden einzelnen normalen Vektor individuell berichtet,
ermittelt das Ganze dann daraus im Mittelwert bildet und damit
den gemeinsamen normalen Vektor in der Ecke hat.
Ja, das ist korrekt. Damit haben wir also
für jede, jeden Eckpunkt einen individuellen normalen Vektor.
Und wenn nicht alle Dreiecke hier in der Nachbarschaft in einer Ebene liegen,
Werden das drei normalen Vektoren seien, die unterschiedliche Richtung haben. So,
und was Herr Gorot dann macht, als nächstes ist,
er berechnet nach der Formel, die wir da vorhin kennengelernt haben,
die Intensität des reflektierten Lichtes in den Eckpunkten,
also die Farbwerte in den Eckpunkten unseres Polygrons, zum Beispiel unseres kleinen Dreieckes,
und dann interpoliert er diese so ermittelten Farbwerte über die Dreiecksfläche.
Das heißt, wir haben eine sich kontinuierlich ändernde Farbintensität über die Fläche verteilt. So,
da zwei Dreiecke, die an einer Kante zusammenstoßen,
natürlich an den Endpunkten der Kante,
dann auch denselben den normalen Vektor haben,
ergibt sich für die beiden Dreiecke an den Endpunkten,
der kannte natürlich auch dieselbe Lichtintensität oder Intensität des Reflektierten Lichtes.
Und das bedeutet, an der Kante, an der zwei Dreiecke zusammenstoßen,
haben sie beide das Gleiche aussehen. Und erst,
wenn wir dann von uns von der Kante wegbewegen,
in die eine Dreiecksfläche beziehungsweise in die andere Dreiecksfläche,
dann ändert sich die Farbe in Abhängigkeit von dem dritten Eckpunkt,
der dann natürlich immer mehr an Einfluss gewinnt.
Der Vorteil dieses Verfahrens, dass Herr Goro auf diese Weise entwickelt hat,
ist, dass wir dann einen schönen, weichen Farbübergang von einem Flächenelement in das nächste haben.
Das dritte war dann ein Nachteil, immer noch auf,
Unser Sehsystem ist ganz offensichtlich so empfindlich,
dass es zwar zum einen sieht,
dass der Farbverlauf einen stetigen Übergang von einem Element in das Nachbarelement hat,
dass aber dieser Farbverlauf nicht stetig differenzierbar ist.
Und das ist im Prinzip vielleicht erstaunlich,
man bezeichnet das Ganze als einen Machbandeffekt, man kann also tatsächlich wahrnehmen,
wo die Kante zwischen zwei Flächenelementen verläuft, obwohl der Farbübergang ein stetiger Farbübergang ist.
Das ist also das, was ich in diesem Machbarn-Effekten bemerkbar macht,
unser Sehsystem übertreibt da ein kleines bisschen und zeigt,
dass den etwas dunkleren Bereich eines Flächenelementes zur Grenze hin stärker dunkel an,
als den benachbarten helleren Bereich eines helleren Flächenelementes,
das daran anschließt,
sodass also der Kontrast zwischen den beiden
übertrieben wird
So,
ich habe diesmal in den Set-Puffer-Algorithmus eingebaut und wir können hier sehr schön sehen,
an dieser Figur, dass der Farbverlauf zwischen den Flächenelementen,
der beim Flat-Shading noch so aussah,
dass wir hier wirklich die einzelnen Facetten sehr genau identifizieren konnten,
beim Güro-Shading viel weicher ist und damit also diese Figur viel besser als eine kontinuierlich gekrümmte Figur oder eine Figur mit einer kontinuierlich gekrümmten Oberfläche erscheinen lässt.
Hier und da merkt man dann aber doch, wie zum Beispiel,
ich weiß nicht, ob sie es von ihren Plätzen aussehen können,
wie hier in diesen Bereichen, dass da irgendwo etwas nicht genau stimmt,
dass da also die kontinuierliche Krömmung anscheinend gebrochen ist.
Das ist also der Effekt, der durch den Machbaren-Effekt auftritt,
der sich mit dem Verfahren von Güro leider nicht vermeiden lässt.
Ja, hier können wir dann nochmal sehen,
wenn wir das Ganze übertragen in unseren Z-Puffer-Algorithmus,
den wir ja schon kennengelernt haben, als einen Algorithmus,
der es uns gestattet, verdeckte Flächen auszublenden.
Wir prüfen für jeden Oberflächenpunkt, ob er größer ist,
also ob er näher beim Betrachter liegt,
als der Wert,
der im Z-Puffer legt,
dann setzen wir den Wert im Z-Puffer auf diesen Oberflächen auf
die Koordinate des Oberflächenpunktes und dann schreiben wir in die rot-grün- und Blauanteile unseres Bildpuffers,
jeweils die rot-grün- und blauanteile des Farbwertes,
den wir berechnet haben
Die stehen dann also im Bildpuffer und können am Ende grafisch dargestellt werden,
wenn dieser Punkt nicht später noch durch einen anderen Oberflächenpunkt eines anderen Gegenstandes
aus der Szene verdeckt wird. So, das Problem,
das sich aus dem Schattierungsverfahren von Herrn Guror ergeben hat,
der Nachbandeffekt, hat die Computergrafiker damals dann auch weiter beschäftigt
und Herr Fong hat 1975 dann ein neues Verfahren entwickelt,
ein verbessertes Verfahren, das also die Probleme des Büroshading aus der Welt geschafft hat.
Er geht zunächst einmal im Prinzip ganz genauso vor wie Herr Goro. Er sagt,
wir berechnen die normalen Vektoren in den Eckpunkten unserer Oberflächenfacetten unserer Ebenen,
Oberflächenfacetten, also in der Regel in unseren Dreiecksecken. Das nächste,
was er dann aber macht, ist,
er berechnet jetzt nicht aus diesem normalen Vektoren die Lichtintensität und interpoliert die über die Fläche,
so wie Herr Goro das gemacht hat,
sondern Er interpoliert die normalen Vektoren,
die er in den Eckpunkten berechnet hat, über die Fläche,
sodass er also zunächst einmal die Fläche überzieht mit interpoliertem normalen Vektoren.
Und für die so ermittelten normalen Vektoren erst berechnet er die eigentliche Lichtintensität.
Und damit hat er also das Problem aus der Welt geschafft,
dass unsere Lichtintensität zwar kontinuierlich über die Flächengrenzen hinweg geht,
aber eben nicht stetig differenzierbar ist.
Hier haben wir es dann mit einer Lichtintensität zu tun,
die an den Segmentgrenzen, eine Flächenelementgrenzen stetig differenzierbar ist.
Und damit fällt der Nachbarn-Effekt weg. Die Bildqualität ist dann
auch deutlich besser als beim Güro-Shading. Allerdings ist dieser Algorithmus
von Herrn Fong auch aufwendiger als der von Herrn Güro,
weil eben für jeden Punkt,
an dem wir die Lichtintensität berechnen wollen,
zunächst einmal der interpolierte normalen Vektor
ermittelt werden muss
Daraus dann die Lichterintensität ermittelt wird. Also deutlich aufwendiger als beim Guru-Shading.
Ja. Wieso verlieren wir denn überhaupt die normale Ecke von uns Leuten?
Könnten die ja bekannt sein. Selber überhaupt nicht vertiefen.
Wenn wir die tatsächlichen normalen Vektoren verwenden würden,
das wäre natürlich noch aufwendiger. Und das Ziel dieser Verfahren,
die wir hier kennenlernen, also dieser, sagen wir noch,
in Anführungsstrichen einfachen Shader, ist,
dass sie sehr mit sehr guter,
schneller Geschwindigkeit
ein Bild liefern
Wir werden nachher ja noch andere Algorithmen kennenlernen,
die also an den sogenannten Fotorealismus noch deutlich näher herankommen.
Aber die sind dann auch entsprechend entberechnungsaufwendiger. So,
und das wäre dann ein Ergebnis eines Fondrechts, einer Fond-Shading-Darstellung.
Und da sehen wir, da fällt Das Problem,
das wir bei Goro gesehen haben, der Machbandeffekt auch weg.
Wir haben wirklich sehr realitätsnahe Darstellungen. Die Schneefloppen da im Hintergrund
müssen sie sich wegdenken. Die sind nur beim Scannen da reingeraten.
Ich habe dann gleich noch ein nächstes Bild angehängt,
bei dem wir drei eine Kugel in unterschiedlicher Weise dargestellt haben.
Hier ist die Kugel mit einfachem Flat-Shading wiedergegeben.
Und da sehen wir, das ist der typische Disco-Kugel-Effekt.
Jedes einzelne Facettenelement auf der Oberfläche, wird als solches wahrgenommen.
Beim Guru-Shading haben wir die weichen Übergänge zwischen den einzelnen Flächenelementen und trotzdem
können wir irgendwo wahrnehmen, wo die Grenzen der Flächenelemente sind.
Wir sehen, dass diese Oberfläche immer noch aufgeteilt ist in einzelne Flächenbereiche und beim Fondsshading sehen wir,
dass das Ganze wirklich schön kontinuierlich gekrümmt dargestellt wird und dass auch solche Glanzlichter beim Fangshading sehr natürlich wiedergegeben werden.
Also Lichter, die dadurch entstehen, dass wir eine sehr hohe Reflexion haben,
weil die Lichtquelle ziemlich genau senkrecht über dem jeweiligen Oberflächenpunkt steht.
Hier sehen wir beim Flight Shading,
dass das dann jeweils ein gesamtes Flächenelement, die entsprechend starke Reflexion zeigt,
wenn dieses Flächenelement sich aus der senkrechten von der Lichtquelle aus betrachtet,
entfernt wegbewegt, dann wird es auf einmal wieder dunkler.
Das heißt also, wenn wir eine solche Darstellung,
die wir im Flat Shading erzeugt haben,
dann einmal rotieren lassen würden oder die Lichtquelle bewegen würden,
dann würde auf dem,
im Fleischschädigen Verfahren dargestellten Gegenstand die Oberfläche ständig irgendwo blitzen.
Ein bisschen macht sie das beim Güro-Shading auch.
Beim Fonds-Shading macht sie das gar nicht mehr.
Das Highlight hier, das Glanzlicht bleibt an dieser Stelle,
wenn wir die Kugel dann drehen würden,
bliebe das Glanzlicht immer an dieser Stelle stehen.
Also der Effekt, den wir bei ordentlichen christbaumkugeln
auch erwarten würden
Eine wichtige Anmerkung zum Schluss muss ich aber zu diesen Verfahren,
zu diesen einfachen Shadern,
für die wir unsere lokalen Beleuchtungsmodelle verwenden, noch machen.
Wir können den Gegenständen immer ansehen,
nicht nur beim Flight Shading, sondern sogar beim Fong Shading,
dass sie vereinfachte Oberflächen verwenden.
Woran erkennt man
Bei dem rumriss ganz oben an der Schachtfigur, das ist bei mir schafflich.
Stichwort, was wir sagen. Ja. Nicht,
wenn wir uns den Umriss, die Umrisslinie, die Silhouette der jeweiligen Objekte ansehen,
dann können wir daran erkennen, dass die kantig sind.
Dass die also irgendwie durch gerade Linien angenähert sind,
praktisch die Silhouette der kleinen Ebenenflächenelemente, die dem Ganzen zugrunde lagen,
die wir hier gesehen haben. Diese kleinen Ebenen, Flächenelemente,
die Beim Flatshading natürlich über die gesamte Oberfläche deutlich werden,
die gehen auch beim Fongshading, so aufwendig das ist,
nicht weg. Ja, wir sehen also eine Konturlinie,
die durch kleine Pollygone mit geraden Verbindungen zwischen den einzelnen Eckpunkten dargestellt wird.
So, soweit zunächst einmal zu den lokalen Beleuchtungsmodellen und den einfachen,
schnellen Shadern. Mit diesen Beleuchtungsmodellen kann man,
wie gesagt, in der Praxis ganz gute,
realistische Bilder erzeugen von beliebig komplexen Szenen und das Ganze auch
recht schnell und in einem großen Teil der normalen Grafiksoftware sind diese Shader auch realisiert.
Standard war über sehr lange Zeit der Goro-Shader.
Inzwischen wird auch der Fondshader eher standardmäßig mitverwendet,
der längere Zeit erstmal so ein kleines bisschen außen vor war,
weil er einfach zu aufwendig war und für damalige Prozessoren dann
nicht in der Zeit bewältigt werden konnte, die man ihm geben wollte.
Und beim Guru-Shading war das also in der Regel schnell genug
und das brachte dann eben auch immerhin schon Bilder, die deutlich besser waren als Flat-Shading.
Das nächste wäre jetzt der Schritt hin zum wirklichen Fotorealismus. Das heißt also,
wir möchten Bilder erzeugen von Szenen, die wir modelliert haben,
die wir ganz genau beschrieben haben,
deren Deometrie wir natürlich ganz präzise beschrieben haben,
für die wir die Beleuchtung ganz präzise beschrieben haben und für die wir für Die Oberflächen,
eine genaue Beschreibung ihrer Farbe, ihrer Struktur, ihres Materials,
ihrer Materialeleigenschaften und so weiter gegeben haben.
Und die möchten wir jetzt wirklich so darstellen,
wie wenn sie in der realen Welt existierten und wir sie
da mit einer guten Kamera fotografiert hätten.
Und dazu dienen uns die Verfahren,
die wir im Rahmen der globalen Beleutungsmodelle für den Fotorealismus einsetzen
Die fotorealistische Computergrafik dient uns also dazu, möglichst naturgetreue Darstellungen
zu schaffen von Gegenständen, die wir modelliert haben.
Wir brauchen dazu globale Modelle der Beleuchtung. Bisher hatten wir
lokale Modelle der Beleuchtung. Wir haben immer nur gesagt,
wir haben eine Lichtquelle,
wir haben einen Punkt auf der Oberfläche und wir haben nur
die Beziehung zwischen dieser Lichtquelle und dem Punkt auf der Oberfläche
hergestellt.
Nichts weiter
Das wollen wir hier globaler in dem Gesamtsystem, in der Gesamtszene sehen.
Wir simulieren hier auch die einfachen Gesetze der geometrischen Optik,
das heißt also das Lichtaustausches oder Lichtenergieaustausches.
Wir nutzen die optischen Eigenschaften der darzustellenden Gegenstände, jetzt aber erheblich präziser,
als wir das bei den lokalen Beleuchtungsmodellen gemacht haben und wir
berücksichtigen jetzt tatsächlich auch das Reflexionsverhalten und das Brechungsverhalten des Materials.
Und wir nehmen den Kauf, dass wir dafür erheblich länger rechnen müssen.
Dafür aber präzisere Bilder bekommen. Ich möchte an dieser Stelle
jetzt noch einmal einen kleinen Sprung zurück machen,
weil ich das vorhin vergessen habe.
Wir haben uns dieses Jahr angesehen und haben gesagt,
Wir können die Lichtintensität an einem Oberflächenpunkt ermitteln,
aus der Lichtintensität der beleuchtenden Lichtquelle.
Und wir müssen dazu ein paar Fakten der Geometrie kennen,
nämlich wir müssen die Richtung der Flächendermale unserer Oberfläche, unseres Oberflächenelementes kennen.
Und die Richtung zur Lichtquelle bzw. damit den Winkel,
der zwischen den normalen und der Lichtquelle
eingeschlossen ist.
Das habe ich vorhin vereinfachend so dargestellt. Das stimmt in
sich auch. Aber wir wissen aus unserer täglichen Erfahrung,
dass es einige Szenen gibt, die nicht nur von einer
kümmerlichen Lichtquelle beleuchtet sind, sondern durchaus von mehreren.
Wir können uns also durchaus vorstellen,
dass wir uns den Räumen aufhalten,
in denen da eine Lampe ist,
da eine Lampe ist,
da eine Lampe ist und so weiter
Was würden wir dann damit machen? Oh, nicht einfach die Sorge.
Freunde, ich erinnere mich. Wir würden dann hier die
Intensität des Reflektierten des Lichtes an den betrachteten Oberflächenpunkt reflektierten Lichtes zusammensetzen,
der Summe der Intensitäten, die sich aus allen Lichtquellen ergeben.
Das heißt, wir würden hiervor also noch ein Summenzeichen setzen.
Und wenn wir einen Lichtquellen haben, dann würden wir
das also diese Summe über die Endlichtquellen gehen lassen.
Und hätten dann die Gesamtbeleuchtung in Bezug auf alle Lichtquellen,
wobei jede Lichtquelle natürlich mit ihrem eigenen Groeffizienten der diffusen Reflexion versehen ist,
sodass wir jede Lichtquelle auch auf Verschattung betrachten können und so weiter.
Also wir können auch bei den ganz einfachen Shadern,
die wir hier kennengelernt haben, natürlich ohne weiteres mehr als eine Lichtquelle berücksichtigen.
Die sind also nicht so simpel, dass man da sagen kann,
das geht nur mit einer Funze,
die da im Raum hängt und da so ein bisschen Licht reinbringt,
sondern das Licht kann durchaus recht, die Beleuchtung kann durchaus recht komplex sein.
So, zurück jetzt zu unseren Globale. Damit sind es
aber immer noch lokale Beleuchtungsmodelle, auch wenn es mehr Lichtquellen gibt,
denn das Modell ist immer ein lokales Modell,
das die Relation zwischen dem Oberflächenpunkt und jeder einzelne Lichtquelle beschreibt
So, bei den globalen Beleuchtungsmodellen. Da sind in der Vergangenheit unterschiedliche Verfahren entwickelt worden,
die praktisch die Lichtausbreitung global in einer Szene berücksichtigen.
Und eines, das sehr verbreitet und bekannt ist,
ist das sogenannte Ray-Tracing oder auch die Strahlverfolgung,
die Verfolgung der Lichtstrahlen von den Lichtquellen zu den beleuchteten Oberflächenpunkten
modelliert und daraus dann die Die Lichtintensität berechnet,
wobei dann eben auch Lichtbrechung und direkte spiegelnde Reflexion berücksichtigt wird.
Ein zweites Verfahren ist die sogenannte Strahlungsberechnung. Radiocity im Englischen genannt,
das sehr schön die Ausbreitung des Lichtes,
die diffuse Ausbreitung des Lichtes in einem Raum modelliert.
Und beide Verfahren haben Gewaltige Stärken, die sie deutlich besser machen,
als die einfachen Shader, die wir kennengelernt haben.
Beide Verfahren haben allerdings auch Schwächen,
die sie doch ein Stück hinter unseren Erwartungen,
die wir an ein Fotorealistische Darstellung richten, zurückfallen lassen.
Aber es hat sich herausgestellt, dass die Schwächen des einen
Verfahrens Stärken des anderen sind und umgekehrt Und wenn man diese beiden Verfahren kombiniert,
dann kann man ihre Stärken kombinieren und ihre Schwächen total kompensieren.
Und dann finden wir hybride Verfahren, die unserer Forderung nach Fotorealismus
dann tatsächlich schon sehr nahe kommen. So, interessant ist,
dass diese Verfahren, die hier entwickelt worden sind,
im Prinzip auf einer allgemeinen Darstellungsgleichung beruhen, die Herr Fong,
den wir vorhin als ein der Erfinder der einfachen Shader kennengelernt haben,
auch schon entwickelt hat und die er vom Prinzip her für sein Shading-Verfahren schon eingesetzt hat.
Diese allgemeine Darstellungsgleichung in der Angelsächsischen Literatur generell als Rendering-Equation bezeichnet,
sieht ganz einfach so aus. Wir ermitteln die Strahlungsintensität,
die von einem Oberflächenpunkt in der Szene,
den wir mit X2 bezeichnen wollen, Zu einem Oberflächenpunkt,
den wir mit X1 bezeichnen wollen, gelangt.
Diese Strahlungsintensität setzt sich zusammen aus. Zwei Thermen,
und zwar aus einem Therm der Emission. Das heißt,
wenn an unserem Oberflächenpunkt X2 eine Lichtquelle steht,
dann emittiert die von sich aus Licht, das zum Oberflächenpunkt X1 gelangt.
Ansonsten können wir an unserem Oberflächenpunkt X2 eine reflektierende,
eine diffus reflektierende Oberfläche haben,
die Licht von einem dritten Oberflächenpunkt X3 erhält,
die also von einem Punkt X3 beleuchtet wird und von diesem Licht etwas zum Punkt X1 reflektiert.
Okay. Und die Lichtintensität, die von einem Oberflächenpunkt X3
zum Punkt X2 gerät und damit nach X-1 reflektiert werden kann,
die wird durch diesen Faktor gewichtet.
Und das Ganze müssen wir dann integrieren über die gesamte Szene.
Das heißt also über alle Punkte aller Oberflächen,
die Licht in irgendeiner Form dann zu unserem betrachteten Punkt X-1 reflektieren.
So, und wir sehen dieses Ganze hier, ist die eckige Klammern gesetzt.
Davor steht noch ein Faktor, ein sogenannter Geometrieterm.
Dieser Term besagt jetzt wieder, Von X2 nach X1
wird so und so viel des Lichtes oder der Lichtintensität,
die hier erzeugt wird, tatsächlich abgeleitet.
Das heißt also so und so viel Prozent dieser Intensität kann dort ankommen.
Und dieser Therm wird dann zum Beispiel auch null sein,
wenn dazwischen irgendein anderer Gegenstand ist,
der einen Schatten auf X1 in Bezug auf den leuchtenden Punkt X2 darstellt.
So, das Ganze also noch einmal zusammengefasst
G ist der Geometrie-Therm, der angibt, welcher Anteil der
von X2 in Richtung X1 abgestrahlten Energie dort tatsächlich ankommt.
Und im allgemeinen Fall, wenn wir also keinen Schatten haben,
dann können wir diese Größe einfach darstellen, als eins durch R-Quadrat.
R ist der Abstand zwischen X1 und X2. Damit haben wir
also praktisch in unser Modell übernommen, die physikalische Eigenschaft,
dass das Licht mit dem Quadrat der Entfernung abnimmt.
Die Lichtintensität mit dem Quadrat der Entfernung
Dann den Emissionstherm, Epsilon, den wir verwenden,
wenn in X-2 eine Lichtquelle liegt,
die dann eben direkt Licht in Richtung X-1 emittiert.
Unser Roh ist ein Streuungstherm, der sagt,
welche Menge der von X-3 in Richtung X-2 abgegestrahlten Energie
dann von dort Richtung X-1 gestreut wird.
Und es ist schließlich die Vereinigung aller Oberflächen in unserer Szene
So, mit diesem allgemeinen, mit dieser allgemeinen Rendering-Equation der allgemeinen Darstellungsgleichung
, können wir jetzt unsere globalen Beleuchtungsmodelle individuell formulieren.
Und die erste ist also, die, die wir als
Raytracing kennen. Und Raytracing ist etwas,
das im Grunde genommen gar nicht so neu ist,
denn die wesentliche Eigenschaft des Raytracing, die uns immer wieder fasziniert ist,
die gute Modellierung spiegelnder Oberflächen in der Szene.
Und dieses Spiegeln der Oberflächen hat natürlich die Menschen schon immer
besonders begeistert. Und sie haben auch schon immer versucht,
irgendwie in der Kunst zum Beispiel spiegelnde Oberflächen darzustellen.
Und eine schöne Skulptur, die ich vor einiger Zeit gefunden habe,
war in Bill Bau, diese Skulptur am Gugenheim-Museum,
die von einem indischen Künstler stand, Anish Capo.
Und der Titel dieser Skulptur ist Tall Tree and the Eye
Es ist aus Edelstahl gemacht. Ziemlich perfekte Kugeln,
die da zusammengesetzt worden sind und in denen sich praktisch die gesamte Umgebung spiegelt.
Und das Schöne an einer Kugel ist,
dass ihre Oberfläche durchgehend kontinuierlich mit dem einheitlichen Radius gegründet ist und
damit also praktisch wirklich die gesamte Umgebung sich in dieser Oberfläche spiegeln kann.
Wenn wir uns das mal im Detail ansehen,
dann können wir sehen, wie wir in jeder einzelnen dieser Kugeln,
ist irgendwo ein Teil der umgegenden Stadtbebauung wiederfinden können.
Aber was natürlich interessant ist, wir können in jeder einzelnen
dieser Kugeln auch Spiegelbilder der benachbarten Kugeln sehen.
Und dass dann weitergehend faszinierende ist, in diesen Spiegelbildern dieser benachbarten Kugeln,
da sehen wir die Spiegelbilder der Kugeln,
die diesen Kugeln benachbart sind.
Und das können wir
beliebig weit treiben
Ich könnte also jetzt stundenlang das spiegeln, der spiegeln,
der spiegelnden Kugeln, beschreiben.
Und ich wäre immer noch nicht zu Ende gekommen,
um dieses Phänomen tatsächlich in Warte zu fassen. Und dieses Phänomen,
das ist etwas, dem wir mit dem Raytracing nahe kommen können.
Das ist etwas, das wir im Raytracing,
also ziemlich gut modellieren und grafisch wiedergeben können. Ihr habt da noch andere Beispiele gesehen,
diese sogenannten Tulpen von Jeff Coons aus den USA,
das mit dem Mann, der die Flächen entwickelt hat,
weder Verwandt noch verschwägert,
er schreibt sich auch mit K am Anfang und der Mann,
der die Flächen entwickelt hat,
mit C. Aber auch das ist ein sehr schönes Beispiel dafür,
wie man von den spiegelnden Oberflächen von Gegenständen begeistert sein kann.
Auch hier können wir sehen, diese Formen sind natürlich
nicht mehr so wie die perfekt runden Kugeln.
Sie haben Beulen und haben unterschiedliche Krümmungsradien und darum sieht man also
unterschiedliche Gegenstände in ihren Oberflächen gespiegelt. Aber auch hier sehen wir,
wie sie sich gegenseitig in ihren Oberflächen spiegeln und wir in
den Spiegelbildern auch wieder Spiegelwiebbilder der Umwelt erkennen können.
Interessant ist, beim Rumstöbern und Rumschnuppern habe ich gesehen,
eigentlich ist diese Grundidee dessen, was wir mit dem Raytracing machen,
so furchtbar neu gar nicht.
In der Renaissance gab es schon Menschen, die sich Wissenschaftler,
Künstler, die sich mit dem Prinzip auseinandergesetzt haben und die
dann etwas beschrieben haben,
dass wir heute im Prinzip als Raytracing bezeichnen würden
Sie haben das damals nur nicht gemacht und sie sind nicht
so richtig auf die Idee gekommen, das zu tun.
Vielleicht. Vielleicht waren sie sogar bei der Idee ganz nah
und haben sie nur noch nicht ganz so aufgeschrieben.
Aber vom Prinzip her können wir sagen, Leonardo da Vinci,
der am Übergang vom 15. zum 16. Jahrhundert gelebt hat,
der hat die mathematisch berechentbare Perspektive entwickelt.
Und da drin hat er im Grunde genommen Verfahren beschrieben,
die uns über Raytracing, dem, was wir als Raytracing bezeichnen,
sehen, nahekommen.
Sein Zeitgenosse Albrecht Dürer, diesseits der Alpen, hat sich
mit gleichen Phänomenen auseinandergesetzt. Und er hat eine schriftliche Abhandlung geschrieben,
mit dem Titel in der Unterweisung der Messung,
mit dem Zirkel und Richtscheid in Linien, Ebenen und ganzen Körperen.
Und da sehen wir, da hat er im Prinzip alles schon drin,
was wir auch in der Topologie kennengelernt haben.
Er hat sich also vom Prinzip her mit der Geometrie des
Raytracing auseinandergesetzt. Der hat da drin die Perspektive für Darstellung
genau beschrieben und die Grundzüge des Raytracings ziemlich genau erläutert.
Und das möchte ich Ihnen mit einem Bild zeigen,
das ich gefunden habe, das von Albrecht Dürer stand,
dass er als Illustration für dieses Traktat verwendet hat.
Und wenn wir uns das genau ansehen,
dann kommen wir dahin zu dem Verfahren,
dass wir gleich dann genauer betrachten wollen.
Hier haben wir einen Bildschirm, in denen wir unsere Abbildung bringen wollen.
Wir haben einen Gegenstand in unserer Szene, den wir perspektivisch darstellen wollen.
Und wir verfolgen die Lichtstrahlen einzeln, jeden einzelnen Lichtstrahl,
der von einem Oberflächenpunkt unseres Gegenstandes
ausgeht.
Durch die Bildebene hindurch
Und genau das ist, was Herr Dürer hier beschrieben hat.
Und genau das ist das Prinzip, dass wir beim Raytracing auch verfolgen.
Wir verfolgen den Weg der Lichtstrahlen von einem Oberflächenpunkt oder
des Lichtstrahls von einem Oberflächenpunkt eines Gegenstandes in unserer Szene aus
durch die Bildebene zu unserem Auge,
dass diesen Gegenstand durch die Bildebene
hindurch betrachtet
Und da zurzeit von Herr Dürer, damals am Übergang zwischen dem 15.
zum 16. Jahrhundert, es noch keine elektronischen Rechenratlagen gab,
sondern man sehr viel noch mit der Hand gemacht hat.
Auch gerechnet hat man damals noch mit der Hand.
Und da hat man eben auch das Raytracing noch mit der Hand gemacht. Und darum also eine Person,
die den Ausgangspunkt des Lichtstrahles festhält,
der Lichtstrahl wird dann manifestiert durch einen Bindfaden,
damit dieser Lichtstrahl auch ordentlich gerade Bildebene durchstößte,
also von dem Ausgangspunkt durch die Bildebene verläuft,
wird dieser Lichtstrahl hier hinten über eine kleine Umlenkrolle gelenkt und hier hinten durch ein Gewicht stramm gehalten,
damit dieser Strahl auch wirklich gerade ist.
Ich finde, das ist genial, was Herr Dürer sich da ausgedacht hat.
Und wir können uns jetzt sehr gut vorstellen, wenn dieser Prozessor,
den wir da als einen halben Grafikprozessor auf der Seite stehen haben,
wenn der jetzt den Ausgangspunkt hier so nach und nach auf dieser Kante der Mandoline entlang wandern lässt,
also immer auf einen neuen Punkt setzt,
dann wird der Strahl immer an einer anderen Stelle hier die Bildebene durchstoßen.
Das Problem ist jetzt nur,
wir können diesen Punkt genau berechnen und dann einfach sagen,
so, und dieses Bild Pixel, dem geben wir die Farbe,
die wir mit unserer bekannten Farbwertformel errechnet haben und dann hat sich das.
Unsere Grafikprozessoren zur Zeit Dürers waren eben zwei Personen,
die das noch von Hand gemacht haben und noch nicht so viel gerechnet haben.
Darum brauchen wir also eine zweite Hälfte unseres Grafikprozessors, der hat dann praktisch
Und wir sehen das hier. Den Punkt in der Bildebene
festgehalten, an dem der Bindfaden durch die Bildebene hindurchstößt.
Den hat er festgehalten und dann haben sie den Bindfaden wegnehmen müssen.
Stattdessen haben sie das. Die Bildebene mit dem Bild in dieser Ebene
hineingeklappt. Und der hat solange also diesen Punkt festgehalten,
zittern durfte der nicht. Nervös werden durfte der nicht.
Hat also seinen Punkt festgehalten. Dann wurde die Bildebene reingeklappt
und er hat an der Stelle auf die Ebene
einen Punkt gemalt
Vorstellbar? Das ist ein bisschen aufwendig, aber es klappt.
Und auf diese Weise bekommen sie ein absolut perspektives,
sauberes, perspektivisches Bild dieses Gegenstandes.
Man hat dieses Verfahren hinterher ein kleines bisschen vereinfacht.
Dieses hier, das Herr Dürer da beschrieben hat,
ist ja ein sehr präzises Verfahren,
erfordert aber auch sehr viel Geduld und eben zwei Prozessoren und
eine ruhige Hand
Diese schöne Konstellation von Instrumenten habe ich in Museo Deliophizien,
Florenz gefunden. Die stammt ungefähr aus der gleichen Zeit.
Und da hat man dann dieses Verfahren, ein ganz kleines
bisschen technisch vereinfacht. Wir haben hier wieder eine Szene,
die wir grafisch darstellen wollen, in Form dieser Büste,
die da hingestellt wird.
Hier haben wir unsere Bildebene definiert. Die Bildebene ist gerastert
. Es sind relativ große Pixel, zugegebenermaßen.
Aber das Prinzip ist genau das Gleiche
wie mit unseren Bildschirmpixeln heute
Hier ist auf diesem schönen kleinen Tisch Obelisken,
hier oben auf der Spitze, der Kamerapunkt.
Kameras gab es noch nicht, aber man konnte den Punkt,
den Kamerapunkt hierhin definieren, da ist der Kamerapunkt definiert.
Und jetzt musste also derjenige,
der eine Aufnahme von diesem Gegenstand in der Szene machen wollte,
einfach über diesen Kamerapunkt durch diesen Rahmen, durch dieses Gitter,
hindurchschauen und sich merken, in welchem Feld
Dieses geht das, an welcher Stelle er den jeweiligen Punkt in der Szene gesehen hat.
Und das Ganze dann hier unten auf das Papier übertragen.
Und wenn Sie genau hingucken, ist hier auf dieses Papier
zunächst mal auch das Gitter gemalt, das wir hier haben.
Und man konnte dann also genau sehen, aha,
ich bin praktisch in dem Kästchen in der dritten Spalte von rechts
und in der zweiten Spalte von oben und da so etwa ein Drittel der Gesamthöhe.
Das musste man dann sehr genau abschätzen und dann konnte man
das da rein einzeichnen und den Punkt da reinzeichnen und auf die Weise wirklich punktweise übertragen,
was man durch dieses Gitter in der Szene gesehen hat und hatte dann auch wieder ein wunderbares perspektivisches Bild dessen,
was man grafisch darstellen wollte.
Das Verfahren ist im Prinzip genau das Gleiche wie das,
was Herr Dürer dargestellt hat, mit dem kleinen Unterschied.
Wir haben den Bindfaden ersetzt durch einen Seestrahl.
Wir haben also praktisch einen Seestrahl von der Spitze der Pyramide
durch unsere Bildebene in die Szene hinein
Gelegt und wir verfolgen diesen Seestrahl.
Und das war es zu der Zeit also relativ verbreitet,
denn ich habe irgendwann auf einer kleinen Rundfahrt durch Frankreich an beim Schloss
Showmore Surloire im Schlosspark dieses nette Ding hier gesät und natürlich dann auch sofort gesehen,
aha,
hier hat jemand irgendwann vor 300 Jahren oder 400 Jahren
oder so Raytracing betrieben
So, hier können wir es dann nochmal aus dieser Perspektive sehr schön sehen.
Wir haben hier die Bildebene und wir können in diese Bildebene,
wunderbar, diese Ansicht des Schlosses übertragen. So,
das also ein als kleiner Ausflug in die Geschichte und da sehen wir das also Raytracing,
so modern das klingt, gar nicht unbedingt eine Erfindung unserer Zeit ist,
sondern durchaus etwas ist,
das hier hier in der Kunst und auch in der Wissenschaft,
in der Mathematik, in der Geometrie,
seit einigen Jahrhunderten bekannt ist und in irgendeiner Form auch praktisch umgesetzt wird.
Ja, wie machen wir das? Wir machen das ganz genauso.
Wir haben einen Kamerapunkt oder Augpunkt. Wir haben eine Szene,
die wir aufgebaut haben mit irgendwelchen Gegenständen da drin,
die ich hier einfach nur symbolisiert, durch ein paar Kugeln dargestellt habe.
Wir haben eine oder mehrere Lichtquellen, die wir benutzen,
um die Szene zu beleuchten
Und wir haben vor allem unsere Bildebene, unseren Bildfirmen,
der aufgeteilt ist, sind ein regelmäßiges Raster von Pixel.
Und wir sehen, das sind alles genau die gleichen Gegenstände,
die wir bei Herrn Dürer auch schon gesehen haben und bei
den Instrumenten da im Museum, Museo, Deo, Delli Offizien.
So, was machen wir jetzt eigentlich beim Raytracing? Was ist das Prinzip? Das Prinzip ist,
dass wir Licht strahlen, verfolgen, Licht strahlen,
Die Grundidee ist, lichtstrahlend zu verfolgen, die von den Lichtquellen ausgehen,
auf Oberflächen der Gegenstände in der Szene fallen und von dort reflektiert werden in Richtung unserer Bildebene und im Prinzip dann in Richtung des Betrachtenden Auges.
Nun haben wir gesehen,
dass auch schon vor Jahrhunderten man dieses Verfahren nicht so praktisch eingesetzt hat,
wie wir uns das gerade so vorgestellt haben,
dass wir nämlich die Lichtstrahlen verfolgen, ausgehend von den Lichtquellen,
bis dann Teile davon im betrachtenden Auge landen,
sondern dass wir umgekehrt seestrahlen vom betrachtenden Auge verfolgen,
in die Szene hinein, bis sie irgendwo nicht mehr verfolgt werden können.
Warum machen wir diesen Dreh? Warum drehen wir das ganze
Verfahren um? Er ist praktisch Buche vom Kindzustand aus,
in das ich reduzieren will unsere Frau, weil er ganz viele,
also viel Licht schreiben, gehen wir sicher ins Auge,
sollten wir woanders hin.
Wir reduzieren es deswegen auf die Ideale, die natürlich sein würde.
Genau. Wir reduzieren den Ruchraum gewaltig, ganz erheblich, auf einen minimalen Bruchteil.
Denn wenn wir wirklich alle Lichtstrahlen, die von unseren Lichtquellen ausgehen,
verfolgen würden, dann würde unser Verfahren nie fertig.
Da können wir noch so schnelle Rechner verwenden, das geht überhaupt nicht.
Wenn wir aber sagen, wir verfolgen nur die Strahlen,
die tatsächlich bei unserem Auge ankommen und sehen,
wie sind die eigentlich durch die Szene gekommen,
dann Betrachten wir nur das,
was wir am Ende wirklich brauchen.
Und das ist noch aufwendig genug. Und wir hatten ja gesehen,
das ist genau das Gleiche, was wir hier schon haben.
Wir schicken einen Seestrahl in die Szene durch die Bildebene in
die Szene und versuchen herauszufinden, wo trifft dieser Seestrahl auf die Oberfläche eines Objektes?
Welcher Oberflächenpunkt eines Objektes wird dann an welchem Punkt in der
Bildebene abgebildet? Und ganz genauso machen wir das heute mit
dem Raytracing
Der Vorgang ist also so, der,
dass wir von unserem Auge aus oder der Kamera
aus durch jeden Bildpunkt einen Strahl in die Szene schicken.
Das ist immer noch recht viel bei nicht furchtbar großer Auflösung
unserer Bildschirme, zum Beispiel Zoll 180 mal
1024. Das ist nichts, was uns um unbedingt vom Sockel haut.
Haben wir aber schon 1,5 Millionen Seestrahlen, die wir da verfolgen müssten.
Das ist genug. Dann müssen wir Für jeden Einzelnen dieser Strahle
alle Schnittpunkte mit Oberflächenelementen der Objekte in der Szene ermitteln.
Wobei wir die jetzt wieder reduzieren können, auf die Oberflächenpunkte,
die von diesem definierten Kamera bzw. auch Punkt aus auch potenziell sichtbar sind.
Das heißt, wir müssen nicht sämtliche Oberflächenpunkte mit unserem Seestrahl
schneiden oder sämtliche Oberflächen mit unserem Seestrahl schneiden, sondern nur die,
die tatsächlich unserer Kamera beziehungsweise unserem Outpunkt zugewandt sind.
Also mir gibt es nur noch mal näher zu schreien.
Das kommt dann. Aber das ist richtig, ja. Zunächst mal,
wie gesagt, gehen wir vom Augpunkt vor der Bildebene aus,
schicken durch jede einzelne Bildschirmpixel einen Strahl in die Szene,
berechnen alle Schnittpunkte, müssen dann natürlich die Schnittpunkte sortieren und den uns am nächsten gelegenen Schnittpunkt identifizieren.
Und das ist der, den wir dann darstellen können
Das Prinzip haben wir schon bei unseren Hindline-Algorithmen kennengelernt. So,
und für diesen Punkt auf der Oberfläche, da werten wir den Standard Reflexionsoperator aus,
den wir uns gleich noch genauer ansehen werden. Wenn an diesem Punkt,
den wir da als nächstgelegenen Schnittpunkt ermittelt haben,
die Oberfläche eine echt spiegelnde Eigenschaft hat, dann,
jetzt kommen wir zu dem, was Sie gesagt haben,
müssen wir an dieser Stelle einen reflektierten Strahl generieren,
der nach den Gesetzen der physikalischen Optik von diesem Punkt wieder in die Szene reflektiert wird.
Das heißt also, einfallswinkelt gleich Ausfallswinkel. Und diesen reflektierten Strahl,
den müssen wir jetzt wieder durch die Szene verfolgen und
dann gehen wir praktisch wieder ganz genauso vor wie hier,
nur dass unser Ausgangspunkt nicht der Augspunkt ist,
sondern der Oberflächenpunkt, von dem unser Lichtstrahl oder Seestrahl reflektiert wird.
Die andere Alternative ist, dass das Material,
auf das unser Seestrahl fällt,
ein durchsichtiges Material ist und dass unser Seestrahl dieses Material durchdringen kann,
aber an seiner Oberfläche gebrochen wird.
Über Lichtbrechung haben sie sich, glaube ich,
schon mit Frau Dreschler Fischer unterhalten. Das heißt,
da gehe ich davon aus, dass das bekannt ist.
Unser Seestrahl wird gebrochen, geht unter einem bestimmten Winkel
in das Material hinein
Und muss in dem Material entsprechend verfolgt werden und auch da gehen wir
dann von dem Brechungspunkt aus und gehen diesen Algorithmus im Prinzip ganz genauso durch.
Und das bedeutet, wenn wir spiegeln,
Spiegelung an der Oberfläche haben oder Brechung ins Material hinein haben,
dann kommen wir hin die Rekursion.
Das heißt, aus unserem ersten Strahl werden dann,
wird dann ein zweiter Strahl, der da angehängt wird,
den wir weiterverfolgen müssen. Und es gibt ja durchaus Materialien,
die lichtdurchlässig sind, die also durchsichtig sind,
in die wir unseren Seestrahl hineinverfolgen müssen und die aber an der Oberfläche spiegeln,
sodass wir zwei strahlen, weiterverfolgen müssen von dem entsprechenden Oberflächenpunkt aus.
So normale Fensterscheiben, da kennen wir das ja,
wenn wir hier raussehen durch die Fensterscheibe,
dann spiegelt sich in der Oberfläche der Raum
Auf der anderen Seite sehen wir jenseits der Fensterscheibe den Baum.
Und dazwischen ist das Licht durch die Scheibe gegangen und gebrochen worden.
Wir nehmen das gar nicht wahr, weil die Scheibe so dünn ist,
nehmen wir in dem Fall die Brechungseigenschaft des Glases gar nicht so richtig war.
So, wenn wir diesen Rekursionen folgen,
bekommen wir natürlich an jedem neuen Oberflächenpunkt auf den ein fortgesetzter Strahl,
folgt wieder eine neue Lichtintensität,
die wir da berechnen
Und alle diese Intensitäten, die wir da berechnet haben,
die sammeln wir praktisch ein. Und bringen sie zurück auf unsere Bildschirmfläche.
Der hohe Berechnungsaufwand dieses Verfahrens liegt vor allem in den Schnittpunktermittlungen.
Und das ganze Verfahren wird auch darin erst richtig interessant,
dass wir Oberflächen von Gegenständen dann auch tatsächlich in ihrer geometrisch exakten Form berücksichtigen.
Das heißt also, ein Raytracing-Verfahren,
bei dem wir die Oberflächen kontinuierlich gekrümmten Oberflächen von Gegenständen
dann annähern durch kleine Ebenelemente, die das bringt relativ wenig.
Das bringt also keinen Fotorealismus. Und hier werden wir
dann tatsächlich die geometrische Form unserer Oberflächen genau berücksichtigen.
Und das bedeutet, wir müssen also immer Schnittpunktermittlungen durchführen zwischen einer
irgendwie definierten kunschen Bisbleinfläche, Bisierfläche und dem jeweiligen Seestrahl.
Diese Schnittpunktberechnungen sind in der Regel recht aufwendig und die
machen Berechnungsaufwand für diese Verfahren auch sehr groß. So,
der Standardreflexionsopperator, den Turna Whitted 201980 erstmalig veröffentlicht hat,
der sieht so aus.
Die Lichtintensität, die wir für einen Oberflächenpunkt ermitteln,
die ergibt sich aus der Intensität des Ambientenlichtes.
Hier könnten wir auch unseren Koeffizienten bei unseren Ambienten koeffizienten
noch mit einfügen
Hinzu kommt, für jede Lichtquelle in der Szene,
die Intensität des Lichtes gewichtet mit diesem hier,
dem Skala-Produkt aus dem normalen Vektor der Fläche und dem Richtungswecktotter zur Lichtquelle.
Kommt Ihnen das bekannt vor?
Das war der Kurs aus eingeschossenen Grenzen
Genau. Haben sie irgendwann mal in den All gebracht,
glaube ich, gemacht, ne?
Das ist Skalaprodukt zwischen zwei Vektoren, entspricht dem Cosinus,
das zwischen den beiden Vektoren eingeschlossenen Winkers.
Das ist also praktisch nur eine etwas andere Schreibweise, als die,
die ich Ihnen vorhin für die lokalen Beleuchtungsmodelle auch gezeigt habe.
So, und hier habe ich das dann auch gleich mit hineingebracht,
so wie Tonna Witted das auch gemacht hat in seiner Veröffentlichung.
Wir können hier beliebig viele Lichtquellen in der Szene anordnen und
das geht im Prinzip für die lokalen Beleuchtungsmodelle auch.
Das heißt also, das, was hier steht,
In diesem Reflexionsopperator von Donna Whitted.
Bis auf den Teil, der es hinter meinem Amt verschwunden ist.
Ist nichts weiter als das, was wir als lokales Beleuchtungsmodell kennengelernt haben.
Dieses hier links von diesem Pluszeichen ist das,
was wir bereits kennen. Das Neue,
was hinzukommt und was aus dem lokalen Beleuchtungsmodell ein globales Beleuchtungsmodell
macht und aus einem Fonds- oder Guru-Shading ein Raytracing macht,
das sind diese beiden Therme
Das ist die spiegelnde Reflexion in einem Punkt der Oberfläche und das
ist die Transmission, das heißt die Lichtbrechung durch das Material.
Dadurch haben wir jetzt den ursprünglichen, die ursprüngliche Formel,
ein ganz kleines bisschen erweitert, aber damit haben wir also
den wesentlichen Schritt vorwärts gemacht und aus einem lokalen Beleuchtungsmodell ein globales Beleuchtungsmodell gemacht.
Und diese beiden Größen hier,
das S und das TK sind wieder unsere Koeffizienten,
die wir
immer mit hineinbringen um
Die Anteile der jeweiligen Intensität ein bisschen abzuschwächen, wenn wir das haben möchten.
Wichtig sind diese beiden Größen S und T. Es ist eben der spiegelnde Reflexionsaltenteil,
wenn unser Seestrahl auf eine spiegelnde Oberfläche trifft und wir einen
neuen Seestrahl von dort aus in die Szene wieder verfolgen,
dann wird hier praktisch diese Gleichung wieder eingesetzt.
Das heißt also, hier kommt die Rekursion hinein.
Es errechnet sich dann praktisch ganz genauso und
das Gleiche gilt für Tee
Falls wir durchsichtiges Material haben, dann wird hier auch wieder
die ganze Gleichung eingesetzt. Dadurch kommen wir also in unser
schönes Rekussionsverfahren. Und Sie dürfen sich jetzt überlegen,
als Informatikerinnen und Informatiker, wann dieses Verfahren terminiert.
Brauchen Sie mir aber heute nicht zu sagen,
das verraten Sie mir nächste Woche,
dann können Sie in Ruhe darüber nachdenken.
Für heute danke ich Ihnen für Ihre Aufmerksamkeit und wünsche Ihnen
noch eine schöne Woche