Computer Graphics Lezione 2: hardware ergo triangoli Universit dell Insubria Facolt di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Marco Tarini Riassunto puntata precedente 1/3 Computer Graphics ( CG ): molteplici applicazioni medicali industriali beni culturali militari L telecomunicazioni commerciali ricerca scientifica (scivis) intrattenimento: games intrattenimento: movies e altro (realta' virtuale...) campo in forte progresso 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 2/40 Riassunto puntata precedente 2/3 Riassunto puntata precedente 3/3 mondo reale / modello matematico / artista 3D... acquisizione 3D / simulazione / modellazione (e.g. 3Dstudio max, Maya) Ci occuperemo principalmente di: Real Time 3D Rendering Geometria Scena 3D Immagine preprocessing (modelling) Immagine/i applicazione interattiva 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 3/40 resto dell' applicazione N volte al sec ( e.g. N=60 ) screen buffer ( array 2D di pixel ) 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 4/40 Real Time 3D Rendering Problema challanging! per esempio: pixel = 32 bit = 4 bytes ("pixel depth") screen buffer = 1024 x 768 pixels ("screen resolution") frame rate = 60 Hrz ("fps") total = 4 x 1024 x 768 x 60 byte al sec ("fill-rate", in bytes) 188 MegaBytes / sec Real Time 3D Rendering Fill-rates molto elevati Anticipazione:...e il fill-rate non ƒ sempre il collo di bottiglia Anticipazione 2:...e quella e' una sottostima del fill-rate. manca il fattore depth-complexity ~ x2.5 (come vedremo...) sono piu' di 32 bit x pixel ~ C'ƒ bisogno di muscoli potenza di calcolo 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 5/40 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 6/40 1
Real Time 3D Rendering Problema difficile fortunatamente, processo massicciamente parallelizzabile Ingrediente base della soluzione: hardware specializzato Sistemi Multimediali II Ci occuperemo principalmente di: Real-Time Hardware-Based 3D 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 7/40 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 8/40 Hardware specializzato per il Vantaggio: efficienza computazioni pi ripetute hard-wired nel chipset parallelismo /resto-dell-applicazione: nella scheda grafica resto dell'applicazione libera di utilizzare la CPU e RAM base MA SOPRATTUTTO: sfruttamento del parallelismo implicito nel problema di sotto forma di parallelismo di pipeline sotto forma di parallelismo in ogni fase del pipeline Svantaggio: rigidit vincola l'approccio usato per fare... Paradigmi di Raytracing Rasterization based Image based (per es. light filed) Radiosity Point-splatting... 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 9/40 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 10/40 Hardware dedicato alla grafica storia ~20 anni: dalla met degli '80 (e.g.: Iris - 1986) dalla met dei '90, il fiaccola passa dai mainframes ai PC progressi enormi nella efficienza piu' che "Moore s Law": ~2.4x / year invece di ~1.6 / year nella funzionalit i dettagli storici saltiamoli per ora» a mano a mano che vedremo le tecniche diremo quando sono state introdotte filosofia di fondo rimasta la stessa paradigma di : basato principalmente su rasterizzazione di 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 11/40 Hardware dedicato alla grafica storia Peak Perf. 10 9 10 8 10 7 ( 's/sec) 10 6 HP VRX Flat 10 5 shading UNC Pxpl4 GT HP CRX Iris 10 4 UNC Pxpl5 SkyWriter VGX HP TVRX Stellar GS1000 Gouraud shading One-pixel polygons (~10M polygons @ 30Hz) RE1 E&S F300 86 88 90 92 94 96 98 00 Year 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 12/40 RE2 Antialiasing UNC/HP PixelFlow Division Pxpl6 Megatek Textures IR Accel/VSIS E&S Freedom Division VPX E&S Harmony Voodoo R-Monster Nvidia TNT 3DLabs Glint Cobalt PC Graphics GeForce 3 & Radeon 2
Progresso congiunto HW e Algoritmi Un po come ruota e strada tecniche algoritmiche tecnologia ruota tecnologia strada 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 13/40 sviluppi hardware Rasterization-based HW-supported anche riferito come Transform and Lighting (T&L) paradigm Scena 3D composta da primitive di pochissimi tipi: punti linee MA SOPRATUTTO triangoli primitive di screen buffer 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 14/40 Rasterization-based HW-supported punto primo: tutto sia composto da triangoli (3D) o al limite da punti, o segmenti x v0 =( x0, y0, z0 ) Rasterization-based HW-supported tutto sia composto da triangoli (3D) o al limite da punti, o segmenti non tutto nasce composto di triangoli... y v1 =( x1, y1, z1 ) v2 =( x2, y2, z2 ) z 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 15/40 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 16/40 un quadrilatero? due un poligono a n lati? (n-2) "quad" "diagonal split" 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 17/40 triangolarizzazione di poligono: (non un problema del tutto banale...) 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 18/40 3
la superficie di un solido geometrico, per es. una sfera? la superficie di un solido geometrico, per es. una cono? 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 19/40 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 20/40 Esempio di campo di altezza triangolato "height field" un esempio tipico: campo d'altezza per modellare un terreno... un campo d'altezza? (array 2D di altezze, e.g. per modellare un terreno?) 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 21/40 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 22/40 x x una superficie curva parametrica? per es. NURBS *, b-splines *... questo ƒ facile. Il contrario, che qualche volta ƒ utile, MOLTO meno y z nuvola di punti? (point clouds) problema molto studiato, e (nel caso generale) difficile y z * verdemo M a r c o pi T a avanti r i n i nel C o corso, m p u t se e r c'ƒ G r tempo a p h i c s 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 23/40 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 24/40 4
da nuvola di punti a triangoli: esempio triangoli che definiscono una iso-superficie volume? algoritmi di segmentation (e.g. "marching cubes" * ) 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 25/40 * verdemo M a r c o pi T a avanti r i n i nel C o corso, m p u t se e r c'ƒ G r tempo a p h i c s 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 26/40 Da dataset volumetrico a triangoli: esempio triangoli che definiscono la superficie esplicitamente superfici implicite? nb: non c'e' un modo solo per farlo. Modo + semplice (non ottimo): campionare volume e estrarre isosuperfice a valore 0 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 27/40 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 28/40 Tornando allo schema generale... mondo reale / modello matematico / artista 3D... acquisizione 3D / simulazione / modellazione (e.g. 3Dstudio max, Maya) Tipica fase di preporsessing Geometria diagonal split (da quad a 2 tri) puˆ venire fatto anche qui, al volo preprocessing (modelling) Geometria Immagine/i applicazione interattiva 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 29/40 preprocessing (modelling) Tutto il resto che abbiamo visto nei lucidi precedenti (trasformazione in triangoli) tipicamente qui Immagine/i 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 30/40 5
Riassuntino Modellare direttamente con triangoli Quads Campi d'altezza rappresentare gli oggetti con triangoli "al volo" o al limite da punti, o linee Triangoli Forme geo. di base Superfici parametriche n-agoni Dati Volumetrici Superfici implicite r e n d e r i n g un coniglio di porcellana? una teiera? Nuvole di punti triangoli, triangoli, 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 31/40 Modellare direttamente con 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 32/40 Modellare direttamente con triangoli rappresentare gli oggetti con triangoli o anche quads o al limite da punti, o linee 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 33/40 modeller) 1994 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 2 0 0 5 / 0 6 U n i v e r s i t by d ephillip l l I nheckinger s u b r i a (3D - 34/40 Un limite di questo approccio Per dirla tutta sulle primitive di Non sempre e' semplice modellare le entit da rappresentare con triangoli... Triangoli ok, abbiamo capito esempi: Tutto l'hardware ƒ progettato e ottimizzato principalmente per questo caso Quads nuvole fuoco pelliccia in un certo senso, perchƒ diventano triangoli al volo Segmenti Punti by Niniane Wang (non real time) by N. Adabala uni florida (non real time) by M. Turitzin and J. Jacobs Stanford Uni (real time!) 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 35/40 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 36/40 6
Per dirla tutta sulle primitive di Per dirla tutta sulle primitive di Triangoli ok, abbiamo capito Quads in un certo senso, perchƒ diventano triangoli al volo Segmenti utili ad esempio per particle systems Triangoli ok, abbiamo capito Quads in un certo senso, perchƒ diventano triangoli al volo Segmenti utile ad esempio per fare di capelli peli etc (ma non ƒ l'unico sistema e non ƒ detto che sia il migliore) Punti Punti nvidia tech demo at SIGGRAPH 2001 nvidia quadro 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 37/40 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 38/40 nvidia technology demo at SIGGRAPH 2004 =REAL M a TIME!= 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 2 0 0 5 / 0 6 U n i v e r s i t d e l l I n s u b r i a - 39/40 7