Interactive 3D Graphics
Docente
- Prof. Roberto Ranon
Indirizzo e-mail
Indirizzo Pagina Web Personale
http://sole.dimi.uniud.it/~roberto.ranon/
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 WebGL, usando la libreria threejs.
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/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. Sistemi di coordinate. Rappresentazione di triangoli e mesh di triangoli. Normali e altri dati associati ai vertici.
Trasformazioni. Trasformazioni affini: rotazione, scalatura, traslazione, e loro rappresentazione con matrici. Angoli di Eulero. 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.
Operazioni su frammenti e buffer. Operazioni su frammenti: depth test, blending. Algoritmi per il rendering di superfici semitrasparenti.
Programmable Shaders. Vertex e fragment shaders. Il linguaggio Glsl.
Shading. I colori e la loro rappresentazione nel rendering. Fenomeni visuali. Interazione tra luce e superfici. Equazione generale per il rendering. Bidirectional Scattering Distribution Function. Superfici lambertiane. Superfici lucide. Equazioni di shading real-time e loro implementazione tramite shaders.
Modelli di Illuminazione Blinn-Phong e Cook-Torrance. Rappresentazione di sorgenti di luce e materiali. Equazione di shading di Blinn-Phong. Termine speculare di Cook-Torrance. Implementazione tramite shaders.
Textures. Concetto di texture map. Texture space e coordinate di texture. Applicazione di texture. Metodi di anti-aliasing per texture.
Uso di Textures nello shading. Material Mapping, Normal Mapping. Displacement Mapping. Reflection e Refraction Mapping, Shadow Mapping.
Strutture dati spaziali. Bounding volumes, Bounding Volume Hierarchies, Binary Space Partitioning Trees. Algoritmi di culling: Hierarchical View Frustum Culling
Rendering Basato su Immagini. 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: skinning, morphing, sistemi di particelle. Rappresentazione di rotazioni tramite quaternioni.
Controllo della telecamera virtuale. Panoramica dei metodi interattivi, assistiti e automatici.
Attività di Laboratorio
Il corso non prevede una vera e propria attività di laboratorio, ma a lezione vengono presentati esempi pratici e proposti alcuni esercizi.
Prerequisiti
E’ necessaria la conoscenza di base della programmazione e dell’algebra lineare (vettori, matrici e operazioni con essi).
Bibliografia
- Real-Time Rendering, 2nd oppure 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 vanno consegnate il giorno precedente allo scritto che si intende sostenere, e vengono discusse con lo studente e valutate in una discussione orale.
Orario di ricevimento
Su appuntamento.