Michael Bender Manfred Brill
Computergrafik
Ein anwendungsorientiertes Lehrbuch
HANSER
Inhaltsverzeichnis
Vorwort. . . XI
Einleitung 1 1.1 Die Entwicklung der Computergrafik 1 1.2 Computergrafik-Architekturen 2 1.3 Wegweiser durch das Buch 7
Grundlegende Verfahren und Techniken 9 2.1 Transformationen und Koordinatensysteme 10 2.1.1 Punkte und Vektoren iO 2.1.2 Affine Kombinationen 11 2.1.3 Homogene Koordinaten und affine Abbildungen 14 2.1.4 Hierarchien und Szenengraphen 23 2.2 Projektionen und Kameramodelle 25 2.2.1 Parallelprojektion 26 2.2.2 Zentralprojektion 31 2.2.3 Die virtuelle Kamera 36 2.3 Clipping und Rasterung 39 2.3.1 Pixel und mehr 40 2.3.2 Die Window-Viewport-Transformation 42 2.3.3 Clipping und Culling 44 2.3.4 Rasterung und Scan Conversion 55 2.4 Sichtbarkeit 64 2.5 Zusammenfassung - Die Computergrafik-Pipeline 71
VI Inhaltsverzeichnis
2.6 Fallstudien 73 2.6.1 Affine Transformationen und Hierarchien in OpenGL 74 2.6.2 Hierarchien in VRML und AliasWavefront MAYA 80 2.6.3 Die virtuelle Kamera in OpenGL 82 2.6.4 Clipping in OpenGL 87
Geometrisches Modellieren mit Kurven und Flächen 91 3.1 Modellieren geometrischer Objekte 91 3.2 Parameterkurven 97 3.3 Polynomiale Kurven 104 3.4 Bezier-Kurven und -Kurvensegmente 109 3.4.1 Bernstein-Basis und Bernstein-Polynome HO 3.4.2 Der de Casteljau-Algorithmus 113 3.4.3 Eigenschaften von Bezier-Kurven(segmenten) 116 3.5 Interpolation und Splines 128 3.5.1 Das Interpolationsproblem 130 3.5.2 Parametrisierungen 130 3.5.3 Polynomiale Interpolation 132 3.5.4 Hermite-Interpolation 136 3.5.5 Spline-Kurven 137 3.5.6 Catmull-Rom-und Kochanek-Bartels-(TCB-)Splines 138 3.5.7 Gewöhnliche kubische Splines 141 3.6 B-Spline-Kurven 145 3.6.1 B-Spline-Basisfunktionen 147 3.6.2 Der de Boor-Algorithmus 155 3.6.3 Eigenschaften von B-Spline-Kurven 156 3.6.4 Rationale Darstellungen - NURBS 164 3.7 Parametrische Flächendarstellungen 167 3.7.1 Häufig verwendete Typen von Flächen 167 3.7.2 Tensorproduktflächen 170 3.7.3 Getrimmte Parameterflächen 175 3.8 Freiformvolumen und FFDs 176 3.9 Zusammenfassung 179 3.10 Fallstudien 179 3.10.1 Freiformgeometrie in OpenGL 180
Inhaltsverzeichnis VII
3.10.2 NURBS-GeometrieinAliasWavefrontMAYA 184 3.10.3 Interpolation mit Kurven 185
4 Polygonale Netze 191 4.1 Polygone und Polyeder 191 4.2 Speicherung von polygonalen Netzen 196 4.2.1 Ecken- und Kantenlisten 197 4.2.2 Die doppelt verkettete Kantenliste 198 4.2.3 Normalenvektoren ,• • • • 2 0 0
4.3 Dreiecksnetze 203 4.3.1 Datenstrukturen für Dreiecksnetze 204 4.3.2 Konstruktion von Triangle Strips . . 207 4.3.3 Konstruktion von Generalized Triangle Meshes 210 4.4 Modellieren mit Netzen 211 4.4.1 Tesselation von Objekten 212 4.4.2 Globale Deformationen 216 4.4.3 Extrusions- und Rotationskörper 220 4.4.4 Subdivision Modeling für polygonale Netze 223 4.5 Level-of-Detail und Vereinfachen von Netzen 233 4.5.1 Vereinfachen von polygonalen Netzen 234 4.5.2 Ausdünnen von Netzen 236 4.5.3 Progressive Meshes 237 4.6 Zusammenfassung 242 4.7 Fallstudien 243 4.7.1 Dreiecksnetze in OpenGL 243 4.7.2 Platonische und archimedische Körper 247 4.7.3 Netze und Subdivision in AliasWavefront MAYA 253
5 Bildsynthese 259 5.1 Wahrnehmung, Licht und Farbe 260 5.1.1 Licht und Farbe 260 5.1.2 Die menschliche Wahrnehmung 261 5.1.3 Farbmodelle 263 5.2 Beleuchtung, Reflexion, Transmission, 272 5.2.1 Die Strahlenoptik 273 5.2.2 Das Reflexionsgesetz 274
VIII Inhaltsverzeichnis
5.2.3 Das Brechungsgesetz 277 5.2.4 Weitere Einflussfaktoren 278 5.3 Beleuchtung und Schattierung 280 5.3.1 Das Lambert-Beleuchtungsmodell 281 5.3.2 Das Phong-Beleuchtungsmodell 282 5.3.3 Weiterführende Modellbetrachtungen 288 5.4 Schattierungsverfahren für polygonale Netze 290 5.4.1 Flat-Shading 291 5.4.2 Gouraud-Shading 292 5.4.3 Phong-Shading 293 5.5 Programmierbare Shader 294 5.6 Mapping-Techniken 299 5.6.1 Texture-Mapping 300 5.6.2 Weiterführende Verfahren 307 5.7 (Anti-)Aliasing 311 5.7.1 Ein wenig Signaltheorie 311 5.7.2 Signale und Computergrafik 320 5.8 Zusammenfassung 330 5.9 Fallstudien 331 5.9.1 Beleuchtung, Materialien und Schattierung in OpenGL . . . . 331 5.9.2 Cg Vertex-Shader in OpenGL 337 5.9.3 Mapping in OpenGL 342
6 Visualisierung 351 6.1 Wissenschaftliches Rechnen und Visualisierung 352 6.2 Datenstrukturen 354 6.3 Algorithmen für skalare Attribute 359 6.3.1 Farbtabellen 359 6.3.2 Höhenfelder, Konturlinien und Konturflächen 363 6.3.3 Der Marching Cubes-Algorithmus 365 6.4 Direkte Volumen-Visualisierung 372 6.4.1 Rekonstruktion 374 6.4.2 Transferfunktionen 377 6.4.3 Ein Beleuchtungsmodell für das Volume-Rendering 379 6.4.4 Compositing 382 6.4.5 Ray-Casting 385
Inhaltsverzeichnis IX
6.5 Visualisierung von Vektorfeldern 390 6.5.1 Modellieren von Vektorfeldern 394 6.5.2 Visualisierung von Trajektorien und Stromlinien 396 6.5.3 Line Integral Convolution 399 6.5.4 Visualisierung von Vektorfeldern mit Flächen 401 6.6 Zusammenfassung 405 6.7 Fallstudien 406 6.7.1 Die Visualisierungs-Pipeline in VTK 406 6.7.2 Volumen-Visualisierung mit der VTK 414 6.7.3 Visualisierung von Vektorfeldern mit VTK 419
7 Computer-Animation 425 7.1 Computer-Animation 426 7.2 Basistechnologien und Interpolation 430 7.2.1 Key Frames 430 7.2.2 Rotationen und Key Framing 436 7.2.3 Pfad-Animation 443 7.2.4 Animation von Deformationen 447 7.3 Animation hierarchischer Objekte 451 7.3.1 Beschreibung hierarchischer Objekte 452 7.3.2 Inverse Kinematik 457 7.4 Prozedurale Animationstechniken 464 7.4.1 Partikelsysteme 464 7.4.2 Schwärme und Boids 473 7.5 Zusammenfassung 478 7.6 Fallstudien 479 7.6.1 Key-Framing und Pfad-Animation in AliasWavefront MAYA 479 7.6.2 Expressions in AliasWavefront MAYA 483 7.6.3 Partikelsysteme in AliasWavefront MAYA 489
Literaturverzeichnis 495
Stichwortverzeichnis 503