Grafica (C.d.S. Informatica) A.A.2009/10
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
- Ma.16/02/10, ore 13.30-15.30, aula E2
, 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.
- Gi.18/02/10, ore 13.30-15.30, aula E2
, 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.
(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.
- Ma.23/02/10, ore 13.30-15.30, aula E2
, Lezione 3.
Tipi di frame buffer, 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.
- Gi.25/02/10, ore 13.30-15.30, aula E2
, Lezione 4.
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)
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 (vedi download xprg_0910.tgz).
- Ma. 02/03/10, ore 13.30-15.30, aula E2
, Lezione 5.
Rappresentazione B-Rep (Boundary Representation) di oggetti 3D;
Mesh poligonali 3D; formati .m, .ply, .mesh, wavefront .obj, OFF;
conversione formati e convertitori (vedi archivio converter.tgz)
Elementi di una mesh, strutture dati, editing di mesh.
(vedi Dispensa: Trasformazioni Geometriche e di Vista)
- Gi.04/03/10, ore 13.30-15.30, aula E2
, Lezione 6.
Repository di mesh; pacchetti per visualizzazione di mesh.
Demo di utilizzo di Blender per editing di Mesh 3D.
(vedi archivi trimlibrary.tar.gz e mfiles.tgz).
(vedi lucidi: Mesh poligonali 3D )
(vedi lucidi: Blender: Introduzione al Mesh Editing )
- Ma.09/03/10, ore 13.30-15.30, aula E2
, Lezione 7.
Trasformazioni geometriche 3D; trasformazioni elementari:
traslazione, scala, rotazione. Spazio affine: punti, vettori, combinazioni affini.
Spazio affine: frame, trasformazioni affini, composizione di
trasformazioni mediante prodotto di matrici; trasformazioni elementari:
traslazione, scala, rotazione rispetto agli assi coordinati.
Trasformazioni inverse, composizione di trasformazioni,
trasformazioni composte come rotazione e
scala rispetto ad un asse e a un punto, simmetrie,
- Gi.11/03/10, ore 13.30-15.30, aula E2
, Lezione 8.
Cambio di sistema di riferimento.
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; discussione dei parametri di vista e del loro effetto.
Trasformazione window-viewport con introduzione della piramide di vista e definizione window.
(vedi lucidi: Trasformazioni di Vista (new))
- Ma.16/03/10, ore 13.30-15.30, aula E2
Non c'e' lezione per le Lauree.
- Gi.18/03/10, ore 13.30-15.30, aula E2
, Lezione 9.
Sulla piramide di vista, tronco di piramide (frustum) e necessita' di clipping 3D.
Trasformazione di vista come cambio di base con introduzione del View_Up vector;
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.
- Ma.23/03/10, ore 13.30-15.30, aula E2
, Lezione 10.
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 Dispensa: Real-Time Rendering)
(vedi lucidi: Real-Time Rendering)
- Gi.25/03/10, ore 13.30-15.30, aula E2
, Lezione 11.
Coordinate Baricentriche (esempio di applicazione: interpolazione colore);
coordinate baricentriche e rasterizzazione di triangoli;
profondita' di un pixel; relazione fra le coordinate baricentriche
di un segmento 3D e del suo proiettato.
- Lu.30/03/10, ore 13.30-15.30, aula E2
, Lezione 12.
Trasformazione prospettica modificata;
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;
idea dell'algoritmo di scan conversion per poligoni.
- Me.08/04/10, ore 13.30-15.30, aula E2
, Lezione 13.
Algoritmo di scan conversion per poligoni generici;
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.
(vedi lucidi: Algoritmi di Rasterizing)
- Ma.13/04/10, ore 13.30-15.30, aula E2
, Lezione 14.
Proposti 3 esercizi da realizzare modificando il codice persp_cube_image.c.
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)
- Gi.15/04/10, ore 13.30-15.30, aula E2
, Lezione 15.
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.
(vedi lucidi: Texture nella CG)
- Ma.20/04/10, ore 13.30-15.30, aula E2
, Lezione 16.
Solid texture o 3D texture, texture procedurali, bump-mapping, multitexturing.
Pipeline grafica, schede grafiche e pipeline OpenGL.
Introduzione alla libreria OpenGL; GL, GLX, GLU, GLUT,
macchina a stati finiti, un programma esempio con solo GL e GLX.
- Gi.22/04/10, ore 13.30-15.30, aula E2
, Lezione 17.
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_0910.tgz con programmi esempio e tutorial.
(vedi lucidi: Pipeline Grafica OpenGL)
(vedi lucidi: Libreria Grafica OpenGL (parte I))
- Ma.27/04/10, ore 13.30-15.30, aula E2
, Lezione 18.
Ancora su trasformazioni di modellazione, di vista e di proiezione nelle OpenGL;
programmi esempio e tutorial; il colore; depth Buffer e gestione rappresentazione
hidden surface; alcuni tutorials.
- Ma.04/05/10, ore 13.30-15.30, aula E2
, Lezione 19.
Illuminazione in OpenGL (luci e materiali); shading; alcuni tutorials e programmi.
Texture in OpenGL: texture object, applicare texture, two-part mapping,
tutorial su texture, semplici programmi di esempio.
(vedi lucidi: Texture nelle OpenGL (parte II))
- Ma.11/05/10, ore 13.30-15.30, aula E2
, Lezione 20.
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.
- Gi.13/05/10, ore 13.30-15.30, aula E2
, Lezione 21.
Un esempio di rendering avanzato usando la glBlendFunc: la trasparenza.
Un esempio di rendering avanzato usando lo stencil buffer: le ombre.
(vedi lucidi: Rendering Avanzato in OpenGL)
Introduzione alla libreria SDL (Simple Directmedia Layer) e a SDL/OpenGL;
(vedi lucidi: SDL/OpenGL)
- Ma.18/05/10, ore 13.30-15.30, aula E2
, Lezione 22.
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 18/05/10
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