Flash Player 10 e versioni successive, Adobe AIR 1.5 e versioni successive
La classe
PerspectiveProjection
del pacchetto
flash.geom
fornisce un modo semplice per applicare una prospettiva rudimentale quando si spostano gli oggetti di visualizzazione nello spazio tridimensionale.
Se non create esplicitamente una proiezione prospettica per lo spazio tridimensionale, il modulo 3D utilizza un oggetto PerspectiveProjection predefinito presente nella radice e che viene propagato a tutti i relativi elementi secondari.
Le tre proprietà che definiscono il modo in cui un oggetto PerspectiveProjection visualizza lo spazio tridimensionale sono le seguenti:
-
fieldOfView
-
projectionCenter
-
focalLength
Se modificate il valore di
fieldOfView
, viene modificato automaticamente il valore di
focalLength
e viceversa, dal momento che sono proprietà interdipendenti.
La formula usata per calcolare
focalLength
, dato il valore
fieldOfView
, è la seguente:
focalLength = stageWidth/2 * (cos(fieldOfView/2) / sin(fieldOfView/2)
Di solito, la proprietà
fieldOfView
viene modificata esplicitamente.
Campo di visuale
Manipolando la proprietà
fieldOfView
della classe PerspectiveProjection, potete fare in modo che un oggetto di visualizzazione che si avvicina a chi guarda appaia più grande e che un oggetto che si allontana appaia più piccolo.
La proprietà
fieldOfView
specifica un angolo compreso tra 0 e 180 gradi che determina l'intensità della proiezione prospettica. Maggiore è il valore, più intensa è la distorsione applicata a un oggetto di visualizzazione che si muove lungo il proprio asse z. Un valore basso per
fieldOfView
produce una modifica in scala molto ridotta e fa in modo che l'oggetto sembri muoversi solo leggermente all'indietro nello spazio. Un valore elevato per
fieldOfView
provoca una distorsione superiore e l'impressione di un maggiore movimento. Il valore massimo di 179.9999... gradi genera un effetto tipo obiettivo grandangolo molto pronunciato. Il valore massimo di
fieldOfView
è 179.9999... e il valore minimo è 0.00001... I valori esatti 0 e 180 non sono validi.
Centro di proiezione
La proprietà
projectionCenter
rappresenta il fuoco prospettico nella proiezione prospettica. Viene applicata come offset del punto di registrazione predefinito (0,0) nell'angolo superiore sinistro dello stage.
Quando un oggetto sembra allontanarsi da chi guarda, si inclina verso il fuoco prospettico fino a svanire. Immaginate un corridoio lungo all'infinito. Quando guardate in fondo al corridoio, i bordi dei muri convergono in un fuoco prospettico (o punto di fuga) alla fine del corridoio.
Se il fuoco prospettico è al centro dello stage, il corridoio scompare verso un punto al centro. Il valore predefinito della proprietà
projectionCenter
è il centro dello stage. Se, ad esempio, desiderate che degli elementi appaiano sulla sinistra dello stage e che un'area 3D appaia sulla destra, impostate
projectionCenter
su un punto sulla destra dello stage per renderlo il fuoco prospettico dell'area di visualizzazione tridimensionale.
Distanza focale
La proprietà
focalLength
rappresenta la distanza tra l'origine del punto di vista (0,0,0) e la posizione dell'oggetto di visualizzazione sul proprio asse z.
Una distanza focale elevata è simile a un teleobiettivo, che produce una visualizzazione ristretta e distanze compresse tra gli oggetti. Una distanza focale ridotta è simile a un obiettivo grandangolare, che produce una visualizzazione ampia ma molto distorta. Un distanza focale media corrisponde più o meno a ciò che vede l'occhio umano.
Di solito, la proprietà
focalLength
viene ricalcolata dinamicamente durante la trasformazione prospettica man mano che l'oggetto di visualizzazione si sposta, ma potete anche impostarla esplicitamente.
Valori predefiniti di proiezione prospettica
L'oggetto PerspectiveProjection predefinito creato nella radice ha i valori seguenti:
-
fieldOfView: 55
-
perspectiveCenter: stagewidth/2, stageHeight/2
-
focalLength: stageWidth/ 2 * ( cos(fieldOfView/2) / sin(fieldOfView/2) )
Questi sono i valori che vengono utilizzati se non create un oggetto PerspectiveProjection personalizzato.
Potete creare l'istanza di un oggetto PerspectiveProjection personalizzato con l'intenzione di modificare personalmente
projectionCenter
e
fieldOfView
. In tal caso, i valori predefiniti del nuovo oggetto creato sono i seguenti, in base alla dimensione predefinita (500x500) dello stage:
|
|
|