La prospettiva 3D
In questo tutorial voglio realizzare una breve spiegazionedella prospettiva 3D.
La formula base per la prospettiva 3D è la seguente:
scale=fl/(fl+z)
dove:
fl = lunghezza focale
Z = profondità"all'interno" dello schermo
Ecco come si presenta da un punto di vista laterale:
Ora, prendiamo la lunghezza focale e dividiamola per sestessa più Z
Scale = fl/(fl+z)
Mettiamo che fl sia uguale a 150
Se Z=0 avremo Scale =150/(150+0) che sarà uguale a 1
Se Z=100 avremo Scale =150/(150+100) che sarà uguale a 0.6
Se Z=500 (molto lontano) avremoScale = 150/(150+500) che saràall'incirca uguale a 0.23
Come possiamo vedere, più si incrementaZ più il fattoreScale tende a zero.
Quando Z è zero il fattoreScale è uguale a 1.
A questo punto qualcuno si chiederà: a cosa serve ilfattore Scale ?
Come possiamo vedere dalla figura sopra, con la distanza simodificano due cose:
1 - La dimensione dell'oggetto
2 - La sua vicinanza al centro (chiamata anche Punto difuga).
Tutto questo, in Flash si traduce semplicemente con
_xscale
_yscale
_x
_y
Quindi, un esempio di come si può applicare questateoria ad un oggetto in Flash è il seguente: prima ditutto settiamo i nostri valori x, y, z quindi diciamo che
scale=fl/(fl+z);_x=x*scale;_y=y*scale;_xscale = _yscale = scale*100;
Una cosa da ricordare è che l'orizzonte o punto difuga è a 0,0
In altre parole, più l'oggetto si allontanapiù si avvicina a 0,0
In Flash, questo valore equivale all'angolo superioresinistro dello schermo, quindi dovremo aggiungere un valoredi centratura per fare in modo di posizionare l'oggettovicino al centro dello schermo:
xcenter=275;ycenter=200;scale=fl/(fl+z);_x=x*scale+xcenter;_y=y*scale+ycenter;_xscale = _yscale = scale*100;
Per quanto riguarda il posizionamento degli oggetti,ricordiamoci che:
- un valore negativo di X porteràl'oggetto alla sinistra del centro dello schermo
- un valore positivo di X porteràl'oggetto alla destra del centro dello schermo
- un valore negativo di Y porteràl'oggetto sopra la linea dell'orizzonte (in aria)
- un valore positivo di Y porteràl'oggetto sotto la linea dell'orizzonte (per terra)
Spero che possiate usare queste informazioni e migliorarle inqualcosa di più interessante.
