Obiettivi formativi
L’obiettivo del corso è fornire allo studente competenze teoriche e
applicative nell'ambito della grafica tridimensionale e in particolare:
- Fondamenti di grafica 3D
- Algoritmi fondamentali della grafica 3D
- Fondamenti di modellazione geometrica 3D
Capacità di applicare conoscenza e comprensione:
- Analizzare e descrivere l'architettura di un sistema grafico
- Progettare e realizzare applicazioni grafiche in ambiente OpenGL
- Calcolo matriciale in C++
Prerequisiti
Sono richieste conoscenze di informatica e matematica di base. Sono richieste conoscenze di programmazione nei linguaggi C/C++.
Contenuti dell'insegnamento
E' un corso di introduzione alla Computer Graphics.
Descrive metodi ed algoritmi per la programmazione e la visualizzazione
di entità grafiche 3D.
Programma esteso
1) Lezioni in aula (20 ore):
1.1) Introduzione (4 ore).
Definizioni, strumenti, applicazioni.
Hardware grafico.
Architettura di un sistema grafico.
Ripasso di nozioni di matematica.
Calcolo vettoriale e matriciale.
Geometria Cartesiana nel piano e nello spazio.
Modellazione geometrica 3D. Modellazione wireframe, modellazione solida (B-rep, CSG, decomposizione spaziale, sweeping).
1.2) Trasformazioni geometriche (6 ore).
Trasformazioni geometriche 2D e 3D. Trasformazioni composte.
Trasformazioni di vista.
Proiezioni parallele. Proiezioni prospettiche.
Trasformazioni windows-to-viewport.
1.3) Algoritmi pipeline grafica (4 ore).
Clipping, scan conversion, antialiasing, backface culling, rimozione di parti nascoste.
1.4) Realismo visivo (4 ore).
Modelli di illuminazione locali e globali.
Modello di illuminazione locale di Phong.
Ray tracing, radiosity.
Algoritmi di shading.
Texture mapping e bump mapping.
1.5) Curve parametriche (2 ore):
Curve polinomiali, cubiche, spline, di Bezier, e loro proprietà.
2) Esercitazioni di laboratorio su programmazione OpenGL (28 ore)
2.1). Introduzione (4 ore).
Introduzione a OpenGL.
Introduzione a GLFW (gestione delle finestre e degli eventi).
2.2) Linguaggio GLSL (4 ore).
Introduzione alla pipeline grafica e agli shader grafici (OpenGL Graphics Language).
2.3) Matrici di trasformazione (2 ore).
Introduzione a GLM (OpenGL Mathematics).
Trasformazioni nella pipeline grafica.
2.4) Costruzione della scena (6 ore).
Costruzione di solidi geometrici.
Composizione di trasformazioni.
Il grafo di scena
2.5) Illuminazione (4 ore).
Calcolo delle normali.
Modello di Phong e Phong shading.
Luci multiple, spotlight, luci colorate.
2.6) Texture e caricamento di modelli 3D (4 ore).
Caricamento di texture tramite libreria STB.
Texture mapping.
Introduzione ad Assimp (Open Asset Import Library)
2.7) Esercitazioni riassuntive (4 ore)
Bibliografia
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, disponibile 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
Metodi didattici
Lezioni in aula (20 ore).
Esercitazioni di laboratorio su programmazione OpenGL (28 ore).
Il materiale delle lezioni è presente sulla piattaforma Elly.
Per accedere al materiale è necessaria l’iscrizione al corso online.
Modalità verifica apprendimento
Non sono previste prove in itinere.
1) Prova scritta di laboratorio basata su programmazione C/C++ OpenGL.
La prova di laboratorio consiste nello sviluppo di una applicazione grafica
sugli argomenti delle esercitazioni di laboratorio.
Durata della prova: 4 ore.
Incidenza della prova sulla votazione finale: 50%
2) Prova orale sui contenuti delle lezioni in aula.
Incidenza della prova sulla votazione finale: 50%
Altre informazioni
- - -
Obiettivi agenda 2030 per lo sviluppo sostenibile
- - -