Learning objectives
The aim of the course is to provide students with theoretical and applicative skills in the context of three-dimensional graphics and in particular:
- Fundamentals of 3D graphics
- Fundamental algorithms of 3D graphics
- Fundamentals of 3D geometric modeling
Applying knowledge and understanding:
- Analyze and describe the architecture of a graphics system
- Design and development of graphical applications in OpenGL environment
- Linear algebra in C++
Prerequisites
Basic math knowledge is recommended.
Knowledge of the C++ programming language is recommended.
Course unit content
This course introduces the fundamental concepts in 3D Computer Graphics.
Full programme
1) Classroom lectures (20 hours):
1.1) Introduction (4 hours).
Definitions, tools, applications.
Graphics hardware.
Architecture of a graphic system.
Review of mathematics notions.
Vector and matrix calculus.
Cartesian geometry in the plane and in space.
3D geometric modeling. Wireframe modeling, solid modeling (B-rep, CSG, spatial decomposition, sweeping).
1.2) Geometric transformations (6 hours).
2D and 3D geometric transformations. Compound transformations.
View transformations.
Parallel projections. Perspective projections.
Windows-to-viewport transformations.
1.3) Graphic pipeline algorithms (4 hours).
Clipping, scan conversion, antialiasing, backface culling, hidden surface removal.
1.4) Visual Realism (4 hours).
Local and global lighting models.
Phong local lighting model.
Ray tracing, radiosity.
Shading algorithms.
Texture mapping and bump mapping.
1.5) Parametric curves (2 hours):
polynomial, cubic, spline, Bezier, and their properties.
2) Laboratory lectures on OpenGL programming (28 hours)
2.1) Introduction (4 hours).
Introduction to OpenGL.
Introduction to GLFW (window and event management)
2.2) GLSL language (4 hours).
Introduction to the graphics pipeline and graphics shaders
(OpenGL Graphics Language).
2.3) Transformation matrices (2 hours).
Introduction to GLM (OpenGL Mathematics).
Transformations in the graphics pipeline.
2.4) Construction of the scene (4 hours).
Construction of geometric solids.
Composition of transformations.
The scene graph.
2.5) Lighting (4 hours).
Calculation of normals.
Phong model and Phong shading.
Multiple lights, spotlights, colored lights.
2.6) Texture and loading of 3D models (6 hours):
Texture loading and texture mappint.
Introduction to Assimp (Open Asset Import Library).
Introduction to 3D modelling in Blender.
2.7) Summary exercises (4 hours)
Bibliography
1) Peter Shirley, Michael Gleicher, Fundamentals of Computer Graphics, Third Edition, A K Peters/CRC Press.
2) R. Scateni, P.Cignoni, C.Montani, R.Scopigno, Fondamenti di grafica
tridimensionale interattiva, McGraw-Hill.
3) J. De Vries, Learn OpenGL, available online: https://learnopengl.com
4) J. Kessenich, G. Sellers, D. Shreiner, OpenGL Programming Guide, Addison-Wesley
5) G. Sellers, R. S. Wright Jr., N. Haemel, The OpenGL SuperBible, Addison-Wesley
Teaching methods
Classroom lectures (20 hours).
Laboratory lectures about OpenGL programming (28 hours).
The course material is available through the Elly portal.
Assessment methods and criteria
1) Laboratory exam (OpenGL exercise).
The laboratory exam involves the development of a graphics application on the topics of the laboratory classes.
Duration: 4 hours.
Determines 50% of the final grade.
2) Oral exam.
Determines 50% of the final grade.
There will be a midterm test. A passing grade in the midterm test exempts from the oral exam.
Other information
2030 agenda goals for sustainable development