Salta ai contenuti. | Salta alla navigazione

Strumenti personali

GRAFICA COMPUTERIZZATA

Anno accademico e docente
Non hai trovato la Scheda dell'insegnamento riferita a un anno accademico precedente? Ecco come fare >>
English course description
Anno accademico
2017/2018
Docente
GIOVANNI DI DOMENICO
Crediti formativi
6
Periodo didattico
Primo Semestre
SSD
INF/01

Obiettivi formativi

Il corso ha come obiettivo l’insegnamento dei fondamenti di Grafica Computerizzata interattiva fornendo agli studenti le basi per affrontare in futuro argomenti avanzati di Grafica Computerizzata.

Le principali conoscenze acquisite saranno:

Struttura di un sistema grafico. Il concetto di pipeline grafica e le sue principali funzionalità.
Le primitive grafiche e i loro attributi.
I sistemi di coordinate tridimensionali, le trasformazioni un sistema di coordinate omogenee.
Le trasformazioni della camera, le trasformazioni di proiezione.
I modelli di illuminazione: concetti generali, il modello di Phong e di Blinn-Phong in dettaglio.
Gli aspetti principali dell’operazione di clipping, lo studio degli algoritmi di clipping di Cohen-Sutherland e Liang-Barsky. La rasterizzazione, l’algoritmo di Bresenham per le linee, la rasterizzazione di poligoni.
Il texture mapping: concetti di base, le tecniche di mapping e relativi filtri. Introduzione alle tecniche di multi-texturing, bump-mapping, reflection-mapping.
La programmazione degli shader. Il linguaggio GLSL.
I sistemi particellari e le loro applicazioni. Le tecniche di billboarding.
Le curve e le superfici: la loro rappresentazione, le curve e superfici interpolanti, le curve e le superfici di Hermite, di Bezier, B-spline. Le tecniche di rendering di curve e superfici.
Tecniche di rendering avanzato: il ray-tracing.
Le principali abilità (ossia la capacità di applicare le conoscenze acquisite) saranno:

Realizzazione di applicazioni di grafica computerizzata 3D che comprendono oggetti geometrici con le loro proprietà, le sorgenti luminose, una camera, eventuali immagini come texture da applicare agli oggetti geometrici.
Sviluppare vertex shader e fragment shader in linguaggio GLSL.

Prerequisiti

I prerequisiti del corso sono Matematica Discreta e Linguaggi di Programmazione e Laboratorio.

Contenuti del corso

