1 Smoothing Daniele Marini. 2 Calcoli sui vettori Vettore normale equazione del piano: ax+by+cz+d=0; si può anche scrivere come luogo: e p è un qualunque.

Slides:



Advertisements
Presentazioni simili
Ombre e riflessioni in tempo reale
Advertisements

Fisica 2 Elettrostatica
Elettrostatica 3 23 maggio 2011
Fisica 2 Elettrostatica
Meccanica 3 7 marzo 2011 Cinematica in due dimensioni
Rendering È quel processo di creazione di un’immagine bidimensionale a partire da un modello tridimensionale Tale immagine deve tendere a rappresentare.
4. Il Campo Elettrico Riesaminiamo la legge di Coulomb: Problema
Curve e Superfici Il mondo non è fatto di rette e poligoni.
Corso di Informatica grafica 1 Introduzione Quando si rappresentano modelli di oggetti 3D costituiti da facce poligonali secondo delle proiezioni alcune.
MODELLI LUCE.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 prove.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 prove generali.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Costruzione di Interfacce Lezione 7 Shading
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
CAMPO ELETTRICO E POTENZIALE
Il moto armonico Altro esempio interessante di moto è quello armonico caratterizzato dal fatto che l’accelerazione è proporzionale all’opposto della posizione:
INFORMATICA GRAFICA – SSD ING-INF/05 Sistemi di elaborazione delle informazioni a.a. 2007/2008 Esercitazione OpenGL.
G. Pugliese, corso di Fisica generale
Il prodotto vettoriale
RIFLESSIONE E RIFRAZIONE DELLE ONDE E.M.
Architetture per la sintesi di immagini Daniele Marini Gennaio 2000.
1 Modelli di Illuminazione Daniele Marini. 2 Obiettivo Visualizzare scene cercando di simulare al meglio la realtà Interazione luce-materiali –Modellare.
Modelli Globali Daniele Marini.
1 Superfici nascoste Daniele Marini. 2 Ray casting adatto a CSG o superfici parametriche dipende dal punto di vista è una sorta di campionamento spaziale.
Smoothing Daniele Marini.
Il calcolo di radiosity
1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending.
1 Modelli Globali Radiosity Daniele Marini. 2 Radiosity Bilancio radiativo in un ambiente chiuso (senza scambio di energia con lesterno) Indipendente.
Infomatica Grafica a.a DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Environment Mapping.
LEGGI FONDAMENTALI.
11 ottobre 2012 Modelli a poligoni Roberto Pirrone.
I solidi.
Determinazione delle superfici visibili
Illuminamento e Shading
Daniele Marini Con contributi di Maurizio Rossi
Studente: Banovaz Diego Trieste, 15/12/2008AA: 2008/2009.
Modelli di Illuminazione 1- Modelli locali
Modelli Globali: Ray Tracing
Daniele Marini, Maurizio Rossi
Texturing - Tessiture Daniele Marini.
Daniele Marini Con contributi di Maurizio Rossi
Le ombre proiettate Daniele Marini.
1 Scan conversione di poligoni Daniele Marini. 2 Test interno-esterno Scan conversione di un poligono = decidere se pixel interno Test di intersezione:
Dal modello alla visualizzazione: Verso il foto realismo Daniele Marini.
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Corso Di Programmazione Grafica
Corso di tecniche della modellazione digitale computer 3D A.A. 2010/2011 docente Arch. Emilio Di Gristina 00.
Elettromagnetismo 2. Il campo elettrico.
Superfici nascoste Daniele Marini.
1 Visualizzazione scientifica Daniele Marini. 2 Visualizzazione scientifica Trovare un modo per rendere i risultati di un calcolo scientifico, o rilevati.
(Potenziale ed energia potenziale)
Modelli di Illuminazione
Intersezioni e distanze
Intersezioni e distanze
Ombre e riflessioni in tempo reale Daniele Marini Parzialmente tratte de: Haines-M ö ller Corso di Programmazione Grafica aa2006/2007.
Ombre e riflessioni in tempo reale Daniele Marini Parzialmente tratte de: Haines-M ö ller Corso di Programmazione Grafica aa2005/2006.
Intersezioni e distanze Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
Shading e smoothing Daniele Marini Corso Di Programmazione Grafica aa2005/2006.
Modelli di Illuminazione Modelli locali
Primitive OpenGL Corso di Programmazione Grafica e Laboratorio Daniele Marini.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
PROGETTAZIONE MECCANICA I – A.A
Data una carica puntiforme Q
Campo Elettrico Definizione operativa di campo elettrico: Il vettore campo elettrico associato ad una determinata carica sorgente Q, posta in un.
Definizione di Flusso Il flusso è la misura di quanto materiale o campo passa attraverso una superficie nel tempo. Se si parla di campo elettrico basterà.
Le cariche elettriche La materia è costituita fondamentalmente da atomi. Un atomo può essere schematizzato come segue: Al centro si trova il nucleo.
Transcript della presentazione:

1 Smoothing Daniele Marini

2 Calcoli sui vettori Vettore normale equazione del piano: ax+by+cz+d=0; si può anche scrivere come luogo: e p è un qualunque punto nel piano; il vettore n è dato da:

3 In generale possiamo partire da tre punti non allineati: p 0, p 1, p 2 con i quali determiniamo il piano (superfici approssimate con poliedri triangolarizzati). Le differenze p 2 - p 0 e p 1 - p 0 sono coplanari e il loro prodotto dà la normale: n = (p 2 - p 0 ) x (p 1 - p 0 ) L’ordine è rilevante

