Le lezioni saranno tenute in Italiano. Le slide ed altro materiale del corso saranno forniti in lingua Inglese.
Contenuto del corso
Il corso introduce i fondamenti della Grafica Computazionale 3D.
In particolare, verranno illustrate ed analizzate ile tecniche per la modellazione ed il rendering di una scena 3D. Esempi pratici saranno presentati utilizzando 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
Obiettivi Formativi
L'obiettivo del corso è quello di fornire le conoscenze e competenze per realizzare scene di computer grafica 3D di complessità media applicando le tecniche base della disciplina.
Prerequisiti
Conoscenza dei linguaggi di programmazione C/C++, Python, Javascript .
Conoscenze acquisite nei corsi della laurea triennale in Ingegneria Informatica.
Metodi Didattici
Lezione frontale in aula con uso di slide ed alla lavagna. Esercitazioni (programmazione C++ e Javascript con API OpenGL, e Python)
Altre Informazioni
Informazioni aggiuntive possono essere trovate al link seguente:
http://www.micc.unifi.it/berretti/cga3d.html
Modalità di verifica apprendimento
La valutazione è basata su un esame orale sugli 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.
Un elaborato di programmazione su argomenti di computer graphics da eseguire individualmente o in gruppo può essere svolto nel laboratorio di Computer Graphics. L'elaborato ha l'obiettivo di valutare la comprensione delle tecniche e dei metodi principali di Computer Graphics introdotti durante il corso e la capacità di tradurre gli stessi in una idea e realizzazione progettuale.
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. 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