Storia della Computer Graphics Docente: A cura di: Prof.ssa Francesca Perla Giuseppe Di Nucci Marialuisa Falanga Giulia Monaco Pinella Pedullà Anno Accademico 2005/2006 Computer Graphics La computer La computer Come trasferire tutte queste Come trasferire tutte queste L’incredibile sviluppo della tecnologia informazioni dalla macchina all’uomo graphics!! informazioni dalla macchina all’uomo graphics!! HW/SW in stesso, Soluzione in modo, modo, al al tempo tempo stesso, efficiente efficiente ed ? ed efficace efficace? Progettazione (CAD) Elaborazione Dati Siamo in grado di generare, raccogliere, e in seguito elaborare, informazioni in un Elaborazione di immagini prese dal satellitedi vastità prima impensabili campo Storia della Computer Graphics 2 Computer Graphics Cominciamo con una possibile definizione: Con il termine Computer Graphics intendiamo l’uso di un calcolatore per produrre un immagine (o una sequenza di immagini). Storia della Computer Graphics 3 Computer Graphics Riguarda tutti gli aspetti di produzione di immagini mediante computer Input: dati (descrizione della scena da sintetizzare) Output: immagini Storia della Computer Graphics 4 Computer Vision In figura un paziente Il paradigma precedente è opposto con comportamenti rispetto a quello dellaautistici Computer Vision che si occupa di analisi di immagini: Input: immagini Output: dati (descrizione/comprensione dell’immagine analizzata o del suo contenuto) Storia della Computer Graphics 5 Analisi dati Mappando una serie di numeri come punti in 3D (prendendoli tre a tre ed interpretandoli come coordinate spaziali) si riescono a trovare correlazioni impensabili. In questo esempio i valori pseudocasuali generati da una funzione di libreria non mostrano strutture se rappresentati come serie, ma mappati in 3D mostrano invece una forte correlazione scegliendo il corretto punto di vista. Storia della Computer Graphics 6 Applicazioni ora una carrellata di alcune 1.Vediamo Interazione Uomo-Macchina possibili applicazioni della 2. Visualizzazione Scientifica computer graphic: 3. Visualizzazione dell’Informazione 4. 5. Cinematografia Videogiochi Storia della Computer Graphics 7 Applicazioni – Interazione Uomo/Macchina Interfacce utente Interazione con l’elaboratore dominata da un paradigma che includa finestre, icone, bottoni, cursori, oggetti vari, …… È quello a cui siete abituati ma…… non sempre è stato così: Fino al 1983/84 (primi sistemi Apple Lisa e Mac) tutte le interfacce utente erano esclusivamente “command line” 9 Tutti gli elementi che compongono un’interfaccia grafica devono essere “disegnati” quindi necessitano di software grafico (2D) 9 Storia della Computer Graphics 8 Applicazioni – Interazione Uomo/Macchina La grafica e’ diventata sempre piu’ un ausilio importantissimo per l’interazione tra l’utente ed il calcolatore – E’ di più semplice interpretazione – Fornisce un maggior numero di informazioni in modo più veloce – Cattura l’attenzione Storia della Computer Graphics 9 Dataspace, 1986 VIEWlab project Storia della Computer Graphics 10 Applicazioni – Interazione Uomo/Macchina Altri possibili impieghi di interfacce uomo-macchina grafiche: • CAD (Computer Aided Design), per la costruzione di disegni tecnici (2D e 3D); l’interfaccia grafica deve sopperire all’uso più intuitivo delle mani e fornire funzionalità migliori • Internet, sia per catturare l’attenzione di chi naviga un sito web, sia per permettere una miglior interazione con le informazioni ed i dati contenuti nella rete (menu a scomparsa, bottoni, rollover etc.) Storia della Computer Graphics 11 Applicazioni – Interazione Uomo/Macchina Altri possibili impieghi di interfacce uomo-macchina grafiche: • Realtà Virtuale e Realtà Aumentata, permette ad un operatore di immergersi completamente, o in parte, nell’applicazione, interagendo con i dati e le informazioni in modo più naturale. E’ una tecnica ancora costosa e non ancora disponibile su larga scala. Quali sono gli oggetti sintetici? Modello wireframe della stiva dello shuttle Sovrapposto all’immagine Storia della Computer Graphics 12 Applicazioni – Interazione Uomo/Macchina Altri possibili impieghi di utilizzo di applicazioni grafiche: • Simulazione: Nasce dalla possibilità dei moderni sistemi CG di generare immagini realistiche in tempo reale. Esempi rilevanti sono (spesso in abbinamento con dispositivi ti I/O specializzati, Realtà virtuale): • Volo; • Guida e teleguida di veicoli speciali; • Operazioni mediche e chirurgiche; • Catastrofi naturali (terremoti, inondazioni, esplosioni,crolli, …); • Operazioni di destrezza in ambiente ostile. Storia della Computer Graphics 13 Antoinette Trainer, 1910 Storia della Computer Graphics 14 Moderni simulatori di volo Aereoporto Malta Aereoporto Hong Kong Storia della Computer Graphics 15 Applicazioni – Interazione Uomo/Macchina • Controlli di apparecchiature o veicoli, dove un operatore utilizza un interfaccia grafica per accedere alle funzionalità di un apparecchiatura sofisticata o di un veicolo, sia in lettura dati che in immissione comandi; un esempio è dato dalle glass cockpit, che sono delle rappresentazioni grafiche della strumentazione di bordo di un aereo e che stanno sostituendo i più tradizionali strumenti di volo. Storia della Computer Graphics 16 Applicazioni – Visualizzazione Scientifica Visualizzazione Scientifica E’ l’incontro tra la grafica al calcolatore e l’analisi di dati scientifici L’uso della grafica permette una comprensione maggiore dei dati Tra i possibili usi della visualizzazione scientifica: immagini mediche, plot matematici, dati sperimentali, risultati di simulazioni, etc... Visualizzazione dell’Informazione Parente della Visualizzazione Scientifica, si occupa di dati astratti e non immediatamente visualizzabili senza l’introduzione di una opportuna metafora visuale (es. visualizzare un log file) Storia della Computer Graphics 17 Applicazioni – Visualizzazione Scientifica Immagine medica Immagine medica Rendering del polo nord marziano Visualizzazione Info Metereologia Collisione di due stelle di neutroni Storia della Computer Graphics 18 Uso artistico ¾ Computer Art, utilizzata per esprimere stati d’animo ¾ Pubblicità, per catturare l’attenzione con immagini di effetto difficilmente ottenibili in altro modo ¾ Film, sia che venga usata semplicemente per gli effetti speciali (la maggior parte dei casi), sia che venga utilizzata per la realizzazione in toto del film (alcuni casi notevoli, sempre più frequenti) Storia della Computer Graphics 19 Uso Cinematografico Storia della Computer Graphics 20 Illusioni ottiche Storia della Computer Graphics 21 Videogiochi Alcuni elementi di punta dei videogiochi moderni: – 3D – grafica in tempo reale – implementano una interfaccia utente complessa – implementano algoritmi di grafica di punta (ombre, strutture dati gerarchiche, effetti di luce, sistemi di particelle, raytracing, radiosity etc) – necessitano di schede grafiche accelerate – spesso presentano filmati (o scene singole) estremamente fotorealistici Storia della Computer Graphics 22 Videogiochi Space invaders, 1978 Pac-Man, 1980 Battlezone, 1980 Donkey-Kong, 1981 Zaxxon, 1982 Storia della Computer Graphics Street Fighter II, 1991 23 Videogiochi Storia della Computer Graphics 24 Sviluppo guidato dall’evoluzione dell’HW/SW A partire dagli anni ’50: ¾ utilizzo di tubi a raggi catodici (CRT) come dispositivi di output grafico Il primo calcolatore dotato di un CRT come dispositivo di output grafico è stato Whirlwind I, progettato e divenuto operativo nel 1950 presso il MIT Storia della Computer Graphics 25 Sviluppo guidato dall’evoluzione dell’HW/SW Dagli anni ’60 ai primi anni ’80: ¾ grafica vettoriale: fascio di elettroni che colpisce la superficie del CRT viene guidato per muoversi da una parte all’altra (random scan) tracciando punti, linee… Storia della Computer Graphics 26 Nascita della computer graphics Nel 1960 William Fetter introdusse il termine Computer Graphics per descrivere la ricerca che stava conducendo alla Boeing. Egli pensò di sfruttare un modello 3D del corpo umano per progettare la carlinga degli aerei. Storia della Computer Graphics 27 Nascita della computer graphics interattiva La nascita della Computer Graphics interattiva si fa invece risalire al 1963, con la tesi di dottorato di Ivan Sutherland. Sutherland creò il primo programma di grafica computerizzata con cui si poteva disegnare attraverso il collegamento di un display (tubo catodico) al computer: lo Sketchpad (1962), e con esso produsse un film avente lo stesso nome. Storia della Computer Graphics 28 Nascita della computer graphics (2) (2)Sketchpad Sketchpad (1) (1)Modello Modellousato usato da daFetter Fetter Storia della Computer Graphics 29 Sviluppo guidato dall’evoluzione dell’HW/SW Dagli anni ’70 : ¾ diffusione di sistemi raster: Confronto tra una immagine raster un’immagine è rappresentata da una ed una vettoriale ingrandita. matrice rettangolare (raster) di elementi (pixeloriginale , abbreviazione di a) immagine picture element) b) immagine vettoriale ingrandita ¾ Scansione raster: il fascio di 8x “spazza” il CRT in modo elettroni sequenziale un raster certo numero di volte c) immagine ingrandita 8x al secondo (refresh rate) ¾ Tutte le tecnologie successive al CRT (cristalli liquidi, plasma, …) hanno adottato lo stesso modello raster Storia della Computer Graphics 30 Applicazioni risoluzioni dell’ordine dei Negli ultimi anni stiamo assistendo ad un risoluzioni dell’ordine dei Da 320x240 con balzo in avantipixel per quanto riguarda: 320x240 pixel con 16 16 colori colori la la velocità velocità dei dei processori, processori, boom della grafica a al calcolatore la la disponibilità disponibilità di di memoria memoria l’immissione l’immissione sul sul mercato mercato di di schede schede risoluzioni di di grafiche accelerate aa basso risoluzioni di più più di prezzo. grafiche accelerate basso prezzo. 1024x1024 1024x1024 pixel pixel aa 32 32 milioni milioni di di colori. colori. Storia della Computer Graphics 31 Schede grafiche La Scheda Grafica (S.G.) è un particolare dispositivo hardware progettato per Oggi convertire la sono Oggi sono in in circolazione circolazione sottosistemi sottosistemi di in rappresentazione logica di di pochi pochi chip chip in grado grado di di visualizzare visualizzare in reale un’immagine in un segnale che in tempo tempo reale animazioni animazioni tridimensionali, con può essere usato per pilotare tridimensionali, con immagini immagini aa colori colori di un display; di oggetti oggetti complessi, complessi, tipicamente tipicamente descritti da di La tecnologia moderna ha descritti da migliaia migliaia di poligoni poligoni portato la creazione di schede con una memoria ed un processore interni indipendenti dal resto del sistema. Storia della Computer Graphics 32 Model Riva 128 Riva 128 ZX Vanta Riva TNT2 M64 Riva TNT2 Pro Riva TNT2 Ultra GeForce 256 (SDR) GeForce 256 (DDR) GeForce2 MX 100 GeForce2 MX GeForce2 GTS GeForce2 Pro GeForce2 Ti VX GeForce2 Ti GeForce2 Ultra GeForce4 Ti 4400 GeForce4 Ti 4800 SE GeForce4 Ti 4600 GeForce4 Ti 4800 GeForce FX 5800 GeForce FX 5900 Ultra GeForce FX 5950 Ultra GeForce 6600 GT GeForce 6600 GT GeForce 6800 GTO GeForce 6800 GS GeForce 6800 GS GeForce 6800 GT GeForce 6800 Ultra GeForce 6800 Ultra GeForce 6800 Ultra GeForce 7600 GT GeForce 7800 GT GeForce 7800 GTX GeForce 7800 GTX 512 GeForce 7900 GTX Year Max memory (MiB) Core clock (MHz) Memory clock (MHz) Fillrate (MT/s) Memory bus width (bit) 1997 4 100 100 100 128 1998 8 100 100 100 128 1999 16 100 110 200 64 1999 32 125 150 250 64 1999 32 143 166 286 128 1999 32 150 183 300 128 1999 128 120 166 480 128 2000 128 120 300 480 128 2000 64 143 166 572 32 2000 128 175 166 700 128 2000 128 200 333 1600 128 2000 128 200 400 1600 128 2001 128 225 400 1800 128 2001 128 250 400 2000 128 2001 128 250 460 2000 128 2002 128 275 550 2200 128 2002 128 275 550 2200 128 2002 128 300 650 2400 128 2002 128 300 650 2400 128 2003 256 400 800 3200 128 2003 256 450 850 3600 256 2003 256 475 950 3800 256 2004 256 500 900 4000 128 2004 256 500 1000 4000 128 2004 256 350 900 4200 256 2004 256 350 1000 4200 256 2004 256 425 1000 5100 256 2004 256 350 1000 5600 256 2004 256 425 1100 6800 256 2004 256 400 1100 6400 256 2005 512 400 1050 6400 256 2005 256 560 1400 6720 128 2005 256 400 1000 8000 256 2005 256 430 1200 10320 256 2005 512 550 1700 13200 256 2006 512 650 1600 15600 256 Storia della Computer Graphics 33 MegaPixel/sec 16000 14000 12000 10000 8000 15 6000 i p lte o 0v te n ote p ù 4000 2000 0 1999 2000 2001 Year Storia della Computer Graphics 2004 2005 34 Sviluppo guidato dall’evoluzione dell’HW/SW Questi dispositivi forniscono informazioni di Anche le Anche le tecnologie tecnologie tipo posizionale al sistema, di input si sono di input si sono e consentonomouse, all’utente di sviluppate: sviluppate: mouse, specificare operazioni e tablet, joystick tablet, joystick comunicare informazioni con un uso della tastiera ridotto al minimo Storia della Computer Graphics 35 Software di elaborazione grafica Sw di animazione Maya, 3D Studio Max = Mayax SoftImage XSI Blender Sw elaborazione immagini 3D Bryce POV-Ray Poser Storia della Computer Graphics 36 Maya , 3D Max Studio Maya e’ sicuramente il più importante programma di animazione per il cinema: tutti gli studio lo utilizzano! Mentre 3DS Max e’ sicuramente il più importante programma di animazione per i video game Storia della Computer Graphics 37 SoftImage Rivale di Maya, è utilizzato nei film, pubblicità e giochi per la produzione di ambienti e scene 3D Storia della Computer Graphics 38 Blender Pacchetto sw free, disponibile per molti sistemi operativi: FreeBSD, IRIX, GNU/Linux, Microsoft Windows, Mac OS X, Solaris Storia della Computer Graphics 39 Bryce Nato per la rappresentazione di paesaggi generati da frattali, è ideale per la creazione di scenari 3D Storia della Computer Graphics 40 POV-Ray Storia della Computer Graphics 41 Poser (1995) Ottimizzato per la rappresentazione delle figure umane. Fornisce una ricca raccolta di figure umane, animali, robot, di pose, capigliature, espressioni facciali Storia della Computer Graphics 42 Processo generazione immagine 3D Il processo di generazione di una immagine 3D può suddivisa in passi noti come la 3D graphics pipeline I dettagli e l’ordine con cui questi passi sono effettuati può variare da scheda a scheda, ma in generale (e semplificando di molto!!!) avvengono i seguenti passi: 1.Progettazione della scena 2.Effetto dell’Illuminazione 3.Proiezione da 3D a 2D 4.Rendering Storia della Computer Graphics 43 Il passaggio da 3D a 2D Uno dei principali problemi che si devono risolvere quando si rappresenta una scena reale tramite computer, è quello di capire quali sono gli oggetti che sono “visibili” e quali sono quelli che sono “nascosti” o “parzialmente coperti” da altri oggetti Storia della Computer Graphics 44 L’algoritmo del pittore In questo algoritmo sono disegnati prima gli oggetti che sono lontani, e poi sono coperti con gli oggetti più vicini Storia della Computer Graphics 45 Z-buffering Per motivi di efficienza è effettuato direttamente dalla scheda grafica. La sua invenzione risale agli anni ’70 ed è attribuita ad Edwin Catmull, attuale presidente della Pixar. In questo algoritmo la profondità di ogni pixel da colorare è memorizzato in un area di memoria detta z-buffer. Di solito è un array a due dimensioni, con un elemento per ogni pixel. Se più oggetti richiedono di essere mostrati sullo stesso pixel, la scheda grafica confronta la loro posizione (la coordinata z) e sceglie quello più vicino all’osservatore. La profondità dell’oggetto scelto è memorizzata nello z-buffer. Storia della Computer Graphics Edwin Catmull 46 Algoritmi di illuminazione Storia della Computer Graphics 47 Ray tracing Ray-Tracing e' una tecnica di computer grafica per il rendering di immagini. Il metodo usato simula il tracciamento dei raggi di luce che partendo da una sorgente luminosa si riflettono sui vari oggetti definiti nella scena, o passano attraverso quelli trasparenti, ed infine colpiscono gli occhi dell'osservatore (o la lente di una macchina fotografica o camera). I tempi necessari al rendering dell'immagine sono proibitivi. Storia della Computer Graphics 48 Texture Storia della Computer Graphics 49 Breve storia algoritmi di illuminazione 1968 Ray tracing (Appel) 1971 Ray tracing (Goldstein and Nagel) 1973 Phong reflection model 1980 Ray tracing (Whitted) 1984 Radiosity (C. Goral, K. E. Torrance, D. P. Greenberg and B. Battaile) 1990 Ray tracing (Heckbert) 1995 Ray tracing (Veach) Storia della Computer Graphics 50 Passi principali nell’evoluzione Computer Graphics 1977: specifica del primo sistema per la grafica 2D (Core Graphic System) 1984: prima API industriale proprietaria della Silicon Graphics per grafica 3D (Graphics Library – GL) 1985: primo standard ufficiale di un’API per grafica 2D (Graphical Kernel System – GKS) 1988: primo standard ufficiale di un’API per la grafica 3D (Programmer’s Hierarchical Interactive Graphics System - PHIGS) 1992: standard che integra PHIGS con il windows management system X (PEX) Storia della Computer Graphics 51 Passi principali nell’evoluzione Computer Graphics 1993: primo standard industriale 3D portabile su diverse piattaforme hw: OpenGL 1993: API ad alto livello su base OpenGL che segue paradigmi simili a PHIGS (OpenInventor) 1995: API proprietaria Microsoft in concorrenza con OpenGL (Direct3D/DirectX) 1994/97: derivato da OpenInventor il primo linguaggio per la grafica 3D e la realtà virtuale su web (Virtual Reality Modeling Language – VRML) 1999: API Java per la grafica 3D (Java3D) 2002/03: estensioni di OpenGL e DirectX per il supporto di hw grafico programmabile (GPU) 2003+: linguaggi ad alto livello per GPU: Cg (NVIDIA), HLSL (Microsoft), OpenGL2.0 Storia della Computer Graphics 52 Bibliografia/Link Andrew Glassner: An introduction to ray tracing Lasseter: Principles of traditional animation applied to 3d computer animation A Critical History of Computer Graphics and Animation http://accad.osu.edu/~waynec/history/ID797.html http://profs.sci.univr.it/~fusiello/teaching/grafica/ Blender: http://www.blender3d.com/cms/Home.2.0.html POV-Ray: http://www.povray.org/ Wikipedia: http://en.wikipedia.org Storia della Computer Graphics 53