A classe
PerspectiveProjection
do pacote
flash.geom
oferece uma maneira simples de aplicar perspectiva rudimentar quando você movimenta objetos de exibição pelo espaço 3D.
Caso você não crie uma projeção em perspectiva para o espaço 3D explicitamente, o mecanismo 3D usará um objeto PerspectiveProjection padrão que existe na raiz e é propagado para todos os seus filhos.
As três propriedades que definem como um objeto PerspectiveProjection exibe o espaço 3D são:
-
fieldOfView
-
projectionCenter
-
focalLength
Modificar o valor de
fieldOfView
modifica automaticamente o valor de
focalLength
e vice-versa, uma vez que elas são interdependentes.
A fórmula usada para calcular a propriedade
focalLength
considerando-se o valor de
fieldOfView
é a seguinte:
focalLength = stageWidth/2 * (cos(fieldOfView/2) / sin(fieldOfView/2)
Normalmente você modificaria a propriedade
fieldOfView
de maneira explícita.
Campo de visão
Manipulando a propriedade
fieldOfView
da classe PerspectiveProjection, é possível fazer com que um objeto de exibição 3D que está se aproximando do visualizador pareça maior e com que um objeto que está se afastando do visualizador pareça menor.
A propriedade
fieldOfView
especifica um ângulo entre 0 e 180 graus que determina a intensidade da projeção em perspectiva. Quanto maior o valor, mais intensa a distorção aplicada a um objeto de exibição que se movimenta em seu eixo z. Um valor baixo de
fieldOfView
resulta em um dimensionamento muito pequeno e faz com que os objetos pareçam se movimentar apenas um pouco para trás no espaço. Um valor alto de
fieldOfView
gera mais distorção e o aspecto de maior movimento. O valor máximo de 179,9999... graus resulta em um efeito extremo da lente de olho de peixe. O valor máximo de
fieldOfView
é 179,9999... e o mínimo é 0,00001... 0 e 180 exatos são valores inválidos.
Centro da projeção
A propriedade
projectionCenter
representa o ponto de fuga na projeção em perspectiva. Ela é aplicada como um deslocamento até o ponto de registro padrão (0,0) no canto superior esquerdo do palco.
Conforme um objeto parece se afastar do visualizador, ele se movimenta em direção ao ponto de fuga e, por fim, desaparece. Imagine um corredor infinitamente longo. Quando você olha para o final dele, as extremidades das paredes se convergem em um ponto de fuga no final do corredor.
Se o ponto de fuga está no centro do palco, o corredor desaparece em direção a um ponto no centro. O valor padrão da propriedade
projectionCenter
é o centro do palco. Se, por exemplo, você quiser que os elementos apareçam no lado esquerdo do palco e que uma área 3D apareça no lado direito, defina
projectionCenter
como um ponto no lado direito do palco para torná-lo o ponto de fuga da sua área de exibição 3D.
Distância focal
A propriedade
focalLength
representa a distância entre a origem do ponto de visão (0,0,0) e a localização do objeto de exibição em seu eixo z.
Uma distância focal longa é como uma teleobjetiva com uma visualização limitada e distâncias reduzidas entre objetos. Uma distância focal curta é como uma lente com grande abertura angular, com a qual você tem uma visualização ampla com muita distorção. Uma distância focal média assemelha-se ao que os olhos humanos veem.
Normalmente, a propriedade
focalLength
é recalculada dinamicamente durante a transformação de perspectiva à medida que o objeto de exibição se movimenta, mas é possível defini-la de forma explícita.
Valores padrão da projeção em perspectiva
O objeto PerspectiveProjection padrão criado na raiz tem os seguintes valores:
-
fieldOfView: 55
-
perspectiveCenter: stagewidth/2, stageHeight/2
-
focalLength: stageWidth/ 2 * ( cos(fieldOfView/2) / sin(fieldOfView/2) )
Esses são os valores que serão utilizados se você não criar seu próprio objeto PerspectiveProjection.
É possível instanciar seu próprio objeto PerspectiveProjection com a intenção de você mesmo modificar
projectionCenter
e
fieldOfView
. Nesse caso, os valores padrão do objeto recém-criado são os seguintes, de acordo com um tamanho de palco padrão de 500 por 500:
|
|
|