Grafica (C.d.S. Informatica) A.A.2008/09
Modulo "Real-Time Rendering"
Scopo
Dare i fondamenti della grafica 3D al calcolatore, sviluppando
i concetti di modellazione poligonale e di resa in tempo reale.
Contenuto
Modulo Real-Time Rendering:
Sistemi raster-scan, Xwindow e librerie grafiche, programmazione X.
Trasformazioni geometriche 3D, trasformazioni di vista, proiezioni
prospettica e parallela, rappresentazione grafica di mesh 3D,
algoritmi di rendering con rimozione delle parti nascoste (hidden line e
hidden surface), modelli di illuminazione e algoritmi di shading
(Z-buffer). Introduzione alla libreria grafica OpenGL.
Il corso prevede l'utilizzo del sistema XWindow, della libreria OpenGL
e la visione/utilizzo di alcuni pacchetti commerciali di modellazione poligonale.
Lezioni e Argomenti trattati
- Lu.16/02/09, ore 16.30-18.30, 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)
Introduzione ad alcune applicazioni della grafica 3D.
- Me.18/02/09, ore 15.30-17.30, aula Pincherle
, Lezione 2.
Altre applicazioni della grafica 3D; proiezione di alcuni
cortometraggi come Luxor Junior e Geri's Game della Pixar Animation Studios
e Gone Nutty della Blue Sky Studios.
- Lu.23/02/09, ore 16.30-18.30, aula Pincherle
, Lezione 3.
(vedi Dispensa: Hardware e Software per la Grafica)
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, coda degli eventi, funzioni di libreria che gestiscono la coda degli eventi.
(vedi lucidi: Hardware e Software per la Grafica)
- Me.25/02/09, ore 15.30-17.30, aula Pincherle
, Lezione 4.
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 buffer.
Risorse, proprieta' e atomi, caratteristiche delle window.
Gerarchia delle window, mapping e visibility, disegno e graphics context, eventi.
(vedi lucidi: Sistema XWindow)
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 (vedi download xprg_0809.tgz).
- Lu. 02/03/09, ore 16.30-18.30, aula Pincherle
, Lezione 5.
Alcune esempi di XClient (xterm, xclock, xlogo, xcalc, xedit, bitmap, xfig),
e informazioni su X (man, xdpyinfo, startx, xorg.conf, Depth e Backingstore).
Rappresentazione B-Rep (Boundary Representation) di oggetti 3D;
Mesh poligonali 3D; formati .m, .ply, .mesh, wavefront .obj, OFF;
(vedi Dispensa: Trasformazioni Geometriche e di Vista)
- Me.04/03/09, ore 15.30-17.30, aula Pincherle
, Lezione 6.
Conversione formati e convertitori (vedi archivio converter.tgz)
Elementi di una mesh, strutture dati, editing di mesh;
Repository di mesh; pacchetti per visualizzazione di mesh.
(vedi archivi trimlibrary.tar.gz e mfiles.tgz).
(vedi lucidi: Mesh poligonali 3D )
- Lu.09/03/09, ore 16.30-18.30, aula Pincherle
, Lezione 7.
Demo di utilizzo di Blender per editing di Mesh 3D.
Trasformazioni geometriche 3D; trasformazioni elementari:
traslazione, scala, rotazione. Spazio affine: punti, vettori, combinazioni affini.
- Me.11/03/09, ore 15.30-17.30, aula Pincherle
, Lezione 8.
Spazio affine: 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.
- Lu.16/03/09, ore 16.30-18.30, aula Pincherle
, Lezione 9.
Cambio di base e cambio 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) 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.
(vedi lucidi: Trasformazioni di Vista (new))
- Me.18/03/09, ore 15.30-17.30, aula Pincherle
, Lezione 10.
Demo su programma persp_cube.c che usa Xlib e implementa la trasformazione di vista
visualizzando un cubo (archivio xprg_0809.tgz, directory xprg1).
Proposti 6 esercizi da realizzare modificando il codice persp_cube.c.
Clipping 2D di linee: algoritmo di Cohen-Sutherland.
Clipping 2D di poligoni: algoritmo di Sutherland-Hodgman.
- Lu.23/03/09, ore 16.30-18.30, aula Pincherle
, Lezione 11.
Estensione dell'algoritmo di Clipping 2D di linee
nel caso 3D ad un tronco di piramide.
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)
- Me.25/03/09, ore 15.30-17.30, aula Pincherle
, Lezione 12.
Coordinate Baricentriche (esempio di applicazione: interpolazione colore);
coordinate baricentriche e rasterizzazione di triangoli;
profondita' di un pixel; relazione fra le coordinate baricentriche;
trasformazione prospettica modificata.
(vedi Dispensa: Real-Time Rendering)
- Lu.30/03/09, ore 16.30-18.30, aula Pincherle
, Lezione 13.
Verifica di trasformazione di rette in rette e di piani in piani;
significato della trasformazione in termini di deformazione dello spazio;
determinazioni dei parametri alpha e beta; determinazione profondita' Z di un pixel.
Rivisitata Trasformazione di Vista per Z-Buffer.
Rasterizzazione: algoritmo di linea incrementale parametrico;
algoritmo di scan conversion per poligoni generici.
- Me.01/04/09, ore 15.30-17.30, aula Pincherle
, Lezione 14.
Rasterizzazione: specializzazione per triangoli;
estensione per scan conversion di triangoli con componenti colore; estensione con
altri parametri quali profondita' Z, coordinate baricentriche, normali.
Coord. baricentriche e interpolazione bilineare; interpolazione immagine;
mostrati (archivio xprg.tgz) programmi esempio che usano solo Xlib e implementano
la rasterizzazione di triangoli con facce colorate e texturate.
Algoritmo di linea di Bresenham; algoritmo di scan conversion TAM.
(vedi lucidi: Algoritmi di Rasterizing)
- Me.15/04/09, ore 15.30-17.30, aula Pincherle
, Lezione 15.
Introduzione al modello di illuminazione di Phong:
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.
(vedi lucidi: Modello di Illuminazione di Phong)
- Lu.20/04/09, ore 16.30-18.30, aula Pincherle
, Lezione 16.
Le ombre (shadow) nel RTR; ombre su piani e Shadow Buffer per la determinazione
delle ombre in un algoritmo Z-Buffer.
(vedi lucidi: Shadow)
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); two-part mapping; solid texture o 3D texture.
- Me.22/04/09, ore 15.30-17.30, aula Pincherle
, Lezione 17.
Texture: texture procedurali, bump-mapping, multitexturing.
(vedi lucidi: Texture nella CG)
Pipeline grafica, schede grafiche e pipeline OpenGL.
(vedi lucidi: Pipeline Grafica OpenGL)
Introduzione alla libreria OpenGL; GL, GLX, GLU, GLUT,
macchina a stati finiti, un programma esempio con solo GL e GLX.
(vedi Dispensa: Libreria Grafica OpenGL)
- Lu.27/04/09, ore 16.30-18.30, aula Pincherle
, Lezione 18.
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;
- Me.29/04/09, ore 15.30-17.30, aula Pincherle
, Lezione 19.
Ancora su trasformazioni di modellazione, di vista e di proiezione nelle OpenGL;
programmi esempio e tutorial; il colore e l'illuminazione (luci e materiali);
depth Buffer e gestione rappresentazione hidden surface e shading;
alcuni tutorials.
Messo a disposizione archivio opengl_0809.tgz con programmi esempio e tutorial;
(vedi lucidi: Libreria Grafica OpenGL (parte I))
- Lu.04/05/09, ore 16.30-18.30, aula Pincherle
, Lezione 20.
Texture in OpenGL: texture object, applicazione texture, two-part mapping,
tutorial su texture.
(vedi lucidi: Texture nelle OpenGL (parte II))
tutorial su texture e semplici programmi esempio.
- Me.6/05/09, ore 15.30-17.30, aula Pincherle
, Lezione 21.
OpenGL: utilizzo di curve e superfici di Bezier, NURBS e NURBS trimmate;
tassellazione di NURBS trimmate in OpenGL; tassellazione dinamica;
Il progetto GLspy.
(vedi lucidi: Libreria Grafica OpenGL (parte III))
Rendering Avanzato con le OpenGL: allocazione di buffer e abilitazione di test.
Un esempio di rendering avanzato usando la glBlendFunc: la trasparenza.
(vedi lucidi: Rendering Avanzato in OpenGL)
- Lu.11/05/09, ore 16.30-18.30, aula Pincherle
, Lezione 22.
Introduzione alla libreria SDL (Simple Directmedia Layer) e a SDL/OpenGL;
(vedi lucidi: SDL/OpenGL)
Esempio di progettazione di un codice di grafica 3D Real-Time (vedi archivio
progetto_car.tgz).
(vedi lucidi: Esempio SDL/OpenGL)
Assegnato e discusso Progetto_RTR.
3D Game con OpenGL
Progetto d'esame
3D Game con OpenGL Assegnato il giorno 11/05/09
Download pacchetti corso
xprg_0809.tgz
converter.tgz
mfiles.tgz
README_xcmodel
trimlibrary.tar.gz
opengl_0809.tgz
progetto_car.tgz
Siti
ucsc links
Siti vari
Siti OpenGL
Torna alla
home page di Giulio Casciola