/**********************************************************************
* EINFUEHRUNG IN DIE COMPUTERGRAFIK                        BEISPIEL 8 *
*                                                                     *
* Kalchmair Franz-Helmut                                     Gruppe 4 *
*                                                                     *
**********************************************************************/

1)
totale Reflexion:
Das Material reflektiert so, daß der Lichteinfallswinkel gleich ist dem Lichtausfallswinkel. 
Bei transparenten Medien gilt das auch, wenn der Einfallswinkel über 45° liegt. Es wird dann 
praktisch das ganze Licht reflektiert und nur ein kleiner oder gar kein Teil gebrochen.

diffuse Reflexion:
Das Material reflektiert das einfallende Licht gleichmäßig in alle Richtungen.

[Literatur: Computergrafik, Fellner, BI-Verlag]


2)
Fraktal:
Fraktal bedeutet Selbstähnlichkeit. Durch (unendliche) Wiederholung eines meist sehr einfachen
Grundmusters entstehen große Muster/Objekte wie Farne, Wolken, Landschaften. Das heißt Fraktale
sind gut einsetzbar für Hintergründe, Pflanzen, Bäume, ganze Wälder. 
[Eigendefinition]


3)
Reflexion:
Licht wird an einer Oberfläche (teilweise) zurückgeworfen. Die Art des Zurückwerfens ist eine
Materialeigenschaft (Transparenz, Glattheit, ...).

Absorption:
Licht wird von einem Material "geschluckt". Bei weißem Licht gilt: Je dunkler eine Fläche ist, 
desto mehr Licht wird absorbiert. Generell gilt, daß die Farbe des Lichts und die Farbe des
angestrahlten Materials bestimmen, was absorbiert wird. Ein grün angestrahlter roter Ball
erscheint schwarz.

Transmission:
Der Anteil des Lichts der vom Material durchgelassen wird.
[Eigendefinitionen]


4)
Backface-Culling
Die Unterdrückung der Rückflächen eines Objekts (Back-Face Removal oder Back-Face Culling).
Das Back-Face Culling bestimmt exakt den sichtbaren Teil. Durch den Ausschluß der Rückflächen
halbieren sich in etwa die weiteren Berechnungen für Lighting und Shading. Durch Berechnung des
Normalvektors erkennt was eine Vorder bzw. eine Rückfläche ist.

