Flash Player 10 et les versions ultérieures, Adobe AIR 1.5 et les versions ultérieures
La classe
PerspectiveProjection
du package
flash.geom
facilite l’application d’une perspective rudimentaire lors du déplacement d’objets d’affichage dans l’espace 3D.
Si vous ne créez pas explicitement une projection de perspective pour votre espace 3D, le moteur 3D utilise un objet PerspectiveProjection par défaut, qui existe sur la racine et est propagé à tous ses enfants.
Les trois propriétés qui définissent le mode d’affichage de l’espace 3D par un objet PerspectiveProjection sont les suivantes :
-
fieldOfView
-
projectionCenter
-
focalLength
La modification de la valeur de
fieldOfView
entraîne automatiquement la modification de la valeur de
focalLength
, et inversement, car ces propriétés sont interdépendantes.
La formule permettant de calculer
focalLength
en fonction de la valeur de
fieldOfView
est la suivante :
focalLength = stageWidth/2 * (cos(fieldOfView/2) / sin(fieldOfView/2)
En règle générale, vous modifiez explicitement la propriété
fieldOfView
.
Champ de vision
En manipulant la propriété
fieldOfView
de la classe PerspectiveProjection, vous pouvez faire en sorte qu’un objet d’affichage 3D semble s’agrandir ou diminuer selon qu’il se rapproche ou s’éloigne de l’observateur, respectivement.
La propriété
fieldOfView
définit un angle
compris entre
0 et 180 degrés qui détermine la puissance de la projection de perspective. Plus la valeur est élevée, plus forte est la distorsion appliquée à un objet d’affichage qui se déplace sur son axe z. Une valeur
fieldOfView
basse entraîne une mise à l’échelle minimale et les objets ne semblent reculer que très légèrement. Une valeur élevéeentraîne une plus grande distorsion et une impression plus prononcée de mouvement. La valeur maximale, 179,9999... degrés, produit un effet d’objectif œil-de-poisson extrême. La valeur maximale de
fieldOfView
est 179,9999..., tandis que 0,00001... est sa valeur minimale. Les valeurs exactes de 0 et 180 sont illégales.
Centre de la projection
La propriété
projectionCenter
représente le point de fuite de la projection de perspective. Elle est appliquée comme décalage du point d’alignement par défaut (0,0) dans l’angle supérieur gauche de la scène.
A mesure qu’il semble s’éloigner de l’observateur, un objet s’incline vers le point de fuite et finit par disparaître. Imaginez un couloir extrêmement long. Lorsque vous regardez dans le couloir, les bords des murs convergent vers un point de fuite tout au fond.
Si le point de fuite se trouve au centre de la scène, le couloir disparaît vers un point central. La valeur par défaut de la propriété
projectionCenter
correspond au centre de la scène. Si, par exemple, vous souhaitez que des éléments apparaissent sur la gauche de la scène et une zone 3D sur la droite de la scène, définissez la propriété
projectionCenter
sur un point situé dans la partie droite de la scène pour en faire le point de fuite de votre zone d’affichage 3D.
Distance focale
La propriété
focalLength
représente la distance séparant l’origine du point de vue (0,0,0) de l’emplacement de l’objet d’affichage sur son axe z.
Une distance focale élevée est similaire à un téléobjectif : le champ de vision est étroit et les distances entre les objets compressées. Une distance focale courte s’assimile à un objectif à grand angle et se caractérise par un champ de vision large et une distorsion prononcée. Une distance focale moyenne correspond approximativement à ce que voit l’œil humain.
En règle générale, la propriété
focalLength
est recalculée dynamiquement pendant la transformation de perspective au fur et à mesure du déplacement de l’objet d’affichage, mais il est possible de la définir explicitement.
Valeurs par défaut de la projection de perspective
L’objet PerspectiveProjection par défaut créé sur la racine possède les valeurs suivantes :
-
fieldOfView : 55
-
perspectiveCenter : stagewidth/2, stageHeight/2
-
focalLength : stageWidth/ 2 * ( cos(fieldOfView/2) / sin(fieldOfView/2) )
Ces valeurs sont appliquées si vous ne créez pas votre propre objet PerspectiveProjection.
Vous pouvez instancier votre propre objet PerspectiveProjection dans l’intention de modifier vous-même les propriétés
projectionCenter
et
fieldOfView
. Dans ce cas, les valeurs par défaut du nouvel objet sont les suivantes, en supposant que la scène mesure 500 sur 500 par défaut :
|
|
|