Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione 17: dose finale
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Alcuni argomenti che non abbiamo trattato (o abbiamo trattato poco) Modelling: –superfici di suddivisione –NURBS Paradigmi alternativi di rendering: –raytracing (transform) –radiosity (lighting) Altro, nel paradigma basato su rasterizzazione: –bump-maps –HDR images –HW programmabile
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione 16: dose finale Modelling: superfici di suddivisione
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Superfici di suddivisione Modo molto diffuso per costruire mesh –1: fare mesh di controllo a bassissima risoluzione a mano –2: raffinarla automaticamente iterativamente (e ad ogni interazione si aggiungono facce e vertici) molti schemi matematici differenti –con diverse peoprietà
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Superfici di suddivisione Esempio: schema butterfly (per mesh triangolari) –e' uno degli schemi 1=>4 (in un passo di suddivisione, da ogni triangolo se ne ottengono 4) (aggiunta di un vertice per ogni edge) –MA... quali coordinate assegnare al nuovo vertice? Ogni schema di suddivisone ha la sua formula. Ad esempio... Passo di suddivisone
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a POS( ) = ( POS( ) + POS( ) ) + ( POS( ) + POS( ) ) + ( POS( ) + POS( ) + POS( ) + POS( ) ) Superfici di suddivisione Esempio: schema butterfly NB: i vertici "adiacenti" sono defininti univocamente sse la mesh e' two-manifold!
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Superfici di suddivisione mesh di controllo mesh finale
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Superfici di suddivisione Anche iterativamente: 1- Modelling base 2- suddivisione 3- Ritocco 4- Goto 2 (fino a raggiungimento risultato voluto alla risuolzione voluta)
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione 16: dose finale Modelling: NURBS e b-splines
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Bézier curve (o Bézier spline) Bézier curve di grado k: insieme di k+1 punti ("di controllo") che definiscono una curva (in R n con n = 2, 3...) x y x0x1x2x3 y0 y2 y3 Bézier curve (di grado 3) uniformeBézier curve (di grado 3) non-uniforme x y (x0, y0) (x1, y1) (x2, y2) (x3, y3) (quando xi = i x const )(punti di controllo qualunque - ma ordinati)
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Bézier curve cubiche (-- di grado 3) (o Bézier spline cubiche) Curva parametrica x y P3P3 P2P2 P1P1 P0P0 B(0) B(0.5) B(1) B(0.25) B(0.7) P3P3 P2P2 P1P1 P0P0 Alcune caratteristiche: - indipendente da trasformazioni affini - tangenti negli estremi - inclusione nel quadrilatero tangente inclusa nel quadri- latero
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Bézier curve cubiche (-- di grado 3) (o Bézier spline cubiche) Usate: –come primitiva di disegno 2D curve continue con derivata continua –come path nelle animazioni (in 3D) velocita' e pos definite agli estremi temporali del moto
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a NURBS: Non Uniform Rational Bézier spline Estensione a superfici:
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione 16: dose finale Altri Paradigmi di Rendering: RAY-TRACING
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Ray-Tracing In questo corso abbiamo visto Rendering... – Real Time (o almeno interattivo) – Basato sull'HW – Rasterization based...
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Ray-Tracing Idea: –per ogni pixel sullo schermo: mando un raggio (il "raggio primario" di quel pixel) trovo la sua 1ma intersezione con un oggetto della scena
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Ray-Tracing Implementazione: –tutta basata su intersezione raggio-primitive (che va super-ottimizzata)
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Ray-Tracing Facile fare: ombre portate (nette) raggio primario raggio di shadowing (interseca, quindi il punto e' in ombra)
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Ray-Tracing Facile fare: riflessioni speculari (anche multiple) raggio primario raggio di riflessione
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Ray-Tracing Facile fare: semitrasparenze con rifrazioni raggio primario raggio di riflessione raggio di rifrazione
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Ray-Tracing: tipici esempi di risultati ( Advanced Rendering Toolkit - Alexander Wilkie )
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Ray-Tracing: tipici esempi di risultati ( Advanced Rendering Toolkit - Alexander Wilkie )
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Ray-Tracing : tipici esempi di risultati
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Ray-Tracing : costo Task principale: –computo dell'intersezione fra RAGGIO 3D e PRIMITIVE 3D E' computazionalmente caro –costanti alte –ma in verità SUBLINEARE col numero di primitive se vengono usate strutture dati adeguate In pratica, usato solo per rendering off-line Nota: non usa nessun HW specializzato –ma la CPU normale
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Ray-Tracing: HW apposito Scene: 5 alberi (milionate di triangoli) 28mila girasoli (11 tipi), 35K triangoli ciascuno. OpenRT Project inTrace Realtime Ray Tracing Technologies GmbH MPI Informatik, Saarbrueken - Ingo Wald 2004 HW specializzato per fare RayTracing. Per ora, solo prototipi nei laboratori. Stessa idea base (parallelizzare). Implementazione del tutto differente dal nostro pipeline di rasterizzazione. Sfonderà?
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione 16: dose finale Altri Paradigmi di Rendering: Radiosity
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Radiosity Modo per fare illuminazione globale Gestisce bene riflessioni multiple diffuse –ciò che noi avevamo approssimato sommariamente col termine AMBIENT
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Radiosity: Concetto Dividere la scena in pezzetti –circa uguali –(non come i nostri triangoli...)
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Radiosity: Concetto Dividere la scena in pezzetti Per ogni coppia di pezzetti i e j –calcolare quanta luce... che parte da i e si diffonde in tutte le direzioni (DIFFUSE!) –... raggiunge j Alcuni pezzetti emanano luce propria (le luci!) –gli altri diffondono solo quella che gli arriva da fuori Poi risolvere tutto (facile a dirsi) la matriciona corrsipondente e' detta Form Factor
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Radiosity: Come Vecchia scuola: –invertire una matrice enorme Come si fa davvero: –metodi randomizzati stocastici (Monte Carlo)
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Radiosity: Costo E troppo caro da calcolare in tempo reale –e sarà cosi a lungo Ma... il risultato di questa computazione NON dipende dal punto di vista! (è "view independent") –può essere salvato nella scena come colore per vertice in una tessitura etc –e renderizzato real time tramite rasterizzazione: almeno finchè cambia solo il punto di vista –(ne' l'illuninazione ne' la scena) togliendo il lighting (almento le componenti AMBIENT e DIFFUSE)
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Radiosity: esempi di risultati
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Torniamo al Rendering basato su Rasterizzazione eseguito su HW grafico specializzato
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione 16: dose finale Bump-Mapping
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Bump-Mapping Frammenti & attributi interpolati Vertici & loro attributi Screen buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up computazioni per vertice Texture RAM interpolo coordinate texture coordinate texture interpolate compreso: coordinate texture (per vertice!) bumpmap: ogni texel (la codifica di) una normale texture look-up, lighting (usando la normale) computazioni per frammento
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Bump-Mapping E' un metodo molto diffuso –per aggiungere dettaglio geometrico (o meglio la sua apparenza) in maniera efficace E' un froma di per-fragment lighting –il lighitng è computato per ogni frammento –come ad esempio anche il Phong shading
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Bump-Mapping stessa geometria (una sfera) bumpmaps diverse
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione 16: dose finale Rendering non fotorealistico
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Rendering non fotorealistico NPR = Non Photorealistic Rendering Un rendering dove l'obiettivo non è il realismo ma: –la chiarezza immagine che da informazione nel modo più chiaro possibile –oppure l'imitazione di uno stile umano: stile toon (cartone animato) stile disegno a matita stile stampa stile chiaroscuro a matita...
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Rendering non fotorealistico Esempio: rendering in stile disegni a matita
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Rendering non fotorealistico Esempio: hatching Emil Praun, Hugues Hoppe, Matthew Webb, Adam Finkelstein 2001 modello 3D rendering (in tempo reale)
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Rendering non fotorealistico Esempio: renderings stile toon Questi sono rederings off-line. Ma esistono algoritmi per il nostro HW grafico per ottenere questo tipo di effetti in tempo reale ! bordi come linee scure shading quantizzato (due gradazioni di verde, invece di una sfumatura continua)
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Rendering non fotorealistico
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione 16: dose finale Programmabilità della GPU
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione 16: dose finale High Dynamic Range modelling and rendering
M a r c o T a r i n i C o m p u t e r G r a p h i c s / 0 7 U n i v e r s i t à d e l l I n s u b r i a Bump-Mapping Frammenti & attributi interpolati Vertici & loro attributi Screen buffer Vertici poriettati & attributi computati rasterizer triangoli set- up rasterizer segmenti set- up rasterizer punti set- up PROGRAMMABILITA' ! ! ! computazioni per vertice computazioni per frammento