Fondamenti di Grafica Tridimensionale 2012/2013

Programma

Il corso presenta un'introduzione alle principali tematiche della Grafica Tridimensionale focalizzando sugli aspetti teorici e pratici della modellazione basata su mesh triangolari e del rendering. Una parte significativa del corso ha carattere progettuale e prevede la partecipazione attiva degli studenti allo sviluppo collaborativo di MeshLab, un sistema open source per il mesh processing. La parte progettuale e' basata principalmnente sulle seguenti tecnologie: C++, OpenGL e QT.
Si sottolinea che MeshLab, il tool al cui sviluppo gli studenti collaboreranno nella parte progettuale, non e' un progetto puramente didattico, ma e' un sistema vero e complesso; MeshLab e' correntemente usato da migliaia di utenti in tutto il mondo, per cui si richiede coinvolgimento e motivazione...
Argomenti trattati nel corso:

Modalita' di esame

L'esame e' costituito da una parte progettuale ed una teorica.
Il progetto e' generalmente costituito da un plugin di MeshLab e costituisce la parte + significativa dell'esame. I possibli progetti di plugins li trovate nella wiki di meshlab;
La parte teorica che riguarda gli argomenti di grafica trattati durante il corso, puo' essere sostenuta o con un compitino, o con un orale al momento della consegna della parte progettuale.
La parte progettuale vale 20 trentesimi, mentre la parte teorica vale 10 trentesimi. Voto finale = Progetto + max (Orale, Compitino)

Orario

Lunedì Martedì Mercoledì Giovedì Venerdì
Aula L1
14-16
Aula L1
09-11


Eventuali lezioni di recupero si svolgeranno in aula da stabilirsi il venerdi' mattina dalle 9 alle 11

Lezioni e Lucidi

26 Set 2012 - Mercoledì Aula L1ore 14:00 Introduzione al corso (PDF)
Mesh Triangolari e complessi simpliciali (PDF)
28 Set 2012 - Venerdì Aula L1ore 09:00 Mesh Triangolari e complessi simpliciali (stesso pdf scorsa lezione)
03 Ott 2012 - Mercoledì Aula L1ore 14:00 Esercitazioni Mesh Processing (1)
ZIP con i sorgenti visti a lezione
I path del progetto sono pensati perche' il folder sia scompattato nel folder vcglib/apps/sample
05 Ott 2012 - Venerdì Aula L1ore 09:00 Trasformazioni Geometriche (PDF)
10 Ott 2012 - Mercoledì Aula L1ore 14:00 La pipeline di rendering (PDF)
12 Ott 2012 - Venerdì Aula L1ore 09:00 Esercitazioni Mesh Processing (2)
Detecting and removal of non manifold vertexes by vertex splicing
il vecchio repository della vcglib svn co https://vcg.svn.sourceforge.net/svnroot/vcg/trunk/vcglib al 12/oct/2012 e' ancora su e corretto: usate quello.
ZIP: con i sorgenti visti a lezione
al solito I path del progetto sono pensati perche' il folder sia scompattato nel folder (di una versione aggiornata) di vcglib/apps/sample
17 Ott 2012 - Mercoledì Aula L1ore 14:00 Lighting e Texturing, equazione di radianza, modello di illuminazione di Phong, Tecniche di shading (Phong, flat, Gouraud) (PDF)
19 Ott 2012 - Venerdì Aula L1ore 09:00 Lighting e Texturing, equazione di radianza, modello di illuminazione di Phong, Tecniche di shading e texturing (seconda parte) (PDF)
24 Ott 2012 - Mercoledì Aula L1ore 14:00 Esercitazioni Mesh Processing (3)
Visita random di una mesh e costruzione di un albero di supporto di triangoli
ZIP: con i sorgenti visti a lezione
Nota: il bug incontrato alla fine della lezione era dovuto all'erroneo uso di FN() come guardia di fine del for.
Vedi la nota in fondo alla pagina su 'Creating and destroying elements' nella documentazione della vcglib
26 Ott 2012 - Venerdì Aula L1ore 09:00 Esercitazioni Mesh Processing (4);
temi trattati:
Creazione e cancellazione di elementi su una mesh
Smoothing di un profilo
Costruzione di un labirinto sulla superficie di una mesh. ZIP: con i sorgenti visti a lezione
31 Ott 2012 - Mercoledì Aula L1ore 14:00 Nozioni sulla curvature delle superfici e sugli algoritmi di smoothing per mesh (PDF)
02 Nov 2012 - Venerdì Aula L1ore 09:00 LEZIONE RIMANDATA
07 Nov 2012 - Mercoledì Aula L1ore 14:00 Sospensione della Didattica per verifiche intermedie
09 Nov 2012 - Venerdì Aula L1ore 09:00 Esercitazioni Mesh Processing:
temi trattati:
Trasformare una mesh chiusa con genus non zero in una superficie omeomorfa ad un disco per mezzo di tagli.
Prima Parte: ZIP: con i sorgenti visti a lezione
14 Nov 2012 - Mercoledì Aula L1ore 14:00 Esercitazioni Mesh Processing:
temi trattati:
Trasformare una mesh chiusa con genus non zero in una superficie omeomorfa ad un disco per mezzo di tagli.
Seconda Parte: ZIP: con i sorgenti visti a lezione
16 Nov 2012 - Venerdì Aula L1ore 09:00 Esercitazioni Mesh Processing
Scrittura di un filtro per meshlab che racchiuda la lezione precedente
ZIP: con i sorgenti visti a lezione
21 Nov 2012 - Mercoledì Aula L1ore 14:00 Spatial Indexing Data Structures (PDF)
23 Nov 2012 - Venerdì Aula L1ore 09:00 Global Illumination (PDF)
28 Nov 2012 - Mercoledì Aula L1ore 14:00 Simplification Algorithms (PDF)
30 Nov 2012 - Venerdì Aula L1ore 09:00 Esercitazioni Mesh Processing
Scrittura di una 'decoration' per meshlab che disegni una sezione
ZIP: con i sorgenti visti a lezione
05 Dic 2012 - Mercoledì Aula L1ore 14:00 Esercitazioni Mesh Processing
Scrittura di un filtro per meshlab che utilizzi spatial indexing
ZIP: con i sorgenti visti a lezione
07 Dic 2012 - Venerdì Aula L1ore 09:00 OpenGL Shaders (PDF)

