ч 3D COMPUTER GRAPHICS S E C O N D E D I T I O N A L A N W A T T Instituto de Matemätica Рига e Aplicada Rio de Janeiro, Brasil and University of Sheffield, England A D D I S О N - W E S L E Y Publishing Company Wokingham, England Reading, Massachusetts Menlo Park, California New York Don Mills, Ontario Amsterdam Bonn Sydney Singapore Tokyo Madrid San Juan Milan Paris Mexico City Seoul Taipei
Contents Preface vii 1 Three-dimensional Geometry in Computer Graphics 1 1.1 Manipulating three-dimensional structures 1 1.2 Affine transformations 2 1.3 Transformations for changing coordinate systems 10 1.4 Structure-deforming transformations 11 1.5 Vectors in computer graphics 13 Projects, notes and suggestions 19 2 Representation of Objects 23 2.1 Representation and modelling of geometric objects 23 2.2 Polygonal representation 24 2.3 Bicubic parametric patch nets 30 2.4 Constructive solid geometry 35 2.5 Space subdivision techniques 38 2.6 Rendering strategies 45 Projects, notes and suggestions 53 3 Viewing Systems 57 3.1 Introduction 57 3.2 Viewing system I 59 3.3 Viewing system II 61 3.4 Viewing system III 63 3.5 View plane projection for viewing systems I III 65 3.6 Viewing system IV 70 3.7 View plane projection for viewing system IV 71 3.8 Clipping for viewing system IV 74 3.9 Viewing system V (PHIGS) 75 3.10 Implementing viewing system V 83 Projects, notes and suggestions 85 xiii
4 Reflection and Illumination Models 89 4.1 Introduction 89 4.2 Theoretical considerations in light reflection 91 4.3 The Phong reflection model 96 4.4 Geometric considerations 100 4.5 Colour 101 4.6 Summary of Phong model 102 4.7 The 20 spheres - an example 102 4.8 Using look-up tables with reflection models 106 4.9 Empirical transparency 108 4.10 The Cook and Torrance model 109 4.11 Illumination source models 122 Projects, notes and suggestions 125 5 Rendering Algorithms 127 5.1 Introduction 127 5.2 Culling and clipping 128 5.3 Incremental shading techniques 131 5.4 Rasterization 143 5.5 Hidden surface removal 149 Projects, notes and suggestions 158 6 Parametric Representation and Practice 163 6.1 Parametric representation of three-dimensional solids 163 6.2 Parametric representation of three-dimensional curves 166 6.3 B-spline curves 173 6.4 Biparametric cubic surfaces 186 6.5 Rendering parametric surfaces 197 6.6 Approximation to a surface patch using a polygon mesh 199 6.7 Extending the control: NURBS and ß-splines 206 6.8 Interpolation using B-splines 208 6.9 Modelling objects with bicubic parametric nets 210 Projects, notes and suggestions 221 7 Shadows and Textures 225 7.1 Introduction 225 7.2 Shadows: their function 225 7.3 Simple shadows on a ground plane 227 7.4 Shadow algorithms 229 7.5 Texture 237 7.6 Two-dimensional texture mapping 238 7.7 Three-dimensional texture domain techniques 246 7.8 Bump mapping 250 7.9 Anti-aliasing and texture mapping 253 7.10 Environment mapping 259 Projects, notes and suggestions 262
Contents xv 8 Ray Tracing 267 8.1 Introduction 267 8.2 Basic algorithm 268 8.3 A historical digression - the optics of the rainbow 270 8.4 Recursive implementation of ray tracing 272 8.5 Ray tracing geometry 278 8.6 Reflection-illumination model 287 8.7 Shadows 293 8.8 Distributed ray tracing 294 8.9 Ray tracing and anti-aliasing operations 297 8.10 Making ray tracing efficient 298 Projects, notes and suggestions 308 9 Volume Rendering 313 9.1 Introduction 313 9.2 Volume rendering algorithms 317 9.3 Case study 320 9.4 Parallel versus perspective projection 323 9.5 Lighting model 325 Projects, notes and suggestions 329 10 Radiosity 331 10.1 Introduction 331 10.2 Radiosity theory 332 10.3 Form factor determination 335 10.4 Increasing the accuracy of the solution 340 10.5 Reordering the solution for progressive refinement 342 10.6 Further development of the radiosity method: 347 hybrid radiosity and ray tracing Projects, notes and suggestions 350 11 Anti-aliasing 353 11.1 Introduction 353 11.2 Aliasing artefacts and Fourier theory 355 11.3 Supersampling or postfiltering 359 11.4 Prefiltering or area sampling techniques 362 11.5 A mathematical comparison 364 11.6 Stochastic sampling 365 Projects, notes and suggestions 368 12 Functionally Based Modelling Methods 371 12.1 Introduction 371 12.2 Particle systems 372 12.3 Fractal systems 372 12.4 Functions suitable for three-dimensional texture 377 Projects, notes and suggestions 380
13 13.1 13.2 13.3 13.4 13.5 14 14.1 14.2 14.3 14.4 Appendix A Appendix В Appendix С Appendix D References Index Three-dimensional Computer Animation Introduction Keyframing systems Explicit motion specification - curve editing Other approaches to three-dimensional computer animation Temporal anti-aliasing Projects, notes and suggestions Colour Spaces and Monitor Considerations Introduction Specifying a colour with three labels Colour spaces in computer graphics Monitor considerations Projects, notes and suggestion Viewing Transformation for a Simple Four-parameter Viewing System A Wireframe System An Implementation of a Renderer The Utah Teapot 383 383 386 388 393 400 402 409 409 411 413 429 434 437 441 471 479 483 491 Trademark notice Luxo is a trademark of Jac Jacobson Industries Kodak is a trademark of Eastman Kodak Company VAX is a trademark of Digital Equipment Corporation