Kurssin kuvituskuva 08978 - INFORMATICA GRAFICA (9 cfu) - PIRRONE ROBERTO (A.A. 2018/2019)
INGEGNERIA INFORMATICA
Il corso di Informatica Grafica fornisce agli studenti una conoscenza approfondita dei sistemi hardware, degli algoritmi, dei linguaggi e degli ambienti software per lo sviluppo di applicazioni grafiche complesse.

Il corso consente di acquisire 9 CFU e consta di una serie di lezioni ed esercitazioni teoriche, seminari su temi di ricerca, la costituzione di gruppi di lavoro per l’analisi di casi di studio su temi di computer grafica avanzata proposti dal docente e lo sviluppo di un’applicazione grafica complessa. Il risultato dell’attività dei gruppi di lavoro viene poi discusso coralmente in aula.

Il corso presenta i fondamenti matematici di computer grafica, legati principalmente all’algebra vettoriale, il calcolo matriciale, l’interpolazione bilineare di funzioni di due variabili, il calcolo efficiente dell’intersezione retta-piano, il formalismo delle coordinate omogenee.

Successivamente viene presentata la differenza tra il paradigma di grafica vettoriale e raster e si evidenzia come quest’ultimo abbia prevalso per la semplicità di implementazione e l’economicità. Viene presentata la pipeline grafica come flusso di lavoro in cui ogni stadio effettua una trasformazione di cambio di coordinate della scena sintetizzata, dal mondo ideale in cui la scena viene modellata alle coordinate discrete dello schermo su cui essa è proiettata. Viene anche introdotta l’implementazione hardware della pipeline di rendering nelle moderne Graphic Processing Unit (GPU).

Gli argomenti e gli algoritmi della computer grafica vengono successivamente presentati secondo la sequenza in cui essi vengono chiamati ad operare nella pipeline di rendering. Si affrontano i temi della modellazione geometrica e delle tecniche di estrazione di mesh poligonali dai diversi modelli geometrici. Particolare attenzione è posta alle curve e superfici parametriche. Successivamente si introducono le trasformazioni di modellazione e quelle proiettive in coordinate omogenee e si presentano le trasformazioni di visualizzazione. Si passa a presentare gli algoritmi di determinazione delle superfici visibili e di clipping. Vengono poi introdotti i modelli di illuminamento, il concetto ed i vari modelli di BRDF e gli algoritmi di shading e di texture mapping. Si passa alla descrizione degli algoritmi di tracciamento, riempimento e anti-aliasing per il disegno della scena sullo schermo.
Il corso continua affrontando gli algoritmi di illuminamento globale della scena, quali ray tracing e radiosity, i principi dell’animazione e il rendering di volumi.

Le esercitazioni teoriche si concentrano sulla libreria WebGL e il linguaggio di shading OpenGL ES per la realizzazione di applicazioni grafiche web based. Viene inoltre presentato il framework Unity 3D per lo sviluppo e distribuzione di applicazioni grafiche multipiattaforma e vengono dedicate alcune ore ad una breve introduzione alle librerie CUDA per la programmazione parallela su GPU.

Il corso si conclude con una sessione di apprendimento che sviene svolta in modalità "Flipped Classroom" o Insegnamento Capovolto. Gli allievi apprendono ed espongono alla classe alcuni temi rilevanti di Computer Graphics tramite lo sviluppo di alcuni di studio; i vari gruppi di lavoro, partendo dalle proprie conoscenze acquisite durante il corso, dovranno studiare autonomamente tali argomenti e presentarli alla classe insieme alle soluzioni algoritmiche adottate per lo sviluppo di un’applicazione grafica complessa proposta dal docente. Anche nel caso dello sviluppo del progetto grafico, la scelta delle soluzioni di sviluppo software saranno autonome a partire dalla conoscenza basilare della piattaforma di sviluppo utilizzata.

Il corso partecipa come corso pilota al progetto europeo IFlip http://projectiflip.eu/it/