Introduction to Computer Graphics: Using OpenGL and Java

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

A basic understanding of the key techniques in computer graphics can open the door to this exciting field and its many applications, including for video games and for augmented and virtual reality.

This easy-to-follow textbook and reference introduces the fundamental concepts of computer graphics, integrating both technical background and theory with practical examples and applications throughout. Thoroughly revised and updated, this new edition continues to present a user-friendly approach to creating images and animations, complementing the expanded coverage of topics with usage of example programs and exercises.

Topics and features:

  • Contains pedagogical tools, including easy-to-understand example programs and end-of-chapter exercises
  • Presents a practical guide to basic computer graphics programming using the Open Graphics Library (OpenGL) and the widely used Java programming language
  • Includes new and expanded content on the OpenGL graphics pipelines, shader programming, drawing basic objects using the OpenGL, three-dimensional modelling, quaternions, rasterisation, antialiasing and more
  • Supplies complete Java project examples as supplementary material

This reader-friendly textbook is an essential tool for second-year undergraduate students and above, providing clear and concise explanations of the basic concepts of computer graphics. It will enable readers to immediately implement these concepts using the OpenGL and Java (with only elementary knowledge of the programming language).

Prof. Dr.-Ing. Karsten Lehn works at the Faculty of Information Technology at Fachhochschule Dortmund, University of Applied Sciences and Arts. Prof. Dr. Merijam Gotzes is teaching at Hamm-Lippstadt University of Applied Sciences. Prof. Dr. Frank Klawonn is head of the Data Analysis and Pattern Recognition Laboratory at the Ostfalia University of Applied Sciences and heads the Biostatistics Research Group at the Helmholtz Centre for Infection Research.

Author(s): Karsten Lehn, Merijam Gotzes, Frank Klawonn
Series: Undergraduate Topics in Computer Science
Edition: 3
Publisher: Springer
Year: 2023

Language: English
Pages: 482
City: Cham
Tags: Computer Graphics; Modeling Three-Dimensional Objects; Visible Surface Representation; Fragment Representation; Illumination; Pixel Representation; OpenGL; Java

