Fondamenti di Grafica Tridimensionale 2010/2011

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
16-18
Aula C
14-16


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

Lezioni e Lucidi


Merc 20 Ottobre Introduzione al corso (PDF)
Strutture dati per complessi simpliciali, la vcg library
Ven 22 Ottobre Strutture dati per complessi simpliciali, la vcg library, Seconda parte
Slide Aggiornate: (PDF data structure).
Esempi pratici in c++ (Zip Source Code)
Merc 27 Ottobre Sistemi di riferimento e trasformazioni
(Lezione tenuta da Francesco Banterle)
(PDF trasformazioni)
Ven 29 Ottobre La pipeline di rendering di OpenGL
(Lezione tenuta da Marco Di Benedetto) (PDF pipeline).
esempi pratici in c++
Merc 3 Novembre Lighting e Texturing, equazione di radianza, modello di illuminazione di Phong,
Tecniche di shading (Phong, flat, Gouraud)
(PDF Lighting e texturing)
Ven 5 Novembre Lighting e Texturing 2

Merc 10 Novembre VCG library. Esempi di processing e gestione della topologia FF
Tre modi per contare correttamente gli edge non manifold (Zip Source Code)
Ven 12 Novembre VCG Lib
Ancora esempi di processing di mesh. (Zip Source Code: come toglire facce doppie in una mesh fatta di cubi giustapposti)
(Zip Source Code: scegliere le facce migliori da togliere in una mesh non manifold)
Mer 17 Novembre Sciopero...

Ven 19 Novembre Nozioni sulla definzione e le proprieta' delle curvature delle superfici. Algoritmi di Smoothing per superfici
(PDF Curvature e Smoothing)
Mer 24 Novembre Global Illumination
(Lezione tenuta da Francesco Banterle)
LEZIONE ANNULLATA A CAUSA DELLE PROTESTE IN CORSO
Ven 26 Novembre Global Illumination
(Lezione tenuta da Francesco Banterle)
Lezione Annullata: "...per problemi di sicurezza e di copertura assicurativa non è possibile svolgere attività didattiche in aree occupate..."
Mer 1 Dicembre Sospensione didattica per permettere verifiche intermedie

Ven 3 Dicembre Mesh Processing: Simplification
Algoritmi iterativi, edge collapse, clustering, misure di differenza tra due mesh (PDF Simplification)
Mer 8 Dicembre Festa

Ven 10 Dicembre Meshlab sample

Lun 13 Dicembre Lezione Recupero Aula B1 ore 14:00
Global Illumination
(Lezione tenuta da Francesco Banterle)
(PDF Global Illum.)
Mer 15 Dicembre Shaders e Buffers in OpenGL
(Lezione tenuta da Marco Di Benedetto)
(PDF Opengl.)
Ven 17 Dicembre Shaders e Buffers in OpenGL (2)
(Lezione tenuta da Marco Di Benedetto)
(PDF Opengl)
(Zip Codice Presentato a lezione)
Mer 12 Gennaio MeshLab Proj
(Zip Codice filtro rimozione non manifold presentato a lezione)
Ven 14 Gennaio MeshLab Proj

Mer 19 Gennaio Spatial Indexing
(PDF Spatial Indexing)
Ven 21 Gennaio MeshLab Proj

Mer 26 Gennaio Ultima Lezione pre-compito

Mailing List

Come mailing list per corso e per tutti i problemi che riguardano compilazione e debugging della vcg library e di meshlab useremo quella che trovate su:

http://lists.sourceforge.net/lists/listinfo/meshlab-devel

Quindi iscrivetevi e postate dubbi e problemi li' sopra anziche' mandarmi mail dirette, cosi' rispondo una volta sola per tutti :).

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

Quest'anno non si fara'. Sostituito da orale, che verte sulle stesse tematiche dei compitini degli anni precedenti (ovviamente eccetto la parte di codice che suppongo coperta dal prgetto). Esempi di compitino: 2005-06, 2006-07, 2007-08, 2008-09, 2009-10

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:

Autore:

Editore:
ISBN:
Edizione:
Pagine:
Prezzo:
Fondamenti di grafica tridimensionale interattiva
R. Scateni, P. Cignoni.
C. Montani, R. Scopigno

McGraw-Hill
8838662150
2005
270
€ 23,00
Cover of the book Un buon testo in inglese sulle tematiche del mesh processing e'
Polygon Mesh Processing

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: