Grafica (C.d.S. Informatica) A.A.2005/06
Argomenti trattati a Lezione
- Lu.20/02/06, ore 17.00-19.00, aula 7^ piano, Lezione 1.
Introduzione al corso: equazione "grafica=modellazione+resa",
informazioni generali sugli obiettivi e sul corso dal punto
di vista organizzativo (vedi lucidi relativi);
descrizione di alcune applicazioni della grafica 3D.
- Ma.21/02/06, ore 14.00-16.00, aula 7^ piano, Lezione 2.
Altre applicazioni della grafica 3D; proiezione dei
cortometraggi Luxor Junior e Geri's Game e alcuni spezzoni di
produzioni della Pixar Animation Studios; il "dietro
le quinte" di Dinosauri della Walt Disney.
- Gi.23/02/06, ore 14.00-16.00, aula 7^ piano, Lezione 3.
Hardware per un sistema grafico interattivo (architettura
di un display raster scan, CRT, frame buffer, DPU, CRT a colori,
tipi di frame buffer, dispositivi di input); cenni su GPU e GPU
programmabili. Software per un
sistema grafico interattivo: il problema dell'interattivita`, ciclo
di polling, 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.
- Lu.27/02/06, ore 16.00-19.00, aula 7^ piano, Lezione 4.
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, 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, ecc.).
- Ma.28/02/06, ore 14.00-16.00, aula 7^ piano, Lezione 5.
Informazioni su X (startx, XF86Config-4, backing-store, ecc.).
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 (xprove.tgz).
Esercizio: realizzare un piccolo videogioco 2D interattivo con
programmazione X.
- Gi. 02/03/06, ore 14.00-16.00, aula 7^ piano, Lezione 6.
Introduzione ai sistemi B-Rep (Boundary Representation) per la rappresentazione
di modelli 3D (Mesh poligonali);
rappresentazione poligonale (struttura VEF) per oggetti solidi e superfici
aperte; formati .m, .ply, wavefront .obj,
conversione formati e convertitori (messo a disposizione archivio
converter.tgz). Trasformazioni geometriche 3D; trasformazioni elementari:
traslazione, scala, rotazione.
- Lu.06/03/06, ore 16.00-19.00, aula 7^ piano, Lezione 7.
Trasformazioni geometriche 3D in forma matriciale, composizione di
trasformazioni mediante prodotto di matrici, trasformazioni elementari:
traslazione, scala, rotazione rispetto agli assi coordinati; inversione
delle trasformazioni, simmetrie; trasformazioni composte come rotazione e
scala rispetto ad un punto e simmetria rispetto ad una retta;
trasformazione di sistema di riferimento. Sistema di coordinate cartesiano e sferico.
Definizione dei parametri di vista (viewing 3D).
Un programma X di esempio per la visualizzazione di mesh poligonali che
fa uso della libreria trim. Messo a disposizione archivio mfiles.tgz e
programmi di visualizzazione che fanno uso della libreria trim (trimlibrary.tgz).
- Ma.07/03/06, ore 14.00-16.00, aula 7^ piano, Seminario.
Seminario tenuto dall'Ing. Roberto Ciarloni della Think3 dal titolo "Teoria e pratica
del CAD alla Think3"
- Gi.09/03/06, ore 14.00-16.00, aula 7^ piano, Lezione 8.
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)
con determinazione delle formule per il viewing 3D;
discussione dei parametri di vista e del loro effetto.
Trasformazione window-viewport con introduzione del cono di vista
(o tronco di piramide) e definizione window a partire dall'apertura
angolare (effetto zoom);
- Lu.13/03/06, ore 16.00-19.00, aula 7^ piano, Lezione 9.
Ancora sulla trasformazione window-viewport e zoom (trasformazione inversa
viewport-window); tronco di piramide di vista e clipping 3D;
clipping 2D: algoritmo di Cohen-Sutherland; estensione dell'algoritmo visto
nel caso 3D.
Mostrato (e messo a disposizione, archivio xprg.tgz)
un programma che usa solo Xlib e implementa la trasformazione di vista
visualizzando un cubo e una superficie z=f(x,y).
Proposti 6 esercizi da realizzare modificando il
codice persp_cube.c nell'archivio messo a disposizione:
1.gestione interattiva (mouse) dei parametri di vista;
2.inserzione nella pipeline del clipping 3D rispetto alla piramide di vista;
3.gestione di piu' oggetti e trasformazioni geometriche su alcuni di questi;
4.lettura mesh da file .m;
5."animazione" dell'oggetto (rotazione camera intorno all'oggetto) mediante un
input da mouse;
6.aggiunta di una finestra in cui si visualizza l'oggetto e l'osservatore
(con i suoi parametri di vista) da un secondo punto di vista.
- Ma.14/03/06, ore 14.00-16.00, aula 7^ piano, Lezione 10.
Trasformazione di vista come cambio di base con introduzione del view_up
vector;
7.inserzione nella trasformazione di vista del view-up vector;
Introduzione agli algoritmi di real-time rendering: hidden-line e hidden-surface;
algoritmo del pittore e algoritmo visibility buffer;
cenni al depth-cueing; algoritmo di hidden-line quasi esatto per mesh.
- Gi.16/03/06, ore 14.00-16.00, aula 7^ piano, Lezione 11.
Ancora su algortimo di hidden-line quasi esatto per mesh;
algoritmo di hidden-line per mesh ottenute da z=f(x,y) con view-up vector verticale e proiezione
prospettica a 2 e 3 punti di fuga; mostrata esecuzione software dimostrativo che
implementa piu' algoritmi (Anderson, TAM, Ohno) per tali mesh;
- Lu.20/03/06, ore 16.00-19.00, aula 7^ piano, Lezione 12.
Introduzione all'algoritmo Z-buffer per l'Hidden-Surface Removale di mesh
poligonali o VEF; descrizione dell'algoritmo in termini di pseudocodice e significato
del buffer Z.
Coordinate Baricentriche; Determinazione profondita' Z di un pixel.
- Ma.21/03/06, ore 14.00-16.00, aula 7^ piano, Lezione 13.
Trasformazione dallo spazio 3D osservatore allo spazio 3D del piano di proiezione;
trasformazione di rette in rette e di piani in piani; relazione fra le coordinate
baricentriche; mostrati (e messo a disposizione, archivio xprg2.tgz)
programmi esempio che usano solo Xlib e implementano la rasterizzazione di triangoli
e la visualizzazione 3D con facce colorate e texturate.
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;
4.trovare errore presente sul back-face culling;
- Gi.23/03/06, ore 14.00-16.00, aula 7^ piano, Lezione 14.
Trasformazione di vista per Z-Buffer;
Rasterizzazione o scan conversion di triangoli/poligoni (algoritmi di linea
incrementale parametrico e di Bresenham): TAM per poligoni convessi o vericalmente
convessi via algoritmo di linea di Bresnham;
- Lu.27/03/06, ore 16.00-19.00, aula 7^ piano, Lezione 15.
Introduzione ad un algoritmo di scan conversion generale per poligoni qualunque
che usa l'algoritmo di linea incrementale; specializzazione per triangoli;
estensione per scan conversion di triangoli con componenti colore; estensione con
altri parametri quali profondita' Z, coordinate baricentriche, normali.
Introduzione ad un semplice modello di illuminazione:
luce ambiente e riflessione diffusa; sorgente di luce puntiforme con
riflessione diffusa e speculare; parametri dovuti agli oggetti (materiale),
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.
- Ma.28/03/06, ore 14.00-16.00, aula 7^ piano, Lezione 16.
Visionato pacchetto che linka la libreria trimlib.a per la rappresentazione shading
di mesh; scelte progettuali e particolarita' per garantire il real-time.
Introduzione alla libreria OpenGL; GL, GLX, GLU, GLUT,
primitive e attributi, un programma esempio con solo GL e GLX (visionato un programma
esempio che usa solo GL e GLX); programmazione con le GLUT (visionato un programma
che usa GL e GLUT).
- Gi.30/03/06, ore 14.00-16.00, aula 7^ piano, Lezione 17.
Messo a disposizione archivio opengl.tgz con programmi esempio e tutorial;
Due programmi esempio con glut: gestione del ridisegno e delle call-back function;
primitive geometriche, pipeline delle trasformazioni: trasformazioni di modellazione,
trasformazioni di vista e di proiezione; visionati alcuni tutorial su
geometria, trasformazioni di vista e di proiezione.
- Lu.03/04/06, ore 16.00-19.00, aula 7^ piano, Lezione 18.
Ancora su trasformazioni geometriche nelle Opengl;
Opengl: il colore, illuminazione (luci e materiali), tecniche di shading, normali;
alcuni tutorials e programmi esempio. Display list;
Color Buffer e gestione Double Buffer; Depth Buffer e gestione rappresentzione
hidden surface e shading.
- Ma.04/04/06, ore 14.00-16.00, aula 7^ piano, Lezione 18.
Aliasing e Antialiasing nella Computer Graphics: il problema della 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. Alcuni dettagli su glLoadMatrix, glMultMatrix, glPush e glPop.
- Gi.06/04/06, ore 14.00-16.00, aula 7^ piano, Lezione 19.
Texture: modifica di attributi del modello e delle normali della superficie dell'oggetto;
texture mapping 2D; gestione di texture mapping 2D nello Z-buffer; magnification, minification
(mip-mapping), aliasing e antialiasing;
Two-part mapping; solid texture o 3D texture; texture procedurali; bump-mapping;
multitexturing.
Assegnato I Progetto
3D Game con OpenGL
- Gi.20/04/06, ore 14.00-16.00, aula 7^ piano, Lezione 20.
Texture in OpenGL: texture object, applicazione texture, two-part mapping,
mip-mapping, ecc.; tutorial su texture e semplici programmi esempio (messo a
disposizione archivio giulio.tgz).
- Lu.24/04/06, ore 16.00-19.00, aula 7^ piano, Lezione 21.
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.
Presentazione introduttiva su modellazione 3D: primitive di modellazione: Mesh poligonali,
NURBS e Subdivision; definizioni, potenzialita' e tecniche di modellazione; sistemi
di modellazione di superfici e di solidi
- Gi.26/04/06, ore 14.00-16.00, aula 7^ piano, Lezione 22.
Modellazione poligonale (approssimata) e modellazione NURBS (esatta);
rapresentazione e visualizzazione; scambio modelli fra sistemi di modellazione e formati.
Introduzione alle curve e superfici esatte: forma algebrica e forma parametrica; vantaggi
e svantaggi (valutazione/visualizzazione, rappresentazione unica e non, ecc.)
- Ma.02/05/06, ore 14.00-16.00, aula 7^ piano, Lezione 23.
Richiami di geometria delle curve: curva in forma parametrica; limite, derivata integrale;
continuita' C^k, curva regolare e regolare a tratti, curva semplice, parametrizzazione,
cambio di parametro, prorieta' invarianti per parametrizzazione, retta tangente, vettore tangente,
funzione velocita', vettore curvatura, funzione curvatura, vettore normale, continuita' C^k e G^k.
Curve in forma parametrica polinomiali; scelta della base di rappresentazione.
- Gi.04/05/06, ore 14.00-16.00, aula 7^ piano, Lezione 24.
Curve di Bezier; polinomi di Bernstein; proprieta' del guscio convesso; algoritmo di de Casteljau
per curve di Bezier; suddivisione ricorsiva (visualizzazione grafica); derivata.
- Lu.08/05/06, ore 16.00-19.00, aula 7^ piano, Lezione 25.
Invarianza per trasformazioni affini; joining di curve di Bezier (C^0, C^1, G^1, ecc.);
funzioni spline (NUBS) a nodi multipli; spazio e dimensioni; partizione estesa e base
delle B-spline: formula ricorrente, proprieta' e loro grafico.
Dimostrazione di applicazioni di curve di Bezier a tratti: fonti di caratteri (Type1, TrueType, ecc.);
editor di fonti (fontforge, ecc.), convertitori da bitmap a vector (potrace, autotrace, textrace, ecc.).
- Ma.09/05/06, ore 14.00-16.00, aula 7^ piano, Lezione 26.
Relazione fra Numero di CP, Ordine e Numero Nodi in una NUBS; nodi semplici e
multipli; funzioni B-spline e loro supporto; B-spline non nulle in un intervallo
nodale; Curve NUBS; nodi aggiuntivi coincidenti e punto iniziale e finale di una curva NUBS,
guscio convesso globale e locale, controllo locale della curva,
invarianza per trasformazioni affini; punti di controllo coincidenti;
punti di controllo allineati.
- Gi.11/05/06, ore 14.00-16.00, aula 7^ piano, Lezione 27.
Vettore tangente nei punti estremi; derivata di una NUBS;
curve NUBS approssimanti di forma della poligonale di controllo che
le definisce; curve NUBS chiuse e periodiche.
Visionato pacchetto xccurv di xcmodel per la gestione di curve NUBS 2D.
- Lu.15/05/06, ore 16.00-19.00, aula 7^ piano, Lezione 28.
Introduzione alle curve NUBS per interpolazione (interpolazione di punti e punti e tangenti)
e per approssimazione in norma euclidea.
Tool knot-insertion e algoritmo relativo; valutazione della curva in un punto
tramite knot-insertion.
Dimostrazione con il pacchetto xccurv delle applicazioni del tool knot-insertion:
inserzione di un nodo; inserzione inversa fissando un CP; splitting della curva
mediante knot-insertion multiplo; knot refinement globale; knot-refinement locale;
- Ma.16/05/06, ore 14.00-16.00, aula 7^ piano, Lezione 29.
Riassunto delle applicazioni pratiche del tool knot-insertion.
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.
- Gi.18/05/06, ore 14.00-16.00, aula Vitali, Lezione 30.
Rappresentazione quadratica razionale delle sezioni coniche;
determinazione della NURBS arco di cerchio e cerchio (rappresentazione a
9 punti). Dimostrazione, con il pacchetto xccurv, sulle curve NURBS.
Presentazione del sistema di modellazione e resa XCModel 3.0.
- Lu.22/05/06, ore 11.00-13.00, aula Cremona, Lezione 31.
Funzioni NUBS bivariate prodotto tensoriale, funzioni B-spline bivariate,
superfici NUBS in forma parametrica, griglia dei punti di controllo, schema
bidirezionale di curve NUBS 3D, propieta' delle superfici NUBS,
vettori tangente enormale di una superficie NUBS.
Superfici NURBS; funzioni RB-spline bivariate.
Superfici da curve: cilindriche (o per estrusione).
- Lu.22/05/06, ore 16.00-19.00, aula 7^ piano, Lezione 32.
Superfici da curve: superfici di rivoluzione.
Progettazione di superfici classiche come cilindro, cono, sfera, toro, ecc..;
superfici swinging (generalizzazione di rivoluzione); rivoluzione e swinging con curve 3D;
Presentazioni delle funzionalita' del pacchetto XCSurf di XCModel;
dimostrazione su curve 3D e superfici.
- Ma.23/05/06, ore 14.00-16.00, aula 7^ piano, Lezione 33.
Superfici per interpolazione di punti e di curve (skinning)
Superfici NURBS trimmate: applicazioni per la modellazione solida
e per la modellazione gerarchica.
Funzioni Numeric e Interactive nel pacchetto XCSurf;
Cenno ad XCBool e modellazione gerarchica in XCSurf.
- Me.24/05/06, ore 09.00-11.00, aula Tonelli, Lezione 34.
Modellazione gerarchica e implementazione in XCSurf.
OpenGL: utilizzo di curve e superfici di Bezier, NURBS e NURBS trimmate;
tassellazione di NURBS trimmate in OpenGL; tassellazione dinamica;
presentazione di alcuni semplici programmi di esempio.
- Gi.25/05/06, ore 14.00-16.00, aula 7^ piano, Lezione 35.
Demo con Rhinoceros: viste primitive e tool di un un pacchetto commerciale
di modellazione 3D.
Introduzione al ray-tracing per la resa realistica di scene 3D; modello di
illuminazione globale, albero dei raggi, ricorsione e test di arresto, problemi,
tecniche di accelerazione.
- Lu.29/05/06, ore 16.00-19.00, aula 7^ piano, Lezione 36.
Intersezione raggio/superficie; texture nel ray-tracing; antialising nel ray-tracing.
Presentazione della libreria descriptor per la creazione di uno scene-graph mediante codice C;
utilizzo del pacchetto XCRayt di XCModel per la creazione di
uno scene-graph in maniera completamente interattiva.
Setting dei parametri per l'esecuzione del ray tracing.
- Ma.30/05/06, ore 14.00-16.00, aula 7^ piano, Lezione 37.
Ancora su XCRayt di XCMoldel; visionato un modello di una certa complessita';
pagina web di XCMoldel, documentazione e modelli.
Assegnato il II Progetto
Modellazione e Resa ;
presentazione di un progetto di anni precedenti; visionato video
di un progetto di tesi.
Una breve introduzione al photon-mapping.
Torna alla
home page di Giulio Casciola