4 Per il calcolo di normali di superfici curve dipende da come la superficie è rappresentata, ma in generale si stima un gradiente. Es. sfera - equazione f(x,y,z): x 2 + y 2 + z 2 -1=0 In forma vettoriale: f(p): p.p -1 = 0 Il vettore gradiente è dato da:

5 Se la sfera è rappresentata in forma parametrica il metodo di calcolo cambia: La normale si può ricavare dal piano tangente in p:

6 Individuano due vettori tangenti il cui prodotto vettore individua la normale - poiché ci interessa solo la direzione si può dividere per cos(u) ottenendo un vettore unitario

7 Quando calcolare le normali? L’architettura a pipe line dei sistemi di rendering prevede che la normale di una faccia sia nota a priori (viene elaborato un vertice per volta e non tutta l’informazione è disponibile) in generale è compito del programma applicativo calcolare la normale. OpenGL permette di associare a ogni vertice una normale (che dobbiamo calcolare noi nell’applicativo): glNormal3f(nx,ny,nz); glNormal3fv(pointer_to_normal);

8 Shading di poligoni (flat shading) N, V ed L variano su ogni poligono se si assume osservatore “distante” e sorgente di luce distante ( in OGL si setta a falso il flag near_viewer ) V e L sono costanti anche N è quindi costante sull’intero poligono Il calcolo di shading viene fatto per l’intero poligono una sola volta

9 OGL e flat shading glShadeModel(GL_FLAT); La normale che OGL utilizza è quella associata al primo vertice del poligono Per i triangle strip OGL usa la normale del terzo vertice per il primo triangolo, la normale del quarto per il secondo e così via Per altre primitive valgono regole simili (vedi manuali)

10 Triangle strip

11 Flat vs Smooth Flat shading Smooth shading

12 Effetti di flat shading Bande di mach

13 Smooth shading (interpolato) Interpolazione di Gouraud glShadeModel(GL_SMOOTH) Interpolazione di Phong

14 Gouraud Le normali ai vertici di un poliedro vengono interpolate: Gouraud usa interpolazione bilineare per calcolare il colore dei pixel lungo i singoli poligoni, quindi: -prima calcola colore ai vertici -poi interpola colore

15 Interpolazione bilineare descriviamo i lati in forma parametrica,  è il parametro interpoliamo lungo una linea di scansione

16 Dipende dall’orientamento

17 Phong Smoothing Basato sull’interpolazione delle normali il colore si calcola alla fine sul singolo pixel

18 Gouraud vs. Phong shading hardware veloce continuo fino al I ordine effetti lucentezza limitati (migliorano se si aumenta la triangolazione) software lento continuo fino al II ordine si può applicare modello di Phong per lucentezza

19 Sorgenti di luce in OGL glLightfv(source, parameter, pointer_to_array) glLightf(source, parameter, value) I parametri sono: Posizione (direzione) della sorgente Livelli di Ambiente Diffusa Speculare Associati alla sorgente

20 GLFloat light0_pos[]={1.0, 2.0, 3.0, 1.0} Se si pone quarta componente a 0 la sorgente è all’infinito e definita come “direzione” GLFloat light0_dir[]={1.0, 2.0, 3.0, 0.0} GLFloat diffuse0[]={1.0, 0.0, 0.0, 1.0} GLFloat ambient0[]={1.0, 0.0, 0.0, 1.0} GLFloat specular0[]={1.0, 0.0, 0.0, 1.0} Sorgente bianca con componenti di tutti e tre i tipi:

21 glEnable{GL_LIGHTING}; glEnable{GL_LIGHT0}; glLightfv(GL_LIGHT0, GL_POSITION, light0_pos); glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0); glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0); glLightfv(GL_LIGHT0, GL_SPECULAR, specular0); Se vogliamo comunque un contributo ambiente indipendente: GLFloat global_ambient[]={0.1, 0.1, 0.1, 1.0}; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, global_ambient);

22 Se vogliamo inserire un termine di attenuazione glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, a); glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, b); glLightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, c); Si può convertire la sorgente da puntiforme a spot, specificando: direzione GL_SPOT_DIRECTION esponente GL_SPOT_EXPONENT angolo di soglia GL_SPOT_CUTOFF Si usa sempre la glLightf o glLightfv

23 OGL assume sempre l’osservatore a distanza infinita, in modo da considerare costante la direzione del viewer da ogni punto della scena Per forzare l’osservatore a condizioni di distanza non infinita si usa la: glLightModel(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE)

24 OGL non si preoccupa di fare shading delle facce nascoste; se si desidera vedere facce nascoste si può forzare con: glLightModel(GL_LIGHT_MODEL_TWO_SIDED,GL_TRUE)

25 OGL e i materiali GLFloat diffuse1[]={1.0, 0.8, 0.0, 1.0} GLFloat ambient1[]={0.2, 0.2, 0.2, 1.0} GLFloat specular1[]={1.0, 1.0, 1.0, 1.0} glMaterialf(face, value) glMaterialfv(face, type, pointer_to_array) glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, ambient1); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse1); glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular1);

26 Con GL_FRONT e GL_BACK si specificano proprietà differente per le facce frontali e nascoste L’esponente nella componente speculare si specifica con: GL_SHININESS OGL permette di definire oggetti con componente emissiva: GLFloat emission[]={0.0, 0.3, 0.3, 1.0}; glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, emission)