Grafica (C.d.S. Informatica) A.A.2007/08
Calendario Lezioni e Argomenti trattati di volta in volta
- Lu.25/02/08, ore 16.00-19.00, aula Pincherle
, Lezione 1.
Introduzione al corso: equazione "grafica=modellazione+resa",
informazioni generali sugli obiettivi e sul corso dal punto
di vista organizzativo
(vedi lucidi: Introduzione al Corso)
Descrizione di alcune applicazioni della grafica 3D.
- Ma.26/02/08, ore 16.00-18.00, aula Pincherle
, Lezione 2.(RTR)
Altre applicazioni della grafica 3D; proiezione dei
cortometraggi Luxor Junior e Geri's Game della Pixar Animation Studios
e Gone Nutty della Blue Sky Stdios.
Hardware per un sistema grafico interattivo: architettura
di un display raster scan, CRT, frame buffer, DPU, CRT a colori,
tipi di frame buffer, cenni su GPU. Cenni su GPU e GPU programmabili.
Software per un sistema grafico interattivo: il problema dell'interattivita`,
ciclo di polling.
(vedi lucidi: Hardware e Software per la Grafica)
- Gi.28/02/08, ore 9.30-11.30, aula Pincherle
, Lezione 3.(RTR)
Coda degli eventi, funzioni di libreria che gestiscono la coda degli eventi
Sistema X Window: architettura del sistema, X Client, rete,
X Server, X Protocol, Xlib, Window Manager,
XClient che usa Toolkit e XClient che usa solo Xlib; display e screen,
connessione X Client e X Server; politica di bufferizzazione
e svuotamento del buffer delle richieste.
Risorse, proprieta' e atomi, caratteristiche delle window.
(vedi lucidi: Sistema XWindow)
(vedi Dispensa: Hardware e Software per la Grafica)
- Lu.03/03/08, ore 16.00-19.00, aula Pincherle
, Lezione 4.(GM)
Presentazione introduttiva su modellazione 3D: primitive di modellazione: Mesh poligonali,
NURBS e Subdivision; definizioni e tecniche di modellazione; sistemi
di modellazione di superfici e solidi; modellazione approssimata ed esatta;
rapresentazione e visualizzazione;
(vedi lucidi: Introduzione alla Modellazione)
Richiami di geometria delle curve: curva in forma parametrica; limite, derivata e integrale;
continuita' C^k, grafico della curva, curva regolare e regolare a tratti, punto semplice di
una curva e curva semplice.
- Ma.04/03/08, ore 15.30-19.00, aula Pincherle
, Lezione 5.(RTR)
Gerarchia delle window, mapping e visibility, disegno e graphics context, eventi.
Alcune esempi di XClient (xterm, xclock, xlogo, xcalc, xedit, bitmap, xfig),
e informazioni su X (man, xdpyinfo, startx, xorg.conf, Depth e Backingstore).
Elementi di programmazione X Window: esaminati alcuni semplici programmi
Client che fanno esclusivo uso di Xlib. Messo a disposizione un archivio di
semplici programmi da provare e modificare (xprg_0708.tgz).
Rappresentazione B-Rep (Boundary Representation) di oggetti 3D;
Mesh poligonali 3D; formati .m, .ply, .mesh, wavefront .obj;
- Gi. 06/03/08, ore 10.30-11.30, aula Pincherle
, Lezione 6.(RTR)
Conversione formati e convertitori (archivio converter.tgz)
Elementi di una mesh, strutture dati, funzioni su mesh;
(archivio trimlibrary.tgz con viewer xmview per file .m).
(vedi lucidi: Mesh poligonali 3D )
- Lu.10/03/08, ore 16.00-19.00, aula Pincherle
, Lezione 7.(GM)
Cambio di parametro, prorieta' invarianti per parametrizzazione,
retta tangente, vettore tangente, funzione velocita', vettore normale e binormale,
vettore curvatura, curvatura e raggio di curvatura, torsione.
Curve in forma parametrica polinomiali; scelta della base di rappresentazione.
Curve di Bezier; polinomi di Bernstein; proprieta'; algoritmo di de Casteljau;
suddivisione ricorsiva e visualizzazione grafica; joining di curve di Bezier.
- Ma.11/03/08, ore 15.30-19.00, aula Pincherle
, Lezione 8.(RTR)
(vedi Dispensa: Trasformazioni Geometriche e di Vista)
Trasformazioni geometriche 3D; trasformazioni elementari:
traslazione, scala, rotazione. Spazio affine: punti, vettori e frame;
trasformazioni affini, composizione di
trasformazioni mediante prodotto di matrici, trasformazioni elementari:
traslazione, scala, rotazione rispetto agli assi coordinati, shear.
Trasformazioni inverse, composizione di trasformazioni,
trasformazioni composte come rotazione e
scala rispetto ad un asse e a un punto, simmetrie,
Cambio di sistema di riferimento.
Definizione dei parametri di vista.
- Gi.13/03/08, ore 10.30-11.30, aula Pincherle
, Lezione 9.(RTR)
(vedi lucidi: Trasformazioni di Vista (new))
Sistema di coordinate cartesiano e sferico.
Trasformazione di vista; trasformazioni prospettiche e parallele;
proiezioni centrali (1 punto di fuga) con determinazione delle formule per il
viewing 3D. Proiezioni da un punto di vista arbitrario (3 punti di fuga).
- Lu.17/03/08, ore 16.00-19.00, aula Pincherle
, Lezione 10.(GM)
Ancora su joining di curve di Bezier: join C^0, C^1, G^1, ecc.; inversione di curve;
difficolta' di modellazione di forme complesse.
Funzioni spline (NUBS) a nodi multipli; spazio e dimensioni; partizione estesa e base
delle B-spline Normalizzate: definizione via formula ricorrente,
valutazione via formula ricorrente; ordine e numero nodi;
proprieta' e loro grafico, funzioni B-spline e loro supporto; B-spline non nulle in un intervallo
nodale.
- Ma.18/03/08, ore 15.30-19.00, aula Pincherle
, Lezione 11.(RTR)
Continua: Proiezioni da un punto di vista arbitrario (3 punti di fuga) e
determinazione delle formule per il viewing 3D; trasformazione di vista come
cambio di base con introduzione del View_Up vector;
discussione dei parametri di vista e del loro effetto.
Trasformazione window-viewport con introduzione della piramide di vista
e definizione window, tronco di piramide (frustum), necessita' di clipping 3D.
Mostrato programma persp_cube.c che usa Xlib e implementa la trasformazione di vista
visualizzando un cubo (archivio xptg1.tgz).
Proposti 6 esercizi da realizzare modificando il codice persp_cube.c.
Clipping 2D: algoritmo di Cohen-Sutherland; estensione dell'algoritmo visto
nel caso 3D ad un tronco di piramide.
Introduzione agli algoritmi di real-time rendering: depth-cueing, hidden-line
e hidden-surface.
- Gi.27/03/08, ore 10.30-11.30, aula Pincherle
, Lezione 12.(RTR)
Riprese alcune idee sugli algoritmi di real-time rendering;
algortimo di hidden-line quasi esatto per mesh (Ohno).
(vedi lucidi: Hidden-Line)
- Lu.31/03/08, ore 16.00-19.00, aula Pincherle
, Lezione 13.(GM)
(vedi Dispensa: Modellazione Geometrica con Curve)
proprieta' delle B-spline: supporto locale; non negative; partizione dell'unita'; variation
diminishing. Relazione fra numero di CP, ordine e numero nodi; esempi.
Curve NUBS: esempi e parametri; nodi aggiuntivi coincidenti, punto iniziale e finale,
guscio convesso globale e locale, controllo locale della curva,
invarianza per trasformazioni affini; approssimazione di forma della poligonale di controllo;
vettore tangente nei punti estremi;
Visionato pacchetto XCCurv di XCModel per la gestione di curve NUBS 2D.
Punti di controllo coincidenti; punti di controllo allineati; curve NUBS chiuse e periodiche.
- Ma.01/04/08, ore 15.30-19.00, aula Pincherle
, Lezione 14.(RTR)
(vedi lucidi: Real-Time Rendering)
(vedi Dispensa: Real-Time Rendering)
Introduzione all'algoritmo Z-buffer per l'Hidden-Surface Removal di mesh
poligonali; descrizione dell'algoritmo in termini di pseudocodice e significato
del buffer Z.
Coordinate Baricentriche (esempio di applicazione: interpolazione colore);
trasformazione prospettica modificata; relazione fra le coordinate
baricentriche; verifica di trasformazione di rette in rette e di piani in piani;
determinazione profondita' Z di un pixel;
- Gi.03/03/08, ore 10.30-11.30, aula Pincherle
, Lezione 15.(RTR)
Rivisitata Trasformazione di Vista per Z-Buffer;
coord. baricentriche e rasterizzazione di triangoli; coord. baricentriche e interpolazione
bilineare; interpolazione colore; interpolazione immagine;
mostrati (archivio xprg.tgz) programmi esempio che usano solo Xlib e implementano
la rasterizzazione di triangoli con facce colorate e texturate.
- Lu.07/04/08, ore 16.00-19.00, aula Pincherle
, Lezione 16.(GM)
Derivata di una curva NUBS, vettori tangenti agli estremi, CP coincidenti e consecutivi,
curva periodica, join di curve, invarianza per trasformazioni affini, curve NUBS di
interpolazione e approssimazione in norma.
Knot-Insertion: algoritmo di inserzione di un nodo, esempio.
- Ma.08/04/08, ore 15.30-19.00, aula Pincherle
, Lezione 17.(RTR)
(vedi lucidi: Algoritmi di Rasterizing)
Algoritmo di linea incrementale parametrico;
algoritmo di scan conversion per poligoni generici;
specializzazione per triangoli;
estensione per scan conversion di triangoli con componenti colore; estensione con
altri parametri quali profondita' Z, coordinate baricentriche, normali.
Algoritmo di linea di Bresenham; algoritmo di scan conversion TAM.
Proposti alcuni esercizi da realizzare modificando il
codice persp_cube_image.c nell'archivio messo a disposizione:
1.implementare rimozione facce nascoste con uno Z-buffer;
2.texturare il cubo dando le coordinate immagine relative ad ogni vertice (aprire
il cubo sul piano dell'immagine);
3.sostituire la rasterizzazione presente nel codice con un algoritmo piu' performante;
Introduzione al semplice modello di illuminazione dovuto a Phong:
- Gi.10/04/08, ore 10.30-11.30, aula Pincherle
, Lezione 18.(RTR)
luce ambiente e riflessione diffusa; sorgente di luce puntiforme con
riflessione diffusa e speculare; equazioni del modello di Phong (parametri legati
al materiale e parametri legati alla luce), posizione osservatore e geometria della
scena (normali, angoli di incidenza, angoli di riflessione). Tecnica Flat-shading,
Gouraud-shading e Phong-shading per la determinazione del colore da assegnare
ad ogni pixel dell'immagine.
Interpolazione colore e interpolazione normali per le tecniche di shading.
- Lu.14/04/08, ore 16.00-19.00, aula Pincherle
La lezione è sospesa per le elezioni politiche.
- Ma.15/04/08, ore 15.30-19.00, aula Pincherle
, Lezione 19.(RTR)
Visionato pacchetto che usa la libreria trimlib.a per la rappresentazione shading
di mesh; scelte progettuali e particolarita' per garantire il real-time.
(vedi Dispensa: Libreria Grafica OpenGL)
(vedi lucidi: Libreria Grafica OpenGL (parte I))
Introduzione alla libreria OpenGL; GL, GLX, GLU, GLUT,
primitive e attributi, un programma esempio con solo GL e GLX; display list e
double buffer; programmazione con le GLUT; un programma esempio che usa GL e GLUT
(display list; color buffer e gestione double buffer);
primitive geometriche, pipeline delle trasformazioni: trasformazioni di modellazione,
trasformazioni di vista e di proiezione;
Messo a disposizione archivio opengl.tgz con programmi esempio e tutorial;
- Gi.17/04/08, ore 10.30-11.30, aula Pincherle
, Lezione 20.(RTR)
Ancora su trasformazioni di modellazione, di vista e di proiezione nelle OpenGL;
programmi esempio e tutorial;
- Lu.21/04/08, ore 16.00-19.00, aula Pincherle
, Lezione 21.(GM)
Tool knot-insertion: inserzione multipla (valutazione, splitting e valutazione
vettore tangente); inverse knot insertion e altre applicazioni;
knot-refinement globale e knot-refinement locale.
Definizione di funzione NURBS; funzioni base RB-spline; generalizzazione
delle proprieta` viste per NUBS; curva NURBS;
definizione geometrica di curva NURBS 2D (proiezione di curve NUBS 3D);
significato geometrico dei coefficienti pesi. Demo con XCCurv.
- Ma.22/04/08, ore 15.30-19.00, aula Pincherle
, Lezione 22.(RTR)
Ancora su OpenGL: il colore e l'illuminazione (luci e materiali);
depth Buffer e gestione rappresentazione hidden surface e shading;
alcuni tutorials;
(vedi lucidi: Texture nella CG)
Texture: modifica di attributi del modello e delle normali della superficie dell'oggetto;
texture mapping 2D; gestione di texture mapping 2D; magnification, minification
(mip-mapping), aliasing e antialiasing;
Two-part mapping; solid texture o 3D texture; texture procedurali; bump-mapping;
multitexturing.
(vedi lucidi: Texture nelle OpenGL (parte II))
Texture in OpenGL: texture object, applicazione texture, two-part mapping,
tutorial su texture.
- Gi.24/04/08, ore 10.30-12.30, aula Pincherle
, Lezione 23.(RTR)
tutorial su texture e semplici programmi esempio (messo a
disposizione archivio opengl2.tgz).
(vedi lucidi: Aliasing e Antialiasing)
Aliasing e Antialiasing nella Computer Graphics: il problema del campionamento di
un segnale; aliasing spaziale e temporale nella CG.
Antialiasing come attenuazione del fenomeno: area sampling e supersampling; supersampling
adattivo, alcune immagini esempio senza e con antialiasing con differenti livelli
e soglie.
(vedi lucidi: Shadow)
Le ombre (shadow) nel rendering; utilizzo di uno Shadow Buffer per la determinazione
delle ombre in un algoritmo Z-Buffer; inverse mapping e gestione di antialiasing per
sfumare le ombre.
- Lu.28/04/08, ore 16.00-19.00, aula Pincherle
, Lezione 24.(GM)
Rappresentazione quadratica razionale delle sezioni coniche;
determinazione della NURBS arco di cerchio.
Determinazione della NURBS cerchio (rappresentazione a 9 punti).
(vedi Dispensa: Modellazione Geometrica con Superfici)
Funzioni NUBS bivariate prodotto tensoriale, funzioni B-spline bivariate,
superfici NUBS in forma parametrica, griglia dei punti di controllo.
- Ma.29/04/08, ore 15.30-19.00, aula Pincherle
, Lezione 25.(GM)
Superfici come schema bidirezionale di curve NUBS 3D. Propieta' delle superfici NUBS,
vettori tangente e normale di una superficie NUBS.
Superfici da curve: bilineari e cilindriche (o per estrusione); rigate;
presentazioni delle funzionalita' del pacchetto XCSurf di XCModel;
dimostrazione su curve 3D e superfici. Presentazione del progetto XCModel.
(vedi lucidi: Progetto XCModel)
- Lu.05/05/08, ore 16.00-19.00, aula Pincherle
, Lezione 26.(GM)
Superfici NURBS; funzioni RB-spline bivariate.
Ancora su superfici cilindriche; superfici di rivoluzione;
progettazione di superfici classiche come cilindro, cono, sfera, toro, ecc..;
superfici swinging (generalizzazione di rivoluzione); rivoluzione e swinging con curve 3D.
- Ma.06/05/08, ore 17.00-19.00, aula Pincherle
, Lezione 27.(RTR)
Rendering Avanzato con le OpenGL: allocazione di buffer e abilitazione di test.
Un esempio di rendering avanzato usando la glBlendFunc: la trasparenza.
Assegnato I Progetto
3D Game con OpenGL
- Gi.08/05/08, ore 10.30-11.30, aula Pincherle
Seminario: "La piattaforma XNA per lo sviluppo di videogiochi"
Giuseppe Maggiore,
Microsoft Student Partner - Ca' Foscari University of Venice, Italy
Luigi Ria, Microsoft Student Partner - Università degli Studi di Bologna, Italy
- Lu.12/05/08, ore 16.00-19.00, aula Pincherle
, Lezione 28.(GM)
Superfici per interpolazione di curve (skinning)
Superfici NURBS trimmate: definizione e applicazioni per la composizione solida, per la
composizione di superfici e per la modellazione gerarchica.
Demo con il pacchetto XCSurf su costruzione di superfici da curve: skinning, tubular e inbetween;
funzioni Numeric e Interactive;
Funzioni di modellazione interattiva in XCSurf, tecniche di deformazione (Bending, Twisting e Tapering).
- Ma.13/05/08, ore 15.30-19.00, aula Pincherle
, Lezione 29.(GM)
Ancora sull'ambiente di modellazione interattiva in XCSurf;
Modellazione dinamica mediante Albero di Costruzione;
Elementi di Modellazione Gerarchica;
La libreria trim ed il tassellatore di superfici NURBS trimmate.
(vedi lucidi: Albero di Costruzione)
(vedi lucidi: Modellazione_gerarchica)
(vedi lucidi: La trimlib)
- Gi.15/05/08, ore 10.30-12.30, aula F via Belmeloro
, Lezione 30.(RTR)
OpenGL: utilizzo di curve e superfici di Bezier, NURBS e NURBS trimmate;
tassellazione di NURBS trimmate in OpenGL; tassellazione dinamica;
demo con il pacchetto GLspy.
Nurbs in OpenGL: presentazione di alcuni semplici programmi di esempio.
(vedi lucidi: Libreria Grafica OpenGL (parte III))
- Lu.19/05/08, ore 16.00-19.00, aula Pincherle
, Lezione 31.(GM)
Introduzione al ray-tracing per la resa realistica di scene 3D: modello di
illuminazione globale, albero dei raggi, ricorsione e test di arresto,
intersezione raggio/superfici NURBS; tecniche di accelerazione del ray-tracing;
texture 3D.
(vedi lucidi: Ray-Tracing)
- Ma.20/05/07, ore 15.30-19.00, aula Pincherle
, Lezione 32.(GM)
Ancora sul ray-tracing: intersezione raggio/superfici NURBS trimmate; texture mapping;
antialiasing.
Presentazione della libreria descriptor per la creazione di uno scene-graph mediante codice C;
(vedi lucidi: descriptor library: lo scene-graph di XCModel 4.0)
Pacchetto XCRayt di XCModel per l'import di
uno scene-graph e setting dei parametri per l'esecuzione del ray tracing.
Esempi di script.c e resa con ray tracing;
Export in formato obj Wavefront da XCSurf della tassellazione di superfici NURBS.
- Gi.22/05/08, ore 10.30-11.30, aula Pincherle
, Lezione 33.(GM)
Ancora su libreria descriptor e XCRayt per resa realistica via ray-tracing:
descrizione dei parametri di resa ed esempi.
(vedi lucidi: XCRayt e XCView)
- Lu.26/05/08, ore 16.00-19.00, aula Tonelli
, Lezione 34.(GM)
Utilizzo di XCRayt per la creazione di uno scene-graph in maniera interattiva.
Assegnato II Progetto
Modellazione e Resa ;
- Ma.27/05/07, ore 15.30-19.00, aula Tonelli
, Lezione 35.(GM)
Ancora sul progetto di Modellazione e Resa: due esempi di progetti di anni precedenti;
pagina web di XCMoldel: image-gallery (tutorial e modelli);
Introduzione al Photon Mapping; una implementazione in hrayt di XCModel.
Demo con Rhinoceros: viste primitive e tool di un un pacchetto CAD 3D commerciale;
(vedi lucidi: Photon Mapping)
- Gi.29/05/07, ore 10.30-11.30, aula Tonelli
Seminario: OpenVisman framework for cultural heritage projects
A.Guidazzoli (CINECA)
Abstract: Inside the visualization department of Cineca, the OpenVisman framework has been developed
for cultural heritage projects; it's base on OpenSceneGraph graphics libraries to perform real-time
navigations and interactions within scenarios in which virtual worlds are connected to multimedia databases.
It's completely written in C++ and is available both on Windows and Linux (32 and 64 bits); the main project
was done using CMake for maximum portability; OpenVisman was developped having flexibility and easyness in
mind, taking some ideas from the videogames world.
The 3D reconstrunction is the starting point for the interaction with
the virtual world, which can be not only explored, but queried with just
the simple click of the mouse, and objects can be linked to information
coming from relational databases, multimedia files, GIS, and so on; so
the 3D objects are the interface towards information of various kind.
Torna alla
home page di Giulio Casciola