Computergrafik
Vorlesung gehalten im SS 2008
[Version vom 30. Juni 2008]
Oliver Vornberger
Institut für Informatik
Universität Osnabrück
PDF-Version
Literatur
Danksagung
Inhalt
Einführung
Motivation
Definition
Anwendungen
Kurze Geschichte der Computergrafik
GUI-Programmierung
Der Window-Manager
Swing
Swing-Übersicht
Swing-Beispiel
2D-Grundlagen
Koordinatensysteme
Punkt
Linie
Parametrisierte Geradengleichung
Geradengleichung als Funktion
Bresenham-Algorithmus
Antialiasing
Polygon
Konvexität
Schwerpunkt
Kreis
Trigonometrische Funktionen
Bresenham-Algorithmus
Ellipse
2D-Füllen
Universelle Füll-Verfahren
Scan-Line-Verfahren für Polygone
Dithering
Punkt in Polygon
2D-Clipping
Clipping von Linien
Clipping von Polygonen
Java-Applet zu 2D-Operationen
2D-Transformationen
Translation
Skalierung
Rotation
Matrixdarstellung
Homogene Koordinaten
Allgemeine Transformationen
Raster-Transformationen
Java-Applet zu 2D-Transformationen
Kurven
Algebraischer Ansatz
Kubische Splines
Bézier-Kurven
B-Splines
Affine Abbildungen und Invarianz
NURBS
Java-Applet zu Splines
Farbe
Physik
Dominante Wellenlänge
Grundfarben
RGB-Modell (Rot, Grün, Blau), (additiv)
CMY-Modell (Cyan, Magenta, Yellow), (subtraktiv)
YUV-Modell
YIQ-Modell
HSV-Modell
CNS
Color Data Base
Java-Applet zu Farbe
Pixeldateien
Auflösung
GIF
Erzeugung einer bildbezogenen Farbtabelle
LZW-Komprimierung (Lempel/Ziv/Welch, 1984)
Kompression nach JPEG
TIF
PBM, PGM, PNM und PPM
Photo-CD
2D-Grafik im Web
Macromedia Flash
SVG
Fraktale
Selbstähnlichkeit
Koch'sche Schneeflocke
Fraktale Dimension
Lindenmayer-Systeme
Baumstrukturen
Mandelbrot-Menge
Julia-Menge
Java-Applet zu Fraktalen
Iterierte Funktionensysteme
Java-Applet zu Iterierten Funktionensystemen
Mathematische Grundlagen
3D-Koordinatensystem
Länge und Kreuzprodukt
Anwendung des Kreuzprodukts
Skalarprodukt
Anwendungen des Skalarprodukts:
Matrixinversion
Wechsel eines Koordinatensystems
3D-Transformationen
Translation
Skalierung
Rotation
Transformation der Normalenvektoren
Projektion
Bildebene
Perspektivische Projektion
Parallelprojektion
Normalprojektionen
Schiefe Projektionen
Viewing Pipeline
Die synthetische Kamera
Viewing Pipeline
Modeling-Transformationen
View Orientation
View Volume
View Mapping
Device Mapping
Zusammenfassung
Clipping
Clipping im WC
Clipping im NPC
Vergleich der beiden Vorgehensweisen
Umgebungsclipping
3D-Repräsentation
Elementarobjekte
Drahtmodell
Flächenmodell
Flächenmodell mit Halbkantendarstellung
Polyeder
Gekrümmte Flächen
Zylinder
Kugel
Bezier-Flächen
NURBS-Flächen
CSG (constructive solid geometry)
Octree
Java-Applet zur Wire-Frame-Projektion
Culling
Back-Face Removal/Culling
Hidden-Surface Removal
z-Buffer-Algorithmus
Span-Buffer
Binary Space Partitioning
Beleuchtung
Bestandteile der Beleuchtung
Lichtquellen
Reflexionseigenschaften
Oberflächeneigenschaften
Materialeigenschaften
Schattierungsalgorithmen
Flat-Shading
Gouraud-Shading
Phong-Shading
Schatten
Texturing
Texture Mapping
Mip Mapping
Light, Gloss und Shadow Mapping
Alpha Mapping
Environment oder Reflection Mapping
Bump Mapping
Multitexturing
Displacement Mapping
Java-Applet zum Texture-Mapping
Java-Applet mit texturiertem Ikosaeder
VRML
Geschichte
Einbettung
Geometrie
Polygone
Wiederverwendung
Multimedia
Interaktion
Animation
Scripts
Multiuser
VRML-Beispiele
X3D
OpenGL
Grundlagen
Syntax
Programmbeispiele
Screenshots
Hardwarebeschleunigung
Radiosity
Globale Beleuchtung
Physikalische Ausgangslage
Die Radiosity-Gleichung (Beleuchtungsgleichung)
Berechnung der Formfaktoren
Interpolation der Pixelfarben
Schrittweise Verfeinerung
Screenshots
Ray Tracing
Grundlagen
Ermittlung sichtbarer Flächen durch Ray Tracing
Berechnung von Schnittpunkten
Effizienzsteigerung zur Ermittlung sichtbarer Flächen
Rekursives Ray Tracing
Public Domain Ray Tracer Povray
Animation
Key Frame Animation
Forward Kinematics
Inverse Kinematics
Particle Systems
Verhaltensanimation
Maxon Cinema4D
3D im Web
Google SketchUp
Google Earth