UPDATE: Lo dovrei rileggere!
Qual è il mercato che, negli ultimi decenni, si è espanso talmente tanto da meritare una precisa classificazione nei “breviari” dell’economia? Il settore videoludico che, ed è facile intuirlo, si occupa di tutti i titoli di intrattenimento sia per console (Playstation, XBox, Nintendo) sia per PC.
L’immagine del videogicatore è radicalmente cambiata; basti pensare al fatto che soltanto un decennio addietro il profilo del gamer era ben presto definito: un ragazzino brufoloso che passa ore davanti alla playstation. Oggi, invece, la situazione è differente? Decisamente si. Innanzitutto, oltre ai ragazzini, giocano anche le ragazzine. Ed anche i loro genitori. Il videogioco è, dunque, un mezzo talmente vasto da spingere una intera industria, che usando un termine tecnico definirei settoriale, a produrre sempre nuovi titoli.
Sorge una domanda: cos’è un videogioco? Non è semplice definirlo, proprio perché essendo un campo molto vasto, di conseguenza, anche la definizione dovrebbe abbracciare un consistente numero di punti. E, probabilmente, a noi, nemmeno interessa. Già perché dire “un videogioco è un coso nel quale tu muovi un personaggio a destra a sinistra e combatti contro alcuni nemici” rende perfettamente l’idea. È importante che in quel coso muovi un personaggio, generalmente in un mondo tridimensionale.
Il 3d è fatto da “poligoni”, anzi triangoli
Cos’è la tridimensionalità? Senza scomodare i fisici, che aggiungono altre due o tre dimensioni a quelle che noi già conosciamo, possiamo dire che un sistema tridimensionale è un sistema dato dalla possibilità di inserire in esso dei punti o degli oggetti nelle tre dimensioni che conosciamo. Traducendo il tutto in un linguaggio matematico assumiamo che un sistema si definisce tridimensionale quando un qualsiasi punto, in esso contenuto, possa essere individuato da tre coordinate (x, y, z).
Quando la playstation fu presentata al mercato, ero sbalordito dalla capacità che aveva il sistema grafico di gestire oltre 300.000 poligoni. Un poligono, secondo una basilare nozione di geometria, è una figura data da una porzione bidimensionale, ovvero a due dimensioni, dello spazio idealmente contenuto da una linea chiusa.
Immaginiamo un campo da calcio; il poligono di gioco sarebbe il rettangolo delimitato dalle linee che passano da una bandierina del corner ad un altra. La playstation, dunque, poteva muovere 300.000 poligoni, ad esempio rombi, rettangoli, triangoli, esagoni, pentagoni? No, il termine poligono si riferisce esclusivamente al triangolo.
Il triangolo è l’unità di misura della grafica tridimensionale. È l’equivalente del secondo, per la misurazione del tempo, del metro, per la misurazione della lunghezza e via dicendo. Dunque un campo da calcio è idealmente formato da due triangoli, i cui angoli posano su tre delle quattro bandierine. Sembra un assurdità dover sprecare due vertici per fare ciò che potrebbe essere fatto con quattro vertici (2 triangoli = 6 vertici, 1 rettangolo = 4 vertici). Eppure, non è così. Perché?
Immaginiamo un triangolo con i lati colorati in nero. Possiede tre vertici, giusto? Immaginiamo una stanza vuota, con le pareti bianche, e posizionamo in modo casuale questo triangolo. Ovvero ruotiamolo, spostiamolo, alziamolo e allontaniamolo. Per ogni singolo vertice quali sono le tre coordinate che descrivono la posizione? Le abbiamo già incontrate: x, y e z. A noi, esseri umani pensanti, verrebbe semplice colorare idealmente il triangolo, ad esempio di rosso. Altrattanto semplicemente immagineremo un quadrato, un pentagono e via dicendo. Ma il computer? Come potrebbe risolvere la questione? Facciamo finta di essere un elaboratore, le istruzioni sarebbero queste:
Istruzione -> Crea un poligono di tipo pentagono con coordinate 1,1,1; 2,2,2; 3,3,3; 4,4,4; 5,5,5. Risultato -> Fatto. Istruzione -> Adesso colora di rosso questo poligono. Risultato -> Mhh, vediamo. Abbiamo detto che è un pentagono, dunque devo vedere la geometria e calcolare quali punti, nello spazio colorare. Istruzione -> A che punto sei? Risultato -> Un attimo, sto vedendo quali punti colorare. Sto colorando sopra la base. Non è semplice.
Vediamo un fanta esempio, supponiamo che l’elaboratore gestisca soltanto triangoli.
Istruzione -> Crea un poligono di tipo triangolo con coordinate 1,1,1; 2,2,2; 3,3,3 e coloralo di rosso Risultato -> Di tipo triangolo. Semplice, sono specializzato nel fare questo. Istruzione -> A che punto sei? Risultato -> Fatto. Istruzione -> Bravo. Risultato -> Grazie.
Tanto più un elaboratore, o per meglio dire un processore, è specializzato nel compiere una sola azione tanto prima la esegue. In fin dei conti questa è una nozione di biologia del primo anno. Le cellule umane sono quasi tutte specializzate nel fare una cosa: quelle dei muscoli nel contrarsi, quelle delle ghiandolo nella secrezione di sostanze, quelle dell’occhio nella ricezione delle onde luminose. Se ogni cellula sapesse fare tutto probabilmente, noi esseri umani, non saremmo altro che delle amebe gelatinose di 80Kg. E non potremmo leggere questo piccolo tutorial.
Se non siete ancora convinti del fatto che un triangolo è un poligono migliore di qualunque altro ho una domanda fa farvi. Se posso creare un rettangolo utilizzando due triangoli, quanti rettangoli mi servono per creare un triangolo? E per creare un cerchio?
Una scena tridimensionale
Una volta compreso che il triangolo è l’unità base della nostra scena tridimensionale dovrebbe essere facile capire che un qualsiasi oggetto, e di conseguenza una scena intera che è formata da più oggetti, non è altro che un insieme di triangoli. Un mattone possiede sei facce, ovvero sei quadrati. Rappresentare un mattone, nella maniera più semplice, vorrebbe dire trasformare la sua geometria in dodici triangoli. Cento mattoni vengono rappresentati da 1200 triangoli. E cento mattoni formano un muro che è parte di una scena tridimensionale.
La quarta dimensione: il tempo
Ancora adesso, un videogioco, si dice che va “a scatti” quando le immagini non vengono rappresentate fluidamente. Questo può succedere per una infinità di motivi, specialmente nell’ambito del PC. Ad esempio poca RAM o un processore grafico che non è abbastanza potente per gestire la complessità della scena e degli effetti ad essa applicata. Torniamo indietro ai circa 300.000 poligoni mossi dalla playstation 1 ed introduciamo la quarta dimensione, ovvero il tempo. Già perché quel parametro, ovvero quelle migliaia di poligoni, va riferito in un intervallo di tempo pari ad un secondo. In genere un “video” viene percepito fluido quando, in un secondo, vengono rappresentate 24 immagini.
Facendo un rapido calcolo scopriamo che in un intervallo di un secondo devono essere create e visualizzate 24 immagini, altrimenti il cervello percepisce che la scena si muove in modo poco fluido. I 300.000 poligoni devono essere, come minimo, diviso per 24 immagini. In altre parole in un secondo ci sono 24 frames (frame, in inglese vuol dire proprio immagine o fotografia) e, pertanto, un sistema capace di muovere 300.000 triangoli per secondo può per singolo frame, gestire 12500 triangoli. Abbiamo visto che cento mattoni si traducono in 1200 poligoni. Mille mattoni sarebbero 12.000 poligoni. Se alla playstation venisse chiesto di renderizzare, ovvero di provvedere alla costruzione della scena ed applicare gli effetti (che vedremo in avanti) con 1000 mattoni, non ci sarebbero problemi. La scena sarebbe molto fluida.
Qui può nascere un equivoco. Immaginiamo di giocare ad uno sparatutto in prima persona, ovvero un first person shooter (FPS), nel quale vediamo la nostra mano impugnare un’arma (questo costava ai tempi della playstation circa 100 triangoli). Se fosse così un intero livello dovrebbe possedere circa mille mattoni? Ovviamente no! I mille mattoni sono quelli visualizzati, in quel frame, dal punto di vista del videogioco. Se portiamo il nostro personaggio di fronte ad un muro, tutto ciò che c’è oltre il muro (anche milioni di triangoli) non viene visualizzato. In altre parole al processore non viene chiesto di fare i complessi calcoli per stabilire la posizione di ciò che non viene visto. Questo, tecnicamente, viene definito clipping.
Più triangoli = più definizione
Vi ricordate quando, giusto poche righe addietro, vi ho detto che un campo da calcio potrebbe essere formato da due triangoli? È vero, ma solo in parte. I poligoni non sono entità a sé stanti, ma possono essere processati per poter essere affiancati a degli effetti. Facciamo un passo avanti e diciamo che, nel nostro campo di calcio, c’è un pallone che proietta un’ombra in base alla posizione dei faretti e della posizione relativa al campo. Come viene applicata l’effetto ombra al poligono? Se, dopo aver calcolato la proiezione dell’ombra, il poligono deve “scurirsi” lo farà. Ma se in un campo abbbiamo soltanto due poligono, cioè un area molto vasta, è molto probabile che l’ombra ricadrà su ambedue i poligoni. O su uno solo, ipotizzando che il pallone sia esattamente al centro rispetto alla linea di fondocampo. Se il campo fosse formato da cento triangoli, soltanto sei o sette, ovvero quelli adiacenti al pallone sarebbero più scuri, simulando l’ombra, rispetto a quelli più chiari, dove l’ombra non è proiettata.
In realtà quello dell’ombra è un discorso puramente speculativo poiché questa viene riprodotta, come vedremo più avanti, con una texture applicata. È proprio l’applicazione della texture del terreno di gioco, ovvero dell’erbetta, a creare potenziali problemi. Ma, adesso, questi argomenti potrebbero confondere.
