1st Edition

Introduction to Computer Graphics
A Practical Learning Approach




ISBN 9781439852798
Published October 17, 2014 by Chapman and Hall/CRC
422 Pages 204 B/W Illustrations

USD $105.00

Prices & shipping based on shipping country


Preview

Book Description

Teach Your Students How to Create a Graphics Application

Introduction to Computer Graphics: A Practical Learning Approach guides students in developing their own interactive graphics application. The authors show step by step how to implement computer graphics concepts and theory using the EnvyMyCar (NVMC) framework as a consistent example throughout the text. They use the WebGL graphics API to develop NVMC, a simple, interactive car racing game.

Each chapter focuses on a particular computer graphics aspect, such as 3D modeling and lighting. The authors help students understand how to handle 3D geometric transformations, texturing, complex lighting effects, and more. This practical approach leads students to draw the elements and effects needed to ultimately create a visually pleasing car racing game. The code is available at www.envymycarbook.com

 

  • Puts computer graphics theory into practice by developing an interactive video game
  • Enables students to experiment with the concepts in a practical setting
  • Uses WebGL for code examples
  • Requires knowledge of general programming and basic notions of HTML and JavaScript
  • Provides the software and other materials on the book’s website

Software development does not require installation of IDEs or libraries, only a text editor.

Table of Contents

What Computer Graphics Is
Applications Domains and Areas of Computer Graphics
Color and Images
Algorithms to Create a Raster Image from a 3D Scene

The First Steps
The Application Programming Interface
The WebGL Rasterization-Based Pipeline
Programming the Rendering Pipeline: Your First Rendering
WebGL Supporting Libraries
Meet NVMC

How a 3D Model Is Represented
Polygonal meshes
Implicit surfaces
Parametric surfaces
Voxels
Constructive solid geometry (CSG)
Subdivision surfaces
Data Structures for Polygon Meshes
The First Code: Making and Showing Simple Primitives
Self-exercises

Geometric Transformations
Geometric entities
Basic geometric transformations
Affine transformations
Frames
Rotations in Three Dimensions
Viewing transformations
Transformations in the Pipeline
Upgrade your client: Our First 3D Client
The Code
Handling the Transformations Matrices with a Matrix Stack
Manipulating the View and the Objects
Upgrade your client: Create the Observer Camera
Self-exercises

Turning Vertices into Pixels
Rasterization
Hidden Surface Removal
From Fragments to Pixels
Clipping
Culling

Lighting and Shading
Light and Matter Interaction
Radiometry in a Nutshell
Reectance and BRDF
The Rendering Equation
Evaluate the Rendering Equation
Computing the Surface Normal
Light Source Types
Phong Illumination Model
Shading Techniques
Advanced Reection Models
Self-Exercises

Texturing
Introduction: Do We Need Texture Mapping?
Basic Concepts
Texture Filtering: from per-Fragment Texture Coordinates to per-Fragment Color
Perspective Correct Interpolation: From per-Vertex to per-Fragment Texture Coordinates
Upgrade Your Client: Add Textures to the Terrain, Street and Building
Upgrade Your Client: Add the Rear Mirror
Texture Coordinates Generation and Environment Mapping
Texture Mapping for Adding Detail to Geometry
Notes on Mesh Parametrization
3D Textures and Their Use
Self-Exercises

Shadows
The Shadow Phenomenon
Shadow Mapping
Upgrade Your Client: Add Shadows
Shadow Mapping Artifacts and Limitations
Shadow Volumes
Self-Exercises

Image-Based Impostors
Sprites
Billboarding
Ray-Traced Impostors
Self-Exercises

Advanced Techniques
Image Processing
Ambient Occlusion
Deferred Shading
Particle Systems
Self-Exercises

Global Illumination
Ray Tracing
Multi-Pass Algorithms

Appendix A: NVMC Class
Appendix B: Properties of Vector Products

Bibliography

Index

...
View More

Reviews

"The book is presented in a very accessible fashion. The authors give many examples illustrating the notations and problems considered, making the learning easier. Every chapter ends with exercises, both theoretical and programming. The book is suitable for upper-level computer science/math/physics undergraduate students with at least basic programming skills and at least elementary understanding of linear algebra and calculus."
—Krzystof Gdawiec, in Zentralblatt MATH 1308, 2015