Grafica (C.d.S. Magistrale in Informatica) A.A.2010/11
(2^ semestre, 2^ anno)
Esame progetto e orale
CFU 6
Docente Prof. Giulo Casciola
Scopo
Dare i fondamenti della grafica 3D al calcolatore, tra cui i concetti di modellazione poligonale e
resa in tempo reale. Modellazione e rappresentazione grafica di scene 3D mediante opportuni
software.
Contenuto
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.
Testi Consigliati
- A.Watt, 3D Computer Graphics, II edition, Addison Wesley (1993);
- J.D.Foley, A.Van Dam, S.K.Feiner, J.F.Hughes, Computer Graphics
principles and practice, II edition, Addison Wesley (1990).
- R.Scateni, P.Cignoni, C.Montani, R.Scopigno, Fondamenti di grafica
tridimensionale interattiva, McGraw-Hill (2005)
Iscrizione al Corso:
file txt da rispedire per e-mail al docente.
Orario delle Lezioni
Lun. ore 08.30-10.30 Sala Riunioni 2 (Dip. Scienze dell'Informazione)
Ven. ore 08.30-10.30 Sala Riunioni 2 (Dip. Scienze dell'Informazione)
Lezioni e Argomenti trattati
- Lu.21/02/11, ore 08.30-10.30, Sala Riunioni 2
, Lezione 1.
Introduzione al corso: equazione "grafica 3D Real Time=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.23/02/11, ore 11.30-13.30, Sala Riunioni 2
, 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.
Hardware per un sistema grafico interattivo: architettura
di un display raster scan, Monitor, Frame Buffer, DPU.
Tipi di Frame Buffer, grafica con CPU e RAM e DPU, grafica con 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)
- Lu.28/02/11, ore 08.30-10.30, Sala Riunioni 2
, Lezione 3.
Programmazione Event Driven.
Sistema X Window: architettura del sistema, X Client, rete,
X Server, X Protocol, Xlib, Window Manager, XClient che usa Toolkit.
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)
- Ve.04/03/11, ore 08.30-10.30, Sala Riunioni 2
, Lezione 4.
Alcune esempi di XClient (xterm, xclock, xlogo, xcalc, xedit, bitmap, xfig),
e informazioni su X (man, xdpyinfo, 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_1011.tgz).
- Lu. 07/03/11, ore 08.30-10.30, Sala Riunioni 2
, Lezione 5.
Introduzione alla libreria SDL (Simple Directmedia Layer);
(vedi lucidi: SDL)
Elementi di programmazione SDL: esaminati alcuni semplici programmi
che fanno uso di SDL. Messo a disposizione un archivio di
semplici programmi da provare e modificare (vedi download SDLprg_1011.tgz).
- Ve.11/03/11, ore 08.30-10.30, Sala Riunioni 2
, Lezione 6.
Algoritmo di linea incrementale, algoritmo di linea di Bresenham, algoritmo
Two Array Mask. Visionate le relative implementazioni per XWindow (archivio xpr1011.tgz).
(vedi lucidi: Algoritmi di grafica 2d)
- Lu.14/03/11, ore 08.30-10.30, aula Sala Riunioni 2
, Lezione 7.
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 lucidi: Mesh poligonali 3D )
- Ve.18/03/11, ore 08.30-10.30, aula Sala Riunioni 2
, Lezione 8.
Ancora su Mesh 3D. Repository di mesh; pacchetti per visualizzazione di mesh.
Demo di utilizzo di Blender per editing di Mesh 3D.
(vedi lucidi: Blender: Introduzione al Mesh Editing )
- Lu.21/03/11, ore 08.30-10.30, aula Sala Riunioni 2
, Lezione 9.
Trasformazioni geometriche 3D; trasformazioni elementari:
traslazione, scala, rotazione. Spazio affine: punti, vettori, combinazioni affini.
Spazio affine: sistema di riferimento, trasformazioni affini, composizione di
trasformazioni mediante prodotto di matrici; trasformazioni elementari:
traslazione, scala, rotazione rispetto agli assi coordinati.
Composizione di trasformazioni, trasformazioni inverse.
- Ve.25/03/11, ore 08.30-10.30, aula Sala Riunioni 2
, Lezione 10.
Trasformazioni composte come rotazione e scala rispetto ad un asse e a un punto.
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.
Trasformazione di vista come cambio di base con introduzione del View_Up vector;
(vedi lucidi: Trasformazioni di Vista)
- Lu.28/03/11, ore 08.30-10.30, aula Sala Riunioni 2
, Lezione 11.
Discussione dei parametri di vista e del loro effetto.
Trasformazione window-viewport.
Piramide di vista, tronco di piramide (frustum) e necessita' di clipping 3D.
Demo su programma persp_cube.c (in xprg1) e implementa la trasformazione di vista
visualizzando un cubo.
Proposti 6 esercizi da realizzare modificando il codice persp_cube.c.
Clipping 2D di linee: algoritmo di Cohen-Sutherland.
Estensione dell'algoritmo di Clipping 2D di linee
nel caso 3D ad un tronco di piramide.
(vedi lucidi: Clipping di linee)
- Ve.08/04/11, ore 08.30-10.30, aula Sala Riunioni 2
, Lezione 12.
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)
Clipping 2D di poligoni: algoritmo di Sutherland-Hodgman; estensione al caso 3D.
(vedi lucidi: Clipping Polygons)
- Lu.11/04/11, ore 08.30-10.30, aula Sala Riunioni 2
, Lezione 13.
Coordinate Baricentriche (esempio di applicazione: rasterizzazione di triangoli e interpolazione colore);
mostrati (archivio xprg.tgz) programmi esempio che in X che implementano
la rasterizzazione di triangoli con facce colorate e texturate, via coord. baricentriche.
Profondita' di un pixel; relazione fra le coordinate baricentriche di un segmento 3D e del suo proiettato.
Trasformazione prospettica modificata;
- Ve.15/04/11, ore 08.30-10.30, aula Sala Riunioni 2
, Lezione 14.
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.
Rivisto algoritmo Z-buffer per hidden-surface.
Determinazione colore pixel da punto originale per rappresentazione colore corretta.
- Lu.18/04/11, ore 08.30-10.30, aula Sala Riunioni 2
, Lezione 15.
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 colori, componenti normali, ecc..
Proposti 3 esercizi da realizzare modificando il codice persp_cube_image.c.
(vedi lucidi: Algoritmi di Rasterizing)
Breve introduzione alla elaborazione di immagini per la rasterizzazione con texture.
(vedi lucidi: Elaborazione di Immagini)
- Ve.29/04/11, ore 08.30-10.30, aula Sala Riunioni 2
, Lezione 16.
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)
Texture: modifica di attributi del modello e delle normali della superficie dell'oggetto;
texture mapping 2D.
- Lu.02/05/11, ore 08.30-10.30, aula Sala Riunioni 2
, Lezione 17.
Gestione di texture mapping 2D; magnification, minification (mip-mapping); two-part mapping,
environment mapping. Solid texture o 3D texture, texture procedurali, bump-mapping, multitexturing.
(vedi lucidi: Texture nella CG)
Le ombre (shadowing); ombre su piani.
(vedi lucidi: Shadow)
- Lu.09/05/11, ore 08.30-10.30, aula Sala Riunioni 2
, Lezione 18.
Shadow Buffer per la determinazione delle ombre in un algoritmo Z-Buffer. Soft Shadow.
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. Display List.
(vedi lucidi: GPU e Pipeline Grafica OpenGL)
(vedi lucidi: Libreria Grafica OpenGL (parte I))
- Ve.13/05/11, ore 08.30-10.30, aula Sala Riunioni 2
, Lezione 19.
Display list e double buffer; programmazione con le GLUT; un programma esempio che usa GL e GLUT;
pipeline delle trasformazioni in OpenGL: trasformazioni di modellazione,
trasformazioni di vista e di proiezione; programmi esempio e tutorial.
- Lu.16/05/11, ore 08.30-10.30, aula Sala Riunioni 2
, Lezione 20.
Depth Buffer per la rappresentazione con rimozione parti nascoste;
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))
- Ve.20/05/11, ore 08.30-10.30, aula Sala Riunioni 2
, Lezione 21.
Libreria SDL (Simple Directmedia Layer) ed 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)
Progetto d'esame
3D Game con OpenGL Assegnato il giorno 20/05/11
Download Dispense corso
Dispensa:
Algoritmi di Grafica 2D (file .pdf)
Dispensa:
Mesh 3D Poligonali e Trasformazioni (file .pdf)
Dispensa:
Real-Time Rendering (file .pdf)
Dispensa:
Libreria Grafica OpenGL (file .pdf)
Download pacchetti corso
xprg_1011.tgz (programmi che utilizzano solo Xlib)
SDLprg_1011.tgz (programmi che utilizzano solo SDL)
converter.tgz
opengl_1011.tgz
progetto_car.tgz
Siti
ucsc links
Siti vari
Siti OpenGL
Torna alla
home page di Giulio Casciola