Matteo Pignatelli
a- a+

La prospettiva 3D

In questo tutorial voglio realizzare una breve spiegazione della 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 se stessa 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) avremo Scale = 150/(150+500) che sarà all'incirca uguale a 0.23

Come possiamo vedere, più si incrementa Z più il fattore Scale tende a zero.
Quando Z è zero il fattore Scale è uguale a 1.

 

A questo punto qualcuno si chiederà: a cosa serve il fattore Scale ?

Come possiamo vedere dalla figura sopra, con la distanza si modificano due cose:

1 - La dimensione dell'oggetto
2 - La sua vicinanza al centro (chiamata anche Punto di fuga).

Tutto questo, in Flash si traduce semplicemente con

_xscale
_yscale
_x
_y

Quindi, un esempio di come si può applicare questa teoria ad un oggetto in Flash è il seguente: prima di tutto 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 di fuga è a 0,0
In altre parole, più l'oggetto si allontana più si avvicina a 0,0

In Flash, questo valore equivale all'angolo superiore sinistro dello schermo, quindi dovremo aggiungere un valore di centratura per fare in modo di posizionare l'oggetto vicino 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 in qualcosa di più interessante.



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Francesco
Hai dubbi su questo articolo?