Matteo Pignatelli
a- a+

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.