Testi e materiale didattico

Durante il corso verranno distributi elettronicamente i lucidi presentati a lezione. Per un trattamento un po' piu' ad alto livello ed ordinato, buona parte degli argomenti teorici (trasformazioni, lighting e shading, texturing, la pipeline di rendering e un po' di teoria del colore li trovate nel seguente testo:

Cover of the book Titolo: Fondamenti di grafica tridimensionale interattiva
Autore: R. Scateni, P.Cignoni. C. Montani, R. Scopigno
Editore:McGraw-Hill
ISBN:8838662150
Prezzo: 23,00

Per quanto riguarda invece la parte progettuale, che richiede una ottima conoscenza del C++ ed una ragionevole dimestichezza con QT, esiste moltissimo materiale disponibile in rete. Segnalo solo un paio di link:

VCG Library

Libreria per la gestione di mesh triangolate, costituisce il framework dove abbiamo fatto le esercitazioni, e' distribuita con licenza GPL, il sito ufficiale e' vcg.sf.net. Non ne vengono rilasciate release donwloadabili semplicemente ma dovete scaricarla in SVN anonimo; Qualche hint tecnico su come fare checkout della libreria con tortoise sotto win lo trovate nelle pagine della documentazione del meshlab, qui. Per compilare gli esempi (quelli sotto apps/sample) non ci sono makefile o soluzioni .net gia' pronte ma solo i *.pro a partire dai quali usando qmake (il tool di qt per la creazione automatica di makefiles) potete generarli. Gli esempi distribuiti si suppone stiano sotto la dir apps/sample.

MeshLab

Sistema open source per la visualizzazione e il processing di mesh lo trovate sorgenti e compilato su http://meshlab.sourceforge.net . Per la compilazione di MeshLab fate riferimento alla pagina Compiling della wiki di meshlab; Parte dell'esame consiste nella realizzazione di plugins per il meshlab, i possibili progetti di plugins li trovate alla pagina projects della documentazione del MeshLab.

Compitino

AULA B1 Venerdi 19 dicembre ore 14 .
Vale fino a 10 pt sul totale. Tre esempi di compitino: 2006, 2007, 2008
Risultati Compitino