Grafica FS2004
file:///C:/Documents%20and%20Settings/arrex/Documenti/arrexhomepage/newhome/arrexvfr/Template.html
Frame rate e percezione dell'occhio umano



Ma qual è il frame rate ottimale? Si sentono diverse affermazioni su questo tema, tipo "l'occhio umano percepisce al massimo 25 immagini distinte al secondo, per cui andare oltre con il frame rate è inutile". Interessante teoria, peccato errata (almeno in parte nei presupposti e totalmente nella conclusione), tanto vero che passando da 25 a 50 frame al secondo si nota eccome la differenza!
Ma da dove saltano fuori questi fatidici 25 fotogrammi che sono sulla bocca di tutti? Dal cinema! La pellicola e' una successione di fotografie, mostrate in numero di 25 al secondo. E, indiscutibilmente nel cinema l'impressione di movimento e fluidità è totale. E allora? Dove sta l'inghippo? Perché in FS 25 fps sono ancora "scattosi"? Quante immagini puo' distinguere l'occhio umano?
Allora, l'occhio umano riconosce circa 20 immagini totalmente distinte al secondo, ma questo numero è molto soggettivo: certi individui ne percepiscono 5 altri 30. Ma ho detto 25 immagini distinte, non 25 immagini totali. La transizione tra questi fotogrammi, se sono molto diversi tra loro, viene percepita sotto forma di mancanza di fluidità.
Di nuovo, e nel cinema allora? Il trucco del cinema è un altro: in un videogame ci sono 25 immagini statiche al secondo, in un film 25 fotografie scattate con un tempo di esposizione di 1/25 secondi! E c'è una notevole differenza. Immaginiamo un'inquadratura statica di una strada deserta. Tutto è fermo o cambia talmente poco che avere tanti o pochi fotogrammi è superfluio. Immaginiamo ora in questa staticità arrivare una macchina che passa ad alta velocità e attraversa l'intera inquadratura in un secondo. Nel computer ci troveremmo con 25 immagini statiche (i nostri frame) che mostrano la macchina perfettamente nitida e a fuoco in 25 punti diversi dello schermo a comporre la sua traiettoria. A questa frequenza, troppo vicina a quella delle immagini distinte percepibili, l'occhio umano si rente conto che sono immagini nitide e si accorge che la macchina non ha un movimento fluido, ma si muove di un venticinquesimo di schermo alla volta. L'impressione di movimento c'è ma non di un movimento fluido. Al cinema invece sono state 25 fotografie con tempo di esposizione di 1/25 secondi. Per cui non sono immagini nitide! Si vede la macchina che lascia una "scia" di un venticinquesimo di schermo in ogni fotogramma. Ecco la differenza! La scia! Ossia il Motion Blur. È proprio questo a dare la sensazione di movimento e che permette a 25 fotogrammi di essere sufficienti. È la non staticità di questi fotogrammi, ma il fatto che mostrano tutto ciò che è successo nella durata del singolo fotogramma. E al contempo l'immagine statica della strada risulta sufficientemente nitida anche con un tempo di posa così lungo.
Possiamo mettere il Motion Blur nei frame di un videogame? Sì! È possibile, grazie ad una funzione del Vertex Shader. Purtroppo però è un effetto piuttosto pesante, per cui se si riescono ad ottenere 25 fps senza motion blur, attivandolo si scenderà a 10 o meno! Conviene invece puntare sull'aumentare il frame rate. A 50 fps le immagini sono temporalmente talmente vicine che l'occhio umano tende ad "impastarle" tra di loro e a crearsi da solo l'effetto scia: distingue solo una ventina di fotogrammi, ma quello che c'è in mezzo sono frazioni di fotogramma che lo aiutano a vedere il movimento fluido. Quindi 50 fps, spannometricamente, sono un buon target per il frame rate.
C'è poi da dire un'altra cosa; la percezione di fluidità viene disturbata molto di più dall'irregolarità del frame rate piuttosto che dal basso numero di fotogrammi. Nel cinema, se togliessimo il motion blur (cosa che si può fare scattando le fotografie con un tempo di apertura molto piccolo), noteremmo le immagini molto meno fluide, ma in breve l'occhio si abituerebbe e non percepiremmo più questo effetto; ma nel cinema i fotogrammi sono tutti esattamente distanziati di 1/25 secondi! In un videogame, l'indicazione 25 fps che si legge significa che nell'ultimo secondo sono stati elaborati 25 frame. Ma nessuno assicura che siano distanziati di 1/25 secondi. Magari i primi 3 sono arrivati alla velocità di 50 fps, poi quelli successivi hanno rallentato a 10 fps, poi hanno di nuovo accelerato... alla fine in un secondo ne sono stati portati a termine 25, e questo mostra il contatore. Questa irregolarità viene percepita eccome dall'occhio umano e l'effetto in FS è noto come micropausa. Cosa fare?
La cosa migliore è quella che fanno molti giochi per consolle e che FS stesso può fare: bloccare il frame rate. In una macchina che riesce a riprodurre supponiamo mediamente 40 fps, bloccarlo a 30 elimina tutte le fluttuazioni attorno al valore 40. 30 fps sono qualcosa che riesce a gestire senza problemi e quindi i fotogrammi saranno molto più regolari. Importante è la struttura del videogioco, che deve cercare di evitare in tutti i modi grosse fluttuazioni di frame rate, con operazioni di caricamento da disco asincrone e altre tecniche che vedremo in seguito. Da questo punto di vista diversi sforzi sono stati fatti in FS2004 rispetto a FS2002, ma ancora molto resta da fare. In FSX troviamo discreti miglioramenti in questa direzione, purtroppo vanificati dal fatto che il contatore sta a 14 fps al posto dei 30 di FS2004!