Le lezioni saranno tenute in Italiano. Le slide ed altro materiale del corso saranno forniti in lingua Inglese.
Contenuto del corso
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
Obiettivi Formativi
L'obiettivo del corso è duplice:
- da un lato, verrà presentata una completa introduzione a concetti di base ed avanzati della grafica computazionale, presentando le più comuni tecniche per la modellazione 3D, l’animazione ed il rendering;
- dall’altro, saranno considerati gli aspetti specifici relativi alla acquisizione ed elaborazione di dati 3D reali acquisiti con scanner sia a bassa che ad alta-risoluzione, con l’obiettivo di presentare anche applicazioni pratiche, come riconoscimento e ricerca di oggetti 3D, biometria da dati 3D, etc. Sarà anche data una breve introduzione ai dispositivi di stampa 3D.
La teoria ed i concetti presentati nel corso saranno applicati utilizzando codice OpenGL e Matlab.
Prerequisiti
Conoscenza dei linguaggi di programmazione C/C++ e dell'ambiente Matlab.
Conoscenze acquisite nei corsi della laurea triennale in Ingegneria Informatica.
Metodi Didattici
Lezione frontale in aula con uso di slide ed alla lavagna. Esercitazioni in laboratorio (programmazione C++ e Javascript con API OpenGL e Matlab)
Altre Informazioni
Informazioni aggiuntive possono essere trovate al link seguente:
http://www.dsi.unifi.it/berretti/index.php?n=Teaching.ComputerGraphicsAnd3D
Modalità di verifica apprendimento
La valutazione è basata su:
- un elaborato di programmazione su argomenti di computer graphics o 3D da eseguire individualmente o in coppia. L'elaborato ha l'obiettivo di valutare la comprensione delle tecniche e dei metodi principali di Comptuer Graphics e di elaborazione di dati 3D introdotti durante il corso e la capacità di tradurre gli stessi in una idea e realizzazione progettuale.
- esame orale su un sottoinsieme degli argomenti del corso. La prova orale mira a valutare la comprensione delle tecniche di computer graphics presentate nel corso e la capacità di applicarle a casi concreti.
In alternativa è possibile sostenere la sola prova orale su tutti gli argomenti del corso.
Programma del corso
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