Teaching will be in Italian language. Slides and other teaching material will be provided in English.
Course Content
The 3D computer graphics pipeline will be presented and analyzed, by focusing on the aspects of modeling, animation and rendering of a 3D scene. Practical examples will be given using OpenGL.
[1] Steven J. Gortler, “Foundations of 3D Computer Graphics,” The MIT Press, 2012
[2] John F. Hughes et al., “Computer Graphics, Principles and Practice,” Wiley and Sons, Third Edition, 2014
[3] Graham Sellers et al. “OpenGL SUPERBIBLE”, Addison Wesley, Seventh Edition, 2015
Learning Objectives
The goal of the course is that of providing the knowledge and ability to create 3D computer graphics scene of low / medium complexity by applying the basic techniques of the discipline.
Prerequisites
Knowledge of the C/C++, Python, Javascript programming languages and of the Matlab environment.
Knowledge acquired in the first level Laurea degree in Infomatics Engineering.
Teaching Methods
Most of the course material will be presented using slides.
Laboratory programming in C++, Javascript with OpenGL API, Matlab and Python.
Further information
Additional information can be found at the following link:
http://www.micc.unifi.it/berretti/cga3d.html
Type of Assessment
The evaluation is based on an oral examination on the course arguments. The oral examination aims to evaluate the comprehension of the Computer Graphics techniques presented during the course and the capacity to apply them to concrete cases. In addition, the oral examination aims to verify the capacity of oral presentation, of analysis and synthesis of the candidate.
A programming assignment on computer graphics topics can be developed in the laboratory on Computer graphics. The assignment can be prepared in group of one up to two students. The assignment aims to evaluate the comprehension of main techniques and methods of Computer Graphics and processing of 3D data presented during the course. The capacity to pass from the theory to a practical idea to be realized is also evaluated.
Course program
1. Computer graphics
In the first part of the course, the computer graphics pipeline will be presented and analyzed, by focusing on the aspects of modeling, animation and rendering of a 3D scene. Some hints of the 2D case will be also given. Practical examples on the different subjects will be given using OpenGL. The same programming frameworks will be used for experimental activities (laboratory work and assignments).
Modeling
Essential mathematics and the geometry of 2D-space and 3D-space
- Curves and surfaces: Bézier curves and splines
A simple way to describe shape in 2D and 3D
- “Meshes” in 2D: polylines
- Meshes in 3D: manifold and non-manifold meshes, basic mesh operations
Curve Properties & Conversion, Surface Representations
Coordinates and Transformations: Homogeneous coordinates, Perspective
Hierarchical models: Hierarchical grouping of objects (scene graph), Hierarchical Modeling in OpenGL
Animation
Articulated models: Joints and bones, skeleton hierarchy, forward kinematics, inverse kinematics
Color: Spectra, Cones and spectral response, Color blindness and metamers, Color matching, Color spaces
Character Animation: Animate simple “skeleton”, Attach “skin” to skeleton
Basics of Computer Animation: Keyframing, Procedural, Physically-based
Animation Controls
Character Animation using skinning/enveloping
Collision detection and response: Point-object and object-object detection, Only point-object response
Rendering
Ray Casting
Rasterization
Ray Tracing: Shade (interaction of light and material), Secondary rays (shadows, reflection, refraction)
Textures and Shading
Texture Mapping & Shaders: Sampling & Antialiasing, Shadows, Global illumination
OpenGL
Introduction to the Open Graphics Library: Industry standard graphics library used to produce real-time 2D and 3D graphics