Preface to the Third Edition
Acknowledgement
Contents
1 Introduction
1.1 Application Fields
1.2 From the Real Scene to the Computer Generated Image
1.3 Rendering and Rendering Pipeline
1.4 Objectives of This Book and Recommended Reading Order for the Sections
1.5 Structure of This Book
1.6 Exercises
References
2 The Open Graphics Library (OpenGL)
2.1 Graphics Programming Interfaces
2.2 General About the OpenGL
2.3 The OpenGL and Java
2.4 Profiles
2.5 OpenGL Graphics Pipelines
2.5.1 Vertex Processing
2.5.2 Vertex Post-Processing
2.5.3 Primitive Assembly
2.5.4 Rasterisation
2.5.5 Fragment Processing
2.5.6 Per-Fragment Operations
2.5.7 Framebuffer
2.6 Shaders
2.7 OpenGL Programming with JOGL
2.8 Example of a JOGL Program Without Shaders
2.9 Programming Shaders
2.9.1 Data Flow in the Programmable Pipeline
2.9.2 OpenGL and GLSL Versions
2.9.3 OpenGL Extensions
2.9.4 Functions of the GLSL
2.9.5 Building a GLSL Shader Program
2.10 Example of a JOGL Program Using GLSL Shaders
2.11 Efficiency of Different Drawing Methods
2.12 Exercises
Exercises
References
3 Basic Geometric Objects
3.1 Surface Modelling
3.2 Basic Geometric Objects in the OpenGL
3.2.1 Points
3.2.2 Lines
3.2.3 Triangles
3.2.4 Polygon Orientation and Filling
3.2.5 Polygons
3.2.6 Quadrilaterals
3.3 OpenGL Drawing Commands
3.3.1 Indexed Draw
3.3.2 Triangle Strips
3.3.3 Primitive Restart
3.3.4 Base Vertex and Instanced Rendering
3.3.5 Indirect Draw
3.3.6 More Drawing Commands and Example Project
3.4 Exercises
References
4 Modelling Three-Dimensional Objects
4.1 From the Real World to the Model
4.2 Three-Dimensional Objects and Their Surfaces
4.3 Modelling Techniques
4.4 Modelling the Surface of a Cube in the OpenGL
4.5 Surfaces as Functions in Two Variables
4.5.1 Representation of Landscapes
4.6 Parametric Curves and Freeform Surfaces
4.6.1 Parametric Curves
4.6.2 Efficient Computation of Polynomials
4.6.3 Freeform Surfaces
4.7 Normal Vectors for Surfaces
4.8 Exercises
References
5 Geometry Processing
5.1 Geometric Transformations in 2D
5.1.1 Homogeneous Coordinates
5.1.2 Applications of Transformations
5.1.3 Animation and Movements Using Transformations
5.1.4 Interpolators for Continuous Changes
5.2 Geometrical Transformations in 3D
5.2.1 Translations
5.2.2 Scalings
5.2.3 Rotations Around x-, y- and z-Axis
5.2.4 Calculation of a Transformation Matrix with a Linear System of Equations
5.3 Switch Between Two Coordinate Systems
5.4 Scene Graphs
5.4.1 Modelling
5.4.2 Animation and Movement
5.4.3 Matrix Stacks and Their Application in the OpenGL
5.5 Arbitrary Rotations in 3D: Euler Angles, Gimbal Lock, and Quaternions
5.5.1 Rotation Around Any Axis
5.6 Eulerian Angles and Gimbal Lock
5.6.1 Quaternions
5.7 Clipping Volume
5.8 Orthogonal and Perspective Projections
5.9 Perspective Projection and Clipping Volume in the OpenGL
5.10 Viewing Pipeline: Coordinate System Change of the Graphical Pipeline
5.11 Transformations of the Normal Vectors
5.12 Transformations of the Viewing Pipeline in the OpenGL
5.13 Exercises
References
6 Greyscale and Colour Representation
6.1 Greyscale Representation and Intensities
6.2 Colour Models and Colour Spaces
6.3 Colours in the OpenGL
6.4 Colour Interpolation
6.5 Exercises
References
7 Rasterisation
7.1 Vector Graphics and Raster Graphics
7.2 Rasterisation in the Graphics Pipeline and Fragments
7.3 Rasterisation of Lines
7.3.1 Lines and Raster Graphics
7.3.2 Midpoint Algorithm for Lines According to Bresenham
7.3.3 Structural Algorithm for Lines According to Brons
7.3.4 Midpoint Algorithm for Circles
7.3.5 Drawing Arbitrary Curves
7.4 Parameters for Drawing Lines
7.4.1 Fragment Density and Line Style
7.4.2 Line Styles in the OpenGL
7.4.3 Drawing Thick Lines
7.4.4 Line Thickness in the OpenGL
7.5 Rasterisation and Filling of Areas
7.5.1 Odd Parity Rule
7.5.2 Scan Line Technique
7.5.3 Polygon Rasterisation Algorithm According to Pineda
7.5.4 Interpolation of Associated Data
7.5.5 Rasterising and Filling Polygons in the OpenGL
7.6 Aliasing Effect and Antialiasing
7.6.1 Examples of the Aliasing Effect
7.6.2 Antialiasing
7.6.3 Pre-Filtering
7.6.4 Pre-Filtering in the OpenGL
7.6.5 Post-Filtering
7.6.6 Post-Filtering Algorithms
7.6.7 Sample Arrangements for Post-Filtering
7.6.8 Post-Filtering in the OpenGL
7.7 Exercises
References
8 Visibility Considerations
8.1 Line Clipping in 2D
8.1.1 Cohen–Sutherland Clipping Algorithmus
8.1.2 Cyrus–Beck Clipping Algorithmus
8.2 Image-Space and Object-Space Methods
8.2.1 Backface Culling
8.2.2 Partitioning Methods
8.2.3 The Depth Buffer Algorithm
8.2.4 Scan-Line Algorithms
8.2.5 Priority Algorithms
8.3 Exercises
References
9 Lighting Models
9.1 Light Sources of Local Illumination
9.2 Reflections by Phong
9.3 The Lighting Model According to Phong in the OpenGL
9.4 Shading
9.5 Shading in the OpenGL
9.6 Shadows
9.7 Opacity and Transparency
9.8 Radiosity Model
9.9 Raycasting and Raytracing
9.10 Exercises
References
10 Textures
10.1 Texturing Process
10.1.1 Mipmap and Level of Detail: Variety in Miniature
10.1.2 Applications of Textures: Approximation of Light, Reflection, Shadow, Opacity and Geometry
10.2 Textures in the OpenGL
10.3 Exercises
References
11 Special Effects and Virtual Reality
11.1 Factors for Good Virtual Reality Applications
11.2 Fog
11.3 Fog in the OpenGL
11.4 Particle Systems
11.5 A Particle System in the OpenGL
11.6 Dynamic Surfaces
11.7 Interaction and Object Selection
11.8 Object Selection in the OpenGL
11.9 Collision Detection
11.10 Collision Detection in the OpenGL
11.11 Auralisation of Acoustic Scenes
11.11.1 Acoustic Scenes
11.11.2 Localisability
11.11.3 Simulation
11.11.4 Reproduction Systems
11.11.5 Ambisonics
11.11.6 Interfaces and Standards
11.12 Spatial Vision and Stereoscopy
11.12.1 Perceptual Aspects of Spatial Vision
11.12.2 Stereoscopy Output Techniques
11.12.3 Stereoscopic Projections
11.12.4 Stereoscopy in the OpenGL
11.13 Exercises
References
Appendix A Web References
Appendix Index