Teaching will be in Italian language. Slides and other teaching material will be provided in English.
Course Content
1. Computer graphics
The 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 and Matlab code.
2. 3D acquisition and processing
We will focus on the acquisition and processing of 3D real data. Algorithms and methods will be addressed for concrete applications, like 3D retrieval, 3D recognition, 3D biometrics, etc.
[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 objective of the course is twofold: On the one hand, a comprehensive introduction to basic and advanced computer graphics concepts will be provided by presenting the most common techniques for 3D modeling, animation and rendering; On the other, the specific aspects related to the acquisition and processing of real 3D data acquired with low- and high-resolution scanners will be addressed, also focusing on practical applications, like 3D retrieval, 3D recognition, 3D biometrics, etc. A short introduction to 3D printing will be also provided.
Theory and concepts presented throughout the course will be applied using OpenGL and Matlab coding.
Prerequisites
Knowledge of the C/C++, Python programming languages and of the Matlab environment.
Knowledge acquired in the first level Laurea degree in Infomatics Engineering.
Teaching Methods
Most of hte 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:
- A programming assignment on computer graphics or 3D topics. The assignment can be develop 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.
- Oral examination on a subpart of the course arguments. The oral examination aims to evalaute 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.
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 and Matlab code. 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
2. 3D acquisition and processing
In the second part of the course, we will focus on the acquisition and processing of 3D real data (both with low and high resolution). Algorithms and methods will be addressed for concrete applications, like 3D retrieval, 3D recognition, 3D biometrics, etc.
3D acquisition
High resolution 3D scanners technology, Low resolution 3D cameras (Kinect)
Algorithms on the mesh
Tangent, Normal, Curvature (mean, Gaussian, principal)
Geodesic computation on the mesh: Dijkstra, Fast marching algorithm
3D descriptors on the mesh: shape-index, shape-context, mesh-SIFT, mesh-HOG, mesh-LBP
Laplace-Beltrami operator
Applications
3D objects retrieval, 3D recognition (static and dynamic), 3D biometrics
Modern graphics hardware
Graphics Processing Unit (GPU) for real-time 3D computer graphics
GPU programming with CUDA