[Lit: http://www-lehre.informatik.uni-osnabrueck.de/~cg/2000/skript/17_1_Back_Face_Removal_Culling.html]


5)
Raycasting & Raytracing
Ray-Tracing ist ein wichtiges Verfahren der Computergraphik, mit dem man realistische (einer Photographie ähnliche) Bilder mit dem Computer erzeugen kann.
Das Prinzip besteht darin, einen Lichtstrahl rückwärts zu verfolgen: Vom Auge des Betrachters aus durch jedes Pixel des Bildes, bis er auf einen Teil der abzubildenden Szene trifft. Das Pixel erhält dann Farbe und Helligkeit des getroffenen Oberflächenelements.
[Lit: http://www.apm.tuwien.ac.at/research/Raytracing.html]

Zur Berechnung von Schatten wird von jedem Schnittpunkt zwischen Strahl und Objekt zu jeder Lichtquelle ein zusätzlicher Strahl ausgesandt. Trifft dieser Strahl auf ein blockierendes Objekt, dann liegt der Schnittpunkt im Schatten der Entsprechenden Lichtquelle und das von ihr ausgestrahlte Licht geht in die Intensitätsberechnung des Bildpunktes nicht ein. 
Die resultierende Farbe ergibt sich als die gewichtete Summe der in den einzelnen Rekursionsschritten berechneten Farbintensitäten. Zur Gewichtung wird üblicherweise eine Funktion verwendet, die die Helligkeit in Abhängigkeit von der Entfernung zum Betrachter (das entspricht dem vom Strahl zurückgelegten Weg) dämpft. 
Raytracing-Programme tasten mittels vom Beobachter ausgehenden Sehstrahlen (engl. ray=Strahl, trace=Verfolgen) die gewünschte Umgebung zeilenweise ab. Trifft ein solcher Sehstrahl auf ein Objekt der virtuellen Welt, so wird von dort aus die Entfernung zu den verschiedenen Lichtquellen berechnet. 

Raycasting: Raycasting ist eigentlich nichts anderes als 'abgespecktes' Raytracing. Jedoch lässt sich mit dieser Methode 'realtime Animation' relativ leicht bewerkstelligen. Mit Raycasting wird sehr viel Rechenzeit
gespart.
Es zielt also alles darauf ab, nur das nötigste zu berechnen, und den Rest geschickt 'hineinzufälschen'. Für fliessende Animation müssen pro Sekunde mindestens 20 Bilder berechnet werden. Schraubt man die Ansprüche an die Grafikqualität nur etwas zurück, lässt sich eine unvermutete Geschwindigkeitssteigerung erreichen. 
Die Grundlegende Idee des Raycasting ist, aus der Abtastung nur einer einzigen Bildzeile alle notwendigen Informationen für das gesamte Bild zu gewinnen. Bei der in PC-Spielen üblichen Grafikauflösung von 320x200 Punkten würde dies eine rechnerische Beschleunigung um den Faktor 200 ergeben. 
Der Preis für diese immense Beschleunigung ist aber eine stark eingeschränkte Welt. Alle Objekte dürfen nur aus senkrechten Flächen bestehen, und Wände dürfen keine Fensteröffnungen enthalten. Die in diversen Spielen auftauchenden Fenster und Treppen sind nur geschickte Fälschungen. Doch zur Reduktion des Berechnungsaufwandes bedient man sich noch weiterer Kniffe: 
So werden Spiegelungen nicht mehr berechnet, sondern (so sie nicht ganz vermieden werden) der Strahl, der für die Spiegelung eigentlich berechnet werden müsste, wird mit einem konstanten Spiegelungsterm versehen.
Die Kantenlänge der künstlichen Welt beträgt meist eine Länge, die eine Potenz von zwei ist (2,4,8,16,32,etc.). Dies hat den Vorteil das Positionsberechnungen direkt mit dem Prozessor gemacht werden können. In der Fachsprache nennt man diese Vorgänge Ausmaskieren, bitweises Schieben und Modulo-Berechnungen. 
Ein weiterer Trick besteht darin, dass sich oft wiederholende Berechnungen wie Kosinus- oder Sinuswerte oder auch Bewegungsabläufe wie Springen oder Hüpfen vorausberechnet und dem Programm zur Verfügung gestellt werden. Dies ist auch ein Grund für den wachsenden Speicherbedarf der neueren Spiele. So findet 'Rebel Assault II' auf einer CD mit einer Kapazität 680 MByte gerade genug Platz.
Die beweglichen Spielfiguren und herumliegenden Objekte werden als zweidimensionale 'Sprites' nachträglich in die Raycast-Grafik einkopiert. Dies führt zwar dazu, dass die Objekte aus allen Richtungen gleich erscheinen, jedoch bewegt sich der Spieler meist nur vor- oder rückwärts und so die eigentlich falsche Darstellung nur bei seitlichen Schritten unangenehm auffällt. 
Die Vereinfachungen der Gleichungen von Mutter Natur sind in den Programmen normalerweise als 'Hacks' und 'Kludges' implementiert. 
Desweiteren wird mit Lichteffekten wie Dunkelheit oder Nebel die Reichweite des Sehstrahls begrenzt, was zum einen eine Menge Stimmung erzeugt und zum anderen das Programm nochmals schneller macht. 
Da unsere künstliche Welt aber immer noch etwas plastisch wirkt, werden auf die Wände sogenannte Texturen aufgebracht.
[Lit: http://www.home.ch/~spaw2462/zentralarchiv/computergrafik/]

6)
Texturkoordinaten
Textur: Um die Oberflächen von 3D-Körpern zu gestalten, tapeziert man sie mit Texturen - herkömmlichen, zweidimensionalen Bilddateien.

Die Texturkoordinaten sind Koordinaten in diesem Bild, die auf Koordinaten auf dem 3D-Objekt abgebildet werden.

uv-Texturkoordinaten. Verformt man 3D-Körper, die mit einer Textur versehen sind, verschiebt sich das Texturbild. Spline-Flächen und speziell vorbereitete Polygon-Objekte besitzen dagegen Koordinatenlinien auf ihrer Oberfläche. Nutzt man sie zum Auftragen der Textur, verformt sich das Farbmuster, als ob es auf die Fläche gemalt wäre.
[Lit: http://www.home.ch/~spaw2462/zentralarchiv/computergrafik/]

7)
Texture Mapping
Pattern mapping: Farbwert des Pixels wird beim Rasterisieren aus Texturbild gelesen
Bump mapping: ermöglicht die Modellierung der Oberfläche bezüglich des Reflexionsverhaltens 
Displacement mapping: Modellierung von Höhenprofilen & Silhouetten
Reflectance mapping: Reflektanz eines Objekts wird vom Zentrum aus auf eine umgebende Fläche projiziert. 
Die Richtung des reflektierten Strahls bestimmt die (Polar-)koordinaten der Textur.
3D - Texturierung: Prozed. 3D-Generierungsfunktion F(x,y,z)
Die Kombination von TM-Verfahren ist möglich. 

[Lit: Thomas Jung, Fhtw Berlin, Vorlesung 3D-Modellierung und -Computergrafik]