Introduzione alla computer graphics
Sommario Cos’è la Computer Graphics (CG) Ambiti di applicazione Breve Storia della Computer Graphics Tecnologie dei display Grafica Raster e Grafica Vettoriale
Cos’è la CG La Computer Graphics (CG) si occupa di sintesi di immagini, cioè delle tecniche di produzione di scene rappresentanti oggetti del mondo reale o contenuti astratti. Nel primo caso, entrano a far parte della CG anche tutte le tecniche volte a fornire una visualizzazione realistica del contenuto dell’immagine. Rendering foto-realistico Rendering non foto-realistico
Cos’è la CG Per contro, la disciplina che si occupa di analisi di immagini è denominata “Image Processing”. In questo caso gli obiettivi dell’elaborazione possono essere quelli di aumentare il contenuto informativo, ridurre il rumore, restaurare una immagine e così via. Image enhancement Image restoration Image analysis …
Cos’è la CG In ogni caso in Image Processing si assume di partire da un’immagine digitale già acquisita e la si elabora, mentre in CG l’immagine digitale è l’obiettivo ultimo dell’elaborazione. Altri ambiti che si occupano di immagini digitali sono la “Computer Vision” e la “Pattern Recognition” .
Cos’è la CG La “Computer Vision” tenta di riprodurre i processi percettivi propri della visione basandosi su sistemi artificiali di acquisizione/elaborazione dei dati. Nell’ambito della “Pattern Recognition” si cerca di individuare la presenza di “strutture” più o meno complesse in un’immagine al fine di svolgere compiti di riconoscimento, sorveglianza, ispezione di manufatti per individuazione di guasti e così via.
Cos’è la CG Alcune tecniche di elaborazione sono ormai patrimonio della CG Fotoritocco: effetti speciali che sono trasformazioni operate sul contenuto informativo delle immagini di partenza. Image warping: trasformazioni delle strutture presenti in un’immagine a fini ludici o di correzione di deformazioni introdotte dai dispositivi di acquisizione.
Ambiti di applicazione della CG Disegno delle interfacce utente Graphical User Interfaces (GUI) Interfacce Web (grafica bidimensionale abilitata da opportuni linguaggi di scripting e descrizione delle forme con formalismi XML)
Simulazioni Scientifiche (processi fisici, chimici...) Professionali (simulazioni di dispositivi, CAD) Simulazione tridimensionale di onde e campi elettromagnetici
Simulazione metereologica
Il ciclo di vita di un film alla Pixar Story department L'evoluzione degli storyboard da carta e matita a Photoshop e After Effects.
Art Department Sviluppo dei personaggi, delle ambientazioni e del "look" del film attraverso creta, photoshop, illustrator, sketchup e Maya.
Dare forma ai disegni La modellazione tridmensionale attraverso Maya.
Shading Shading dei modelli attraverso Maya, Photoshop e Illustrator e RenderMan usati attraverso il sistema proprietario di paint3D.
Elementi in Grafica 2D Elementi di grafica 2D attraverso Illustrator. Pipeline custom per la gestione degli elementi grafici.
Animazione Dare vita ai personaggi è una delle fasi sicuramente più affascinanti…
Animation Studio’s Dreamwork 1998, Z la formica
Animation Studio’s Dreamwork 2001, Shrek
2004 Shrek 2
2005 Magadascar (MAYA)
2006 Giù per il tubo
2008 Kung fu Panda(MAYA)
2010 Shrek e vissero felici e contenti
2011 Il gatto con gli stivali
Film in produzione 2012, Madagascar 3 2012, The Croods 2012, The Guardians 2013, Dragon Trainer 2
Avatar (MAYA) 2009
King Kong 2005
Blue Sky Studios L’era Glaciale
Pixar studio Animation 1995 Toy Story – Il mondo dei giocattoli
1998 - A Bug's Life - Megaminimondo
1999 - Toy Story 2 - Woody e Buzz alla riscossa
2001 - Monsters & Co.
2003 - Alla ricerca di Nemo
2004 - Gli Incredibili - Una "normale" famiglia di supereroi
2006 - Cars - Motori ruggenti
2007 - Ratatouille
2009 - Up
2010 - Toy Story 3 - La grande fuga
2011 - Cars 2
In produzione 2013 - Monsters University 2013 - About Dinosaurs 2014 - That Takes You Inside the Mind 2015 - Toy Story 4
Grafica Pubblicitaria Lavatrici Ariston Aqualtis http://www.youtube.com/watch?v=2j2f5ONDU4c Ariston Hot Quadro http://www.youtube.com/watch?v=dimtH0Fsiic&feature=relmfu Parmareggio http://www.youtube.com/watch?v=Eqtc69kzMi8 http://www.youtube.com/watch?v=vaOm03b-u6I&NR=1 Gocciole Pavesi http://www.youtube.com/watch?v=mfsEkP6ZSq4
Intrattenimento Videogames
God of War III
Rayman Raving Rabbids
Realtà aumentata La Realtà Aumentata (dall'inglese Augmented Reality) è un sistema di grafica interattiva che permette di intervenire su un flusso di immagini video live, modificando la realtà con l’aggiunta, in tempo reale, di contenuti ed animazioni virtuali.
Realtà aumentata Realtà virtuale: si osserva su uno schermo la proiezione di un mondo totalmente fittizio e costituito interamente da oggetti virtuali. Realtà aumentata: non si è vincolati ad una visualizzazione su schermo, ma qualsiasi superficie può diventare un supporto per visualizzare il flusso video in Realtà Aumentata; ciò che viene ripreso, inoltre, è un’integrazione fra immagini reali ed oggetti virtuali. Per cui: realtà virtuale = mondo virtuale Realtà Aumentata = mondo reale + oggetti virtuali
Sistema di realtà aumentata Schema di un sistema di realtà aumentata: meccanismo di riconoscimento di un particolare elemento grafico detto marker (una sorta di codice a barre bidimensionale ), un sistema di tracciamento dei movimenti (della webcam o del marker) e un engine per la creazione e l’animazione di oggetti tridimensionali. I marker sono degli elementi grafici, su cui è stampato un simbolo facilmente riconoscibile (anche quando ruotato), che vengono “individuati e tracciati” attraverso una videocamera.
Esempio di sistema di realtà aumentata http://www.youtube.com/watch?v=1_7NW_u3VFo http://www.onscreencommunication.it/it/realta-aumentata/applicazioni
Navigatore con la realtà Aumentata
Applicazioni in Medicina Ricostruzioni di parti anatomiche da TAC/RM/PET a fini diagnostici
Altre applicazioni Simulatori di volo: per l’addestramento di piloti civili e militari basati su realtà virtuale e realtà aumentata In cartografia: l’utilizzo di sistemi informativi territoriali consente la produzione di carte topografiche, schematiche e tematiche con facilità maggiore rispetto alle modalità manuali.
Interattività vs Non Interattività La grafica generata con un calcolatore può o meno essere interattiva, ovvero può o meno permettere ad un operatore esterno di interagire in tempo reale con uno qualsiasi (o tutti) dei parametri della rappresentazione grafica Nel caso di grafica interattiva si richiede una risposta in tempo reale ai comandi dell’operatore; questo implica necessità di hardware particolari (schede grafiche acceleratrici, processori potenti,molta memoria) un modello semplificato di resa grafica (in genere le applicazioni interattive non sono fotorealistiche) Con la grafica non interattiva si possono raggiungere qualità dell’immagine elevate a piacere, è solo questione di quanto tempo si è disposti ad aspettare per generarle Entrambi i tipi di grafica sono interessanti ed hanno diverse applicazioni, a volte complementari;
Interattività vs Non Interattività
Schema di una applicazione grafica In genere le applicazioni grafiche di cui discuteremo (e che implementeremo) si possono inquadrare, piu’ o meno, nel seguente schema: Vi è una descrizione di qualche tipo (procedurale o meno) del mondo che deve essere rappresentato. La produzione di tale descrizione (modello) prende il nome di modellazione. Da tale descrizione si ottiene una immagine bidimensionale; tale processo è chiamato globalmente rendering La sequenza di procedure ed algoritmi che implementano il rendering prende il nome di pipeline grafica; L’immagine ottenuta viene quindi visualizzata sullo schermo (in applicazioni interattive, per esempio) o salvata su file
Schema di una applicazione grafica La descrizione del mondo che viene utilizzata dalla pipeline grafica comprende in genere tre elementi: 1. Gli oggetti che popolano il mondo; possono essere oggetti veri e propri (cubi, robot, mele..) oppure dati (punti nello spazio 3D, iso-superfici ..). Gli oggetti hanno proprietà posizionali (dove sono, come sono orientati etc) e di apparenza (di che colore, com’è fatta la superficie, se sono riflettenti etc) 2. Le luci che determinano le proprietà di illuminazione del mondo; hanno anch’esse proprietà posizionali, ma non di apparenza (tipicamente le luci non si vedono, al più si vedono degli oggetti che rappresentano l’emettitore di luce). 3. L’osservatore che descrive gli algoritmi che servono a generare una immagine 2D (lo schermo) dalla descrizione 3D del mondo, ovvero implementa una telecamera virtuale; anch’esso possiede proprietà posizionali, ma non di apparenza
Processo di modellazione Il modello di un oggetto da rappresentare può essere ottenuto essenzialmente in tre modi: Manuale, ovvero viene “disegnato” tramite un opportuno strumento grafico. In genere si ottengono oggetti complessi assemblando assieme oggetti semplici; es sfera, questa spesso viene disegnata tramite il mouse, selezionando il centro e trascinando il puntatore fino ad ottenere il raggio desiderato. Automatica da strumenti che consentono l’acquisizione di un modello digitale di un oggetto reale. Per esempio le tecniche basate sulle immagini dell’oggetto sono molto studiate in Visione Computazionale, ed ultimamente anche in grafica. Spesso vengono indicare come Image based modeling Procedurale, ovvero viene generato tramite una procedura opportuna. Un esempio tipico sono gli oggetti frattali, che hanno varie applicazioni nella grafica al calcolatore, o gli oggetti geometrici, come sfere, cubi, poliedri regolari o altro. Ad esempio una sfera è ottenuta specificando il raggio e la posizione del centro, poi ci pensa una procedura basata sull’equazione analitica della sfera a disegnarla. Le tecniche si possono mescolare tra di loro.
Processo di modellazione 3d modeler 3d scanners Editor
3d scanners Modello: battistero di Cremona Hardware: laser scanner + camera
3d scanners
Processo di rendering In base a tutte queste informazioni, dobbiamo effettuare un certo numero di passi per ottenere l’immagine desiderata: Proiezione: proiettare (geometricamente) la scena dallo spazio 3D allo spazio 2D dello schermo della telecamera virtuale. Shading: per ogni punto dell’immagine dobbiamo determinare il suo colore, che è funzione del colore della superficie dell’oggetto e della sua orientazione, della posizione delle luci e (nei modelli cosiddetti “globali”) della riflessione indiretta della luce da parte di altre superfici. Rimozione delle superfici nascoste: gli elementi più vicini alla telecamera coprono quelli più lontani: dobbiamo determinare quali superfici sono visibili e quali no. Rasterizzazione: quando sappiamo che colore assegnare a ciascun punto della immagine, il passo finale è mappare questa informazione sul display (ovvero: accendere i pixel).
Modellazione vs Rendering In un immagine generata al calcolatore (3D o 2D, interattiva o meno) concorrono essenzialmente due elementi: I modelli geometrici degli oggetti (o dati) rappresentati Le loro caratteristiche di colore, ombreggiatura, tessitura, etc.; queste ultime vanno sotto il nome di shading Alle volte è praticamente impossibile ottenere un modello di un oggetto con i dettagli desiderati; in tal caso si aggiungono i dettagli nella fase di rendering (alterando lo shading). In genere è uno spreco di risorse costruire un modello complicato quando è possibile ottenere lo stesso effetto con un modello semplice ed un suo opportuno shading.
Shading Add Lines Add colors Distance falloff “Real world” shading
Breve storia della CG La CG nasce insieme ai calcolatori, ma si mantiene fuori dal mercato del grande consumo per effetto dei costi elevati dei dispositivi grafici. Il suo sviluppo nasce dalla necessità di rappresentare in maniera semplice e altamente flessibile i dati elaborati dal calcolatore; è il caso di applicazioni scientifiche e di simulazione di processi.
Breve storia della CG Problemi connessi con la larga diffusione delle applicazioni di CG: costo HW grafico necessità di elevate risorse computazionali difficoltà di scrivere programmi interattivi (epoca del FORTRAN) SW dedicato per l’HW grafico.
Breve storia della CG La diffusione, negli anni '80, dei primi calcolatori (ad esempio Apple Macintosh) che usano monitor con display di concezione moderna favorisce lo sviluppo di applicazioni grafiche per uso diffuso Prime fra tutte si sviluppano le interfacce grafiche che consentono agli utenti inesperti di interagire con sistema operativo e le applicazioni presenti su un calcolatore.
Breve storia della CG I primi display per la visualizzazione grafica sono basati sull’uso di monitor del tipo televisivo in cui un “Tubo a Raggi Catodici” (Cathode Ray Tube: CRT) forma le immagini comandando la deflessione di un fascio focalizzato di elettroni (pennello elettronico). Il fascio è in grado di colpire qualunque punto del fondo del tubo sul quale è disposto uno strato di materiale fotosensibile (fosfori) che reagisce all’impatto emettendo luce.
Tubo a raggi catodici
Architettura del sistema
Il Video controller Il componente hardware che, all’interno dell’ambiente computer-monitor è responsabile di guidare il fascio elettronico è il video controller che trasforma informazioni grafiche(digitali) in impulsi elettrici (analogici). La tecnologia del video controller può essere di due tipi: raster o vettoriale.
I primi dispositivi di output grafico basati sull’uso del CRT, erano detti vettoriali (dove il termine vettoriale è da intendersi come sinonimo di lineare). In questi dispositivi, il fascio di elettroni può muoversi direttamente da una posizione all’altra, guidato dal computer, secondo l’ordine arbitrario dei comandi di display, e durante il moto traccia una linea. Chiaramente, annullando l’intensità del fascio, questo può essere spostato in una nuova posizione, senza modificare l’immagine visibile sullo schermo. Questa tecnica, chiamata random scan (scansione casuale), è rimasta in uso fino agli anni settanta, quando hanno cominciato a diffondersi i sistemi di grafica raster, basati sulle tecnologia televisiva.
Il termine raster (o percorso di scansione) è sinonimo di matrice. Nella grafica raster, ogni immagine viene infatti rappresentata tramite una matrice di elementi, i cosiddetti pixel, ciascuno dei quali corrisponde ad una precisa porzione dell’immagine. L’elaborazione delle immagini è dunque basata su matrici di pixel, che vengono memorizzate in un’apposita area di memoria, il frame buffer, localizzata nella memoria della CPU, o in una memoria separata. Il contenuto del frame buffer, ovvero la rappresentazione in memoria delle matrici di pixel, è chiamato pixmap (da pixel map) o bitmap. La risoluzione del frame buffer, definita dal numero di pixel che può memorizzare, determina la qualità dell’immagine visualizzata.
L’immagine complessiva su un display di tipo raster si ottiene effettuando una scansione sistematica, raster scan, della matrice di pixel attraverso il fascio di elettroni, ovvero scorrendo sequenzialmente le linee di scansione orizzontali, composte da righe di pixel, una alla volta, e regolando l’intensità del fascio in modo da riflettere l’intensità di ciascun pixel. Ogni volta che il fascio di elettroni completa un ciclo di scansione, si dice che il CRT è refreshed.
I principali vantaggi della grafica raster rispetto a quella vettoriale includono costi più bassi (grazie allo sviluppo tecnologico che ha reso disponibili memorie di capacità elevata a basso costo) e la possibilità di visualizzare aree piene di colore, e disegni. Uno dei principali svantaggi consiste invece nella natura intrinsecamente discreta della rappresentazione tramite pixel: le primitive grafiche (quali linee, cerchi, poligoni), devono essere convertite nelle matrici di pixel che meglio le rappresentano, per poter essere visualizzate su un display di tipo raster. Questa operazione è chiamata scan conversion. Inoltre, mentre nella grafica vettoriale è possibile disegnare curve continue tra una qualsiasi coppia di punti del CRT, la riduzione a matrici di pixel può comportare problemi di frastagliamento delle immagini.
Monitor LCD Cristalli liquidi: determinate sostanze cristalline con struttura tipica di un solido, che se opportunamente riscaldate assumono una consistenza semiliquida, pur mantenendo una struttura cristallina al loro interno. I cristalli liquidi al microscopio appaiono come dei piccoli filamenti. I filamenti cristallini facendo parte di una sostanza semifluida sono caratterizzati da una certa libertà di movimento ed inoltre rifrangono i fasci di luce su di essi emessi. La rifrazione dipenderà dal loro orientamento. Questi filamenti, sotto lo stimolo di un opportuno campo elettrico possono modificare il proprio orientamento e di conseguenza modificare le caratteristiche del fascio di luce che li attraversa. I display a cristalli liquidi (LCD) dipendono da una sorgente di luce esterna. Essi funzionano polarizzando la luce dell’ambiente esterno. Alla base del funzionamento dei monitor LCD troviamo l’utilizzo della luce polarizzata.
La luce è un’onda elettromagnetica che viaggia nel vuoto La luce è un’onda elettromagnetica che viaggia nel vuoto. E' di solito non polarizzata in quanto prodotta da cariche elettriche che vibrano in tutte le direzioni . E' possibile trasformare la luce non polarizzata in luce che vibra in una sola direzione (luce polarizzata linearmente).Il processo si dice di polarizzazione. La luce viene polarizzata facendole attraversare un filtro che permette il passaggio solo di vettori luminosi posti su piani paralleli (es: solo orizzontali o solo verticali etc..).
Se polarizzassimo la luce per piani orizzontali e questa incontrasse poi un filtro che polarizza per piani verticali, essa non potrebbe passare e verrebbe quindi bloccata totalmente. Per passare attraverso un filtro polarizzante per piani verticali la luce polarizzata orizzontalmente necessita di essere ruotata di 90°.
I monitor LCD sono composti da ben sette strati I monitor LCD sono composti da ben sette strati. Internamente abbiamo delle lampade a fluorescenza che producono la luce. Poi un pannello che polarizza la luce per orizzontali e due pannelli centrali che racchiudono uno strato di celle contenenti i cristalli liquidi. Più esternamente abbiamo un altro pannello che polarizza la luce per piani orizzontali. E infine il cristallo esterno del display LCD.
Non viene applicato nessun campo elettrico Non viene applicato nessun campo elettrico. I cristalli presentano la tipica disposizione a elica. La luce, che entra polarizzata orizzontalmente, ruota di 90° seguendo i cristalli e può così attraversare il filtro di polarizzazione verticale Viene applicato un campo elettrico. I cristalli vengono attivati e perdono la loro disposizione a elica. La luce, polarizzata orizzontalmente, non può più seguire i cristalli e non viene quindi ruotata. Arrivando ancora polarizzata orizzontalmente contro il filtro di polarizzazione verticale, la luce viene quindi bloccata.
Retroilluminazione a LED Quando si parla di schermi a LED non si intende una nuova tecnologia di generazione dell'immagine. Un termine più appropriato sarebbe "schermo LCD basato su retroilluminazione a LED" in quanto il pannello che produce le immagini resta quello di uno schermo piatto tradizionale. All'interno dello schermo a LED la luce emessa da 2160 piccoli LED rossi, verdi e blu, si combina per formare una luce bianca. Il fascio di luce attraversa una piastra di diffusione che la rende omogenea. Il vantaggio più evidente rispetto alla lampada tradizionale è la migliore qualità dei colori: il neon degli schermi LCD tradizionali, non restituisce infatti un bianco perfetto e la luce deve essere corretta utilizzando filtri di colore che non garantiscono risultati sorprendenti.La luce bianca illumina quindi il pannello a cristalli liquidi per formare l'immagine finale. La durata dello schermo LCD basato su tecnologia a LED è nell'ordine delle 100 mila ore mentre quella di uno schermo tradizionale è di 50 mila ore. Grazie alla tecnologia a LED è possibile costruire degli schermi sottilissimi spessi anche un paio di millimetri.
Evoluzione dei controllori grafici Pipeline di rendering Cenni storici sui controllori grafici Implementazione della pipeline di rendering Pipeline logica programmabile Pipeline mappata sul processore Architetture dei sistemi GPU Cenni alla programmazione delle GPU
Pipeline di rendering
Cenni storici sui controllori grafici Video and Graphics Array controller - VGA (<1990) Controllore di una memoria DRAM chiamata framebuffer e generatore di segnali (RAMDAC) collegato direttamente al video Basato sul principio della grafica vettoriale Implementa l’aritmetica intera indicizzata 1990 – 1997 circa Si aggiungono funzioni al controllore VGA Gestione triangoli Rasterizzazione triangoli Shading
Cenni storici sui controllori grafici Anni 2000 Chip integrato che incorpora praticamente tutti gli elementi di una pipeline di rendering Nasce la Graphics Processing Unit (GPU) > 2005 GPU con implementazione dell’aritmetica in virgola fissa e mobile GPU programmabili API di alto livello (OpenGL, Direct3D) shaders delle geometrie, dei vertici e dei pixel
Architettura GPU Unificata di base Adesso (>2008 circa) I processori sono massicciamente paralleli e multithread Streaming Processors (SP) a flusso continuo Gli SP sono organizzati in Streaming Multiprocessors (SM) La memoria è condivisa due livelli Dentro lo SM tra gli SP Tramite rete di interconnessione tra gli SM Soluzione scalabile
Pipeline mappata su schiera di processori Adesso (>2008 circa) L’esecuzione degli shaders viene mappata sulla “schiera di processori unificati”
Architettura di una GPU unificata Arch. TESLA 112 SP 14 SM 1 SP 96 thread DRAM 64 bit NVIDIA GeForce 8800
Programmazione Grafica Tre livelli API grafiche OpenGL Direct3D Linguaggi di shading GLSL HLSL Cg API di programmazione diretta dei core SP CUDA OpenCL
API grafiche Sono API di alto livello che definiscono logicamente la pipeline di rendering L’applicazione si sviluppa definendo i vari stadi con primitive di alto livello I dettagli sono nascosti allo sviluppatore e gestiti dalle API
Linguaggi di shading Gestiscono i tre tipi di shader Shader dei vertici Mappano la posizione dei vertici dei triangoli nello schermo, modificando posizione, colore e orientamento Shader delle geometrie Lavorano sulla base di primitive geometriche (ad es. interi triangoli) definite come insiemi di vertici; le modificano ovvero ne aggiungono di nuove Shader dei pixel (o dei frammenti) Dipingono il pixel sullo schermo e gestiscono gli artefatti visivi
Linguaggi di shading Gli shader sono programmati a “a flusso continuo” cioè su sequenze ininterrotte di dati; l’I/O è implicito Le strutture di dati su cui operano consentono un elevato parallelismo e quindi possono essere lanciati più thread dello stesso shader Hanno primitive per operazioni trigonometriche e su matrice, interpolazione, filtraggio …
Programmazione dei core SP Sono API per programmazione general purpose su GPU GPGPU: General Purpose computing on GPU Il problema viene parallelizzato mappandolo sull’architettura Il programmatore CUDA scrive una procedura detta kernel che istanzia tante esecuzioni di thread paralleli
Programmazione CUDA I thread sono organizzati gerarchicamente in blocchi 1D, 2D o 3D i quali sono organizzati in griglie 1D, 2D o 3D Il mapping dipende dai core SP disponibili ed è scelto dal programmatore