Il corso prevede 48 ore di didattica suddivise tra lezioni ed esercitazioni.
Modelli e sistemi grafici [4 ore]
La pipeline grafica. La pipeline grafica di OpenGL. Le primitive grafiche: punti, linee, triangoli.
Programmazione Grafica [4 ore]
La pipeline fixed e programmabile. Il vertex processor, il fragment processor.
OpenGL Shading Language (GLSL). I tipi di variabile e i qualificatori “attribute”, “uniform”, “varying”.
Introduzione al linguaggio Javascript. I buffer object in WebGL. Le primitive base in WebGL.
Il tracciamento delle linee: l’algoritmo DDA e l’algoritmo di Bresenham.
Le trasformazioni in Grafica 3D [8 ore]
Gli oggetti di base: scalari, vettori e punti. I sistemi di riferimento e i frame. Le coordinate omogenee.
Il prodotto scalare e di prodotto vettoriale. Le trasformazioni geometriche affini.
La concatenazione di trasformazioni geometriche. Le trasformazioni in WebGL.
Le trasformazioni di vista. Le trasformazioni di proiezione: ortografica e prospettica. La sequenza delle trasformazioni di una
pipeline grafica. La camera e i suoi movimenti nello spazio.
Le primitive grafiche e i loro attributi [2 ore]
Le coordinate dei vertici. I colori: gli spazi RGB e HSV. Il concetto di vertex_Array e il loro impiego.
La costruzione delle figure geometriche più complesse: il cubo. Le normali ad una faccia.
I modelli di illuminazione in Grafica [4 ore]
L’equazione della radianza. L’interazione luce materia. Modelli di illuminazione globale e locale.
Le sorgenti di luce e le loro tipologie. Il modello di illuminazione di Phong.
Le componenti diffusa, speculare, ambientale e il loro calcolo. Il modello di Phong in WebGL.
La libreria Three.js [2 ore]
Introduzione alla libreria Three.js. La struttura delle API. La creazione di una scena grafica.
Gli oggetti geometrici, i materiali, le luci, la camera, le trasformazioni di proiezione.
Modellazione e gerarchia [2 ore]
Il modello lineare di una scena e le sue limitazioni. Introduzione al modello gerarchico.
Gli alberi e i grafi diretti aciclici (DAG).
Clipping, rasterizer, le superfici nascoste [4 ore]
Il concetto di clipping delle primitive grafiche. Gli algoritmi di clipping delle linee: Cohen-Sutherland, Liang-Barsky.
Estensione ai poligoni. La pipeline di clipping. La funzione di rasterizer.
La rimozione delle superfici nascoste. L’algoritmo del pittore. Lo z-buffer e il suo utilizzo in WebGL.
Texture Mapping [6 ore]
Definizione di texture mapping. Il texture space, le coordinate di texture. I texture filters: magnification, minification, mipmapping.
Le operazioni di base per il caricamento e applicazione di una texture in WebGL. Il multitexturing.
Automatic texture coordinate generation. Sphere Mapping. Cube mapping. Le tecniche di Bump-mapping, il parallax-mapping.
Le curve e le superfici [4 ore]
Le curve e le superfici e i tipi di rappresentazione.
La rappresentazione di curve e di superfici tramite polinomi cubici. Le curve e le superfici interpolanti.
Le curve e le superfici di Bezier. Le curve e le superfici B-spline. I polinomi di blending. Metodo di Horner,
il metodo delle differenze finite. Il metodo di de Casteljau per la suddivisione delle curve e delle superfici.
I sistemi particellari [2 ore]
Cosa sono i sistemi particellari. Come si costruisce un sistema particellare. Le particelle Newtoniane.
Soluzione dei sistemi di equazioni differenziali associati.
Il linguaggio GLSL [3 ore]
I tipi di dato, le variabili speciali. Gli operatori e le funzioni. L’interfaccia GLSL e Three.js.
Esempi di shader.
Le ombre [3 ore]
Cosa sono le ombre e a cosa servono. Lo shadow casting, le light maps. Le ombre in OpenGL/WebGL.
I modelli di illuminazione globale: le tecniche di ray-tracing, le tecniche di radiosity.

Metodi didattici

Il corso è organizzato nel seguente modo:

lezioni in aula sugli argomenti del corso;
esercitazioni in aula per illustrare praticamente l’applicazione degli argomenti presentati a lezione utilizzando WebGL, Javascript e HTML5.

Modalità di verifica dell'apprendimento

L’obiettivo della prova d’esame consiste nel verificare il livello di raggiungimento degli obiettivi formativi indicati in precedenza.

L’esame è suddiviso in un esame scritto e un esame orale.

L’esame scritto si articola in due parti:

La prima parte consiste nello svolgimento di tre gruppi di esercizi assegnati agli studenti durante lo svolgimento del corso, su argomenti specifici svolti fino a quel momento. Gli esercizi devono essere svolti e consegnati dopo una settimana da quando sono stati assegnati. La prova serve a valutare la comprensione degli argomenti di base da parte dello studente. Ogni gruppo di esercizi è valutato con un voto massimo di 10 punti e la somma dei tre voti determina il punteggio finale per la prima parte dell’esame. Nel caso uno studente non fosse riuscito a completare gli esercizi, può sostenere una prova scritta sostitutiva.
La seconda parte consiste nello svolgimento di un progetto nel quale viene richiesto la conoscenza e la capacità di impiegare praticamente tutte le conoscenze previste dal corso. Il progetto è valutato con una voto massimo di 30 punti. La media dei punteggi della prima e seconda parte determinano il voto finale dell’esame scritto che deve essere superiore al 16 per poter accedere all’orale.
L’esame orale serve a valutare la comprensione delle conoscenze degli argomenti svolti a lezione.

Il voto finale è dato dalla media dei voti dell’esame scritto e dell’esame orale.

Testi di riferimento

I testi di riferimento sono:
"Interactive Computer Graphics: A Top-down Approach With Webgl", E. Angel, D. Shreiner (2014), Prentice Hall College Div.
Lucidi del docente.
Testi consigliati per gli approfondimenti:
"WebGL Programming Guide: Interactive 3D Graphics Programming with WebGL",K. Matsuda, R. Lea,Addison Wesley (2013), Addison-Wesley.
"OpenGL Programming Guide: The Official Guide to Learning OpenGL, Versions 4.3", D. Shreiner, G.Sellers, J. Kessenich, B. Licea-kane (2013), Addison-Wesley.
"WebGL: Up and Running", T. Parisi (2012), O'Reilly.