INFORMAZIONI SU

Interactive 3D Graphics

Programma dell'insegnamento di Interactive 3D Graphics - Corso di laurea magistrale in Comunicazione Multimediale e tecnologie dell'Informazione (2013/14)

Docente

Prof. Aggr. Roberto Ranon sito web

Crediti

6 CFU

Finalità

Lo scopo del corso e' introdurre lo studente ai concetti, agli algoritmi, e alle tecnologie della grafica 3D interattiva, con esempi pratici in OpenGL.
Al termine del corso, lo studente sarà in grado di:
- comprendere il funzionamento delle applicazioni basate su grafica 3D interattiva, come ad esempio videogiochi, visualizzazione di dati, e simulazioni;
- progettare e implementare applicazioni di questo tipo, relativamente alla parte grafica.

NOTA BENE: il corso (lezioni e materiali) viene fornito in lingua inglese.

La pagina Web del corso e’ http://www.dimi.uniud.it/~roberto.ranon/int3d.html

Programma


Introduzione. Differenze tra grafica 3D e grafica 3D interattiva. Il ciclo di rendering interattivo. La pipeline per il real-time rendering.

Rappresentazione di geometrie. Mesh di poligoni e loro rappresentazione. Rappresentazione di triangoli e mesh di triangoli. Normali e altri dati associati ai vertici.

Trasformazioni. Spazi di coordinate utilizzati in Grafica 3D. Trasformazioni affini: rotazione, scala, traslazione. Trasformazioni in coordinate omogenee.

La telecamera virtuale. Rappresentazione di una telecamera virtuale. Camera space, clip space e screen space. Proiezioni ortografiche e prospettiche. Clipping e screen mapping.

Rasterizzazione e interpolazione. Algoritmi per la rasterizzazione di punti, linee e poligoni. Interpolazione prospettica di attributi dei vertici. Aliasing e metodi di anti-aliasing screen-based.

Textures. Concetto di texture map. Texture space e coordinate di texture. Applicazione di texture. Metodi di anti-aliasing per texture.

Operazioni su frammenti e buffer. Operazioni su frammenti: alfa test, blending. Operazioni con buffer: stencil test, depth test.

Programmable Shaders. Vertex e fragment shaders. Il linguaggio Glsl.

Shading. I colori e la loro rappresentazione nel rendering. Fenomi visuali e loro importanza nello shading. Equazioni di shading e loro implementazione tramite shaders. Frequenza di valutazione: flat shading, Gouraud shading e Phong shading.

Modelli di Illuminazione Blinn-Phong e Cook-Torrance. Rappresentazione di sorgenti di luce e materiali. Equazione di shading di Phong. Termine speculare Blinn/Phong. Termine speculare Cook-Torrance. Implementazione tramite shaders.

Uso di Textures nello shading. Material Mapping, Normal Mapping. Implementazione tramite shaders.

Alcune tecniche di illuminazione globale. Environment Mapping, Shadow Mapping. Implementazione tramite shaders.

Strutture dati spaziali. Bounding volumes, Bounding Volume Hierarchies, Binary Space Partitioning Trees. Algoritmi di culling: Hierarchical View Frustum Culling

Rendering Basato su Immagini. Cenni a sprites, impostors, billboards. Effetti full screen. Implementazione di alcuni algoritmi di image processing tramite shaders: color filters, convoluzioni.

Introduzione alle animazioni. Animazioni tramite keyframing: interpolazione tramite splines. Cenni ad altri tipi di animazioni. Rappresentazione di rotazioni tramite quaternioni.

Controllo della telecamera virtuale. Panoramica dei metodi interattivi, assistiti e automatici. Metodi reattivi e dichiarativi. Un esempio di algoritmo dichiarativo per la determinazione della telecamera ottimale a partire da un insieme di requisiti.

OpenGL e GLSL. Concetti di base. Struttura di base di un programma con OpenGL. Tipi di dati OpenGL e modello degli oggetti. Modello di rendering OpenGL. Primitive OpenGL per il disegno di geometrie tramite vertex buffers. Trasformazioni modelview in OpenGL e stack di trasformazioni. Proiezioni e viewport mapping in OpenGL. Applicazione di textures in OpenGL. Il linguaggio GLSL. Uso di shaders GLSL in OpenGL.

Attività di Laboratorio

Il corso non prevede una vera e propria attività di laboratorio, ma a lezione vengono presentati esempi pratici.

Prerequisiti

È necessaria la conoscenza di base della programmazione e dell’algebra lineare (vettori, matrici e operazioni con essi).

Bibliografia

- Real-Time Rendering, 2nd o 3rd edition, di T. Akenine-Möller, E. Haines, e N. Hoffman
- 3D Math Primer for Graphics and Game Development, di F. Dunn e I. Parberry A K Peters / CRC Press oppure Mathematics for 3D Game Programming and Computer Graphics, 2nd edition, di Eric Lengyel, Cengage Learning 2011
- slides ed esempi forniti a lezione e su materialedidattico.uniud.it.

Modalità d'esame

L'esame si compone di una prova scritta con esercizi e domande aperte, e di due esercitazioni pratiche (assegnate nel corso delle lezioni) che consistono nella realizzazione di un programma secondo le indicazioni fornite dal docente e riportate sulla pagina Web del corso. Le esercitazioni, che vanno svolte in forma individuale, vanno consegnate il giorno precedente allo scritto che si intende sostenere, e vengono discusse con lo studente e valutate nella prova orale, che verte interamente sul progetto.

È possibile, per gli studenti degli anni precedenti, sostenere l’esame con le modalità dell’anno in cui si e’ seguito il corso.

Orario di ricevimento

Su appuntamento.