Grafica (C.d.S. Informatica) A.A.2006/07
Argomenti trattati a Lezione
- Lu.19/02/07, ore 16.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: Introduzione al Corso)
Descrizione di alcune applicazioni della grafica 3D.
- Ma.20/02/07, 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
(vedi lucidi: Applicazioni)
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.
- Gi.22/02/07, ore 14.00-16.00, aula 7^ piano, Lezione 3.
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
(vedi lucidi: Hardware e Software per la Grafica)
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.
- Lu.26/02/07, ore 16.00-19.00, aula 7^ piano, Lezione 4.
Risorse, proprieta' e atomi,
caratteristiche delle window, gerarchia delle window, mapping e visibility,
disegno e graphics context, eventi.
(vedi lucidi: Sistema XWindow)
Alcune esempi di XClient (xterm, xclock, xlogo, xcalc, xedit, bitmap, xfig),
e informazioni su X (man, xdpyinfo, startx, XF86Config-4, depth e backing-store).
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 (xprg0.tgz).
- Ma.27/02/07, ore 14.00-16.00, aula 7^ piano, Lezione 5.
Rappresentazione B-Rep (Boundary Representation) di oggetti 3D;
Mesh poligonali 3D; formati .m, .ply, .mesh, wavefront .obj;
conversione formati e convertitori (archivio converter.tgz
archivio trimlibrary.tgz con viewer xmview per file .m).
(vedi lucidi: Mesh poligonali 3D )
Presentazione di Savio Dimatteo: "Acquisizione e Riscostruzione con Scanner 3D"
e demo di acquisizione con lo scanner Microscribe.
- Gi. 01/03/07, ore 14.00-16.00, aula 7^ piano, Lezione 6.
Trasformazioni geometriche 3D; trasformazioni elementari:
traslazione, scala, rotazione. Spazio affine,
trasformazioni geometriche 3D in forma matriciale, composizione di
trasformazioni mediante prodotto di matrici, trasformazioni elementari:
traslazione, scala, rotazione rispetto agli assi coordinati, shear.
- Lu.05/03/07, ore 16.00-19.00, aula 7^ piano, Lezione 7.
Trasformazioni inverse, composizione di trasformazioni,
trasformazioni composte come rotazione e
scala rispetto ad un asse e a un punto, simmetrie,
trasformazione di sistema di riferimento.
Definizione dei parametri di vista.
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)
con determinazione delle formule per il viewing 3D;
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).
Mostrato programma persp_cube.c che usa Xlib e implementa la trasformazione di vista
visualizzando un cubo (archivio xptg1.tgz).
(vedi lucidi: Trasformazioni di Vista)
- Ma.06/03/07, ore 14.00-16.00, aula 7^ piano, Lezione 8.
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.
Proposti 6 esercizi da realizzare modificando il
codice persp_cube.c nell'archivio messo a disposizione:
1.gestione interattiva (mouse) dei parametri di vista (angoli thata e phi);
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 mediante un movimento camera predefinito;
6.aggiunta di una finestra in cui visualizzare l'oggetto e l'osservatore
(con i suoi parametri di vista) da un secondo punto di vista.
- Gi.08/03/07, ore 15.00-17.00, aula 7^ piano, Lezione 9.
Sull'intersezione per il clipping 3D;
trasformazione di vista come cambio di base con introduzione del view_up
vector;
Ancora un esercizio da realizzare modificando il
codice persp_cube.c nell'archivio messo a disposizione:
7.inserire la trasformazione di vista con view-up vector;
Introduzione agli algoritmi di real-time rendering: depth-cueing, hidden-line
e hidden-surface. 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.
(vedi lucidi: Real-Time Rendering)
- Lu.12/03/07, ore 16.00-19.00, aula 7^ piano, Lezione 10.
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;
- Ma.13/03/07, ore 14.00-16.00, aula 7^ piano, Lezione 11.
Coordinate Baricentriche; rasterizzazione di triangoli; interpolazione colore;
interpolazione immagine;
mostrati (archivio xprg2.tgz) programmi esempio che usano solo Xlib e implementano
la rasterizzazione di triangoli con facce colorate e texturate.
- Gi.15/03/07, ore 15.00-17.00, aula 7^ piano, Lezione 12.
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; determinazione profondita' Z di un pixel;
Pipeline Grafica per Z-Buffer;
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;
- Lu.19/03/07, ore 16.00-19.00, aula 7^ piano, Lezione 13.
Algoritmi di linea incrementale parametrico e di Bresenham;
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.
Algoritmo TAM per poligoni convessi o vericalmente convessi via algoritmo di linea di Bresenham.
(vedi lucidi: Algoritmi di Rasterizing)
- Ma.20/03/07, ore 14.00-16.00, aula 7^ piano, Lezione 14.
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.
- Gi.21/03/07, ore 15.00-17.00, aula 7^ piano, Lezione 15.
Interpolazione bilineare; riprese tecniche di shading e loro caratteristiche.
Visionato pacchetto che usa la libreria trimlib.a per la rappresentazione shading
di mesh; scelte progettuali e particolarita' per garantire il real-time.
- Lu.26/03/07, ore 16.00-19.00, aula 7^ piano, Lezione 16.
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).
Messo a disposizione archivio opengl.tgz con programmi esempio e tutorial;
primitive geometriche, pipeline delle trasformazioni: trasformazioni di modellazione,
trasformazioni di vista e di proiezione;
display list; color buffer e gestione double buffer;
- Ma.27/03/07, ore 14.00-16.00, aula 7^ piano, Lezione 17.
Ancora su trasformazioni di modellazione, di vista e di proiezione nelle OpenGL;
programmi esempio e tutorial; il colore e l'illuminazione (luci e materiali) nelle OpenGL.
(vedi lucidi: Libreria Grafica OpenGL)
- Gi.29/03/07, ore 15.00-17.00, aula 7^ piano, Lezione 18.
Ancora su luci e materiali nelle OpenGL;
tecniche di shading, normali; alcuni tutorials e programmi esempio.
Depth Buffer e gestione rappresentazione hidden surface e shading.
Un esempio di rendering avanzato usando la glBlendFunc: la trasparenza.
- Lu.02/04/07, ore 16.00-19.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; magnification, minification
(mip-mapping), aliasing e antialiasing;
Two-part mapping; solid texture o 3D texture; texture procedurali; bump-mapping;
multitexturing.
Texture in OpenGL: texture object, applicazione texture, two-part mapping,
tutorial su texture.
(vedi lucidi: Texture nella CG)
(vedi lucidi: Texture nelle OpenGL)
- Ma.03/04/07, ore 14.00-16.00, aula 7^ piano, Lezione 20.
Texture in OpenGL: mip-mapping; tutorial su texture e semplici programmi esempio (messo a
disposizione archivio opengl2.tgz).
Assegnato I Progetto
3D Game con OpenGL
- Gi.12/04/07, ore 15.00-17.00, aula 7^ piano, Lezione 21.
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.
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; OpenGL e buffer per gestire ombre ed altro.
(vedi lucidi: Shadowing ed Oltre)
- Lu.16/04/07, ore 16.00-19.00, aula 7^ piano, Lezione 22.
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; scambio modelli fra sistemi di modellazione e formati.
- Ma.17/04/07, 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, grafico della curva, curva regolare e regolare a tratti, curva semplice,
parametrizzazione, cambio di parametro, prorieta' invarianti per parametrizzazione,
retta tangente, vettore tangente, funzione velocita', vettore normale e binormale,
vettore curvatura, curvatura e raggio di curvatura.
- Gi.19/04/07, ore 15.00-17.00, aula 7^ piano, Lezione 24.
Ancora sui richiami: inversione di una curva; continuita' C^k e G^k.
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 (C^0, C^1, G^1, ecc.).
(vedi lucidi: Curve di Bezier)
- Lu.23/04/07, ore 16.00-19.00, aula 7^ piano, Lezione 25.
Funzioni spline (NUBS) a nodi multipli; spazio e dimensioni; partizione estesa e base
delle B-spline: definizione via formula ricorrente,
valutazione via formula ricorrente; relazione fra numero di CP, ordine e numero nodi;
proprieta' e loro grafico, funzioni B-spline e loro supporto; B-spline non nulle in un intervallo
nodale.
- Ma.24/04/07, ore 14.00-16.00, aula 7^ piano, Lezione 26.
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;
- Gi.03/05/07, ore 15.00-17.00, aula 7^ piano, Lezione 27.
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.
Tool knot-insertion e demo con XCCurv di inserzione di un nodo,
knot-refinement globale e knot-refinement locale.
- Lu.07/05/07, ore 16.00-19.00, aula 7^ piano, Lezione 28.
Knot-insertion e algoritmo relativo; valutazione di curve NUBS
tramite knot-insertion (inserzione multipla); suddivisione o splitting; valutazione
della derivata; invers knot insertion; altre applicazioni.
Presentazione del progetto XCModel.
(vedi lucidi: Progetto XCModel)
- Ma.08/05/07, ore 14.00-16.00, aula 7^ piano, Lezione 29.
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.
Rappresentazione quadratica razionale delle sezioni coniche;
determinazione della NURBS arco di cerchio.
- Gi.10/05/07, ore 15.00-17.00, aula 7^ piano, Lezione 30.
Determinazione della NURBS cerchio (rappresentazione a 9 punti).
Introduzione alle curve NUBS per interpolazione (interpolazione di punti)
e per approssimazione in norma euclidea.
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.
- Lu.14/05/07, ore 16.00-19.00, aula 7^ piano, Lezione 31.
Propieta' delle superfici NUBS,
vettori tangente e normale di una superficie NUBS.
Superfici NURBS; funzioni RB-spline bivariate.
Superfici da curve: bilineari e cilindriche (o per estrusione);
Presentazioni delle funzionalita' del pacchetto XCSurf di XCModel;
dimostrazione su curve 3D e superfici.
- Ma.15/05/07, ore 14.00-16.00, aula 7^ piano, Lezione 32.
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;
superfici per interpolazione di di curve (skinning)
- Gi.17/05/07, ore 15.00-17.00, aula Pincherle, Lezione 33.
Demo con il pacchetto XCSurf su costruzione di superfici da curve;
funzioni Numeric e Interactive;
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.21/05/07, ore 11.00-13.00, aula Tonelli, Lezione 34.
Ancora su tecnisce di accelerazione; intersezione raggio/superficie; texture; antialiasing.
Presentazione della libreria descriptor per la creazione di uno scene-graph mediante codice C;
- Lu.21/05/07, ore 16.00-19.00, aula 7^ piano, Lezione 35.
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;
Assegnato il II Progetto
Modellazione e Resa ;
pagina web di XCMoldel: image-gallery (tutorial e modelli);
presentazione di progetti di anni precedenti;
- Ma.22/05/07, ore 14.00-16.00, aula 7^ piano, Lezione 36.
Superfici NURBS trimmate: applicazioni per la modellazione solida
e per la modellazione gerarchica. Cenno ad XCBool e modellazione gerarchica in XCSurf.
Utilizzo di XCRayt per la creazione di uno scene-graph in maniera interattiva.
- Gi.24/05/07, ore 15.00-17.00, aula 7^ piano, Lezione 37.
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.
Introduzione al Photon Mapping; una implementazione in hrayt di XCModel.
Torna alla
home page di Giulio Casciola