Fondamenti di Grafica Tridimensionale 2011/2012

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

Lun Mar Mer Gio Ven
Aula L1
16-18
Aula C
14-16

Lezioni e Lucidi

21 Set 11 Mer Introduzione al corso (PDF)
Strutture dati per complessi simpliciali, la vcg library
23 Set 11 Ven Strutture dati per complessi simpliciali, la vcg library, Seconda parte
Slide Aggiornate: (PDF).
28 Set 11 Mer Strutture dati per complessi simpliciali, la vcg library.
esempi pratici in c++ (Contare gli edge, calcolo caratt. eulero) fgt_example_20110928.zip
30 Set 11 Ven Coord Omogenee e Trasformazioni (PDF)
5 Ott 11 Mer La pipeline di OpenGL (PDF)
7 Ott 11 Ven Lighting e Texturing, equazione di radianza, modello di illuminazione di Phong, Tecniche di shading (Phong, flat, Gouraud)
12 Ott 11 Mer Lighting e Texturing, equazione di radianza, modello di illuminazione di Phong, Tecniche di shading (Phong, flat, Gouraud) Parte 2 (PDF)
14 Ott 11 Ven Laboratorio VcgLib: Navigare una mesh usando la relazione FF. Percorrere gli edge di bordo, trovare situazioni non manifold, allocazione dinamica di vertici fgt_example_20111014.zip
19 Ott 11 Mer Nozioni sulla definzione e le proprieta' delle curvature delle superfici. Algoritmi di Smoothing per superfici (PDF)
21 Ott 11 Ven Laboratorio VcgLib: Smoothing e Refinement (da finire!) fgt_example_20111021.zip
26 Ott 11 Mer LEZIONE RIMANDATA
28 Ott 11 Ven Laboratorio VcgLib: Smoothing e Refinement Seconda Parte fgt_example_20111028.zip
2 Nov 11 Mer Sospensione Didattica per verifiche intermedie
4 Nov 11 Ven Sospensione Didattica per verifiche intermedie
9 Nov 11 Mer Global Illumination (PDF)
11 Nov 11 Ven Simplification, algoritmi per la riduzione della complessita' di una mesh (PDF)
16 Nov 11 Mer Spatial Indexing Sturctures (PDF)
18 Nov 11 Ven Laboratorio VcgLib: Remeshing. Prima parte raffinare una mesh con punti sparsi fgt_example_20111118.zip
23 Nov 11 Mer LEZIONE RIMANDATA
25 Nov 11 Ven LEZIONE RIMANDATA
30 Nov 11 Mer Laboratorio VcgLib: Remeshing. Seconda parte raffinare una mesh con punti sparsi fgt_example_20111130.zip
02 Dic 11 Ven Architettura Meshlab. Descrizione Plugins
07 Dic 11 Mer Laboratorio MeshLab: Scrivere un filtro che implementi l'esempio di Remeshing. fgt_20111207_filter_remesh_v1.zip
09 Dic 11 Ven Laboratorio MeshLab: Scrivere un filtro che implementi l'esempio di Remeshing (seconda parte). fgt_20111207_filter_remesh_v1.zip
Scrivere un plugin di decorazione (seconda parte). fgt_20111209_decorate_section.zip
12 Dic 11 Lun LEZIONE STRAORDINARIA
ORE 1400-1600 Aula Faedo - ISTI - Area della ricerca CNR Mappa...
14 Dic 11 Mer Discussione Progetti MeshLab
16 Dic 11 Ven Discussione Progetti MeshLab

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.

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

Altri testi, in inglese consigliati per chi vuole approfondire:

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: