La clase
PerspectiveProjection
del paquete
flash.geom
proporciona una forma sencilla de aplicar una perspectiva básica al mover objetos de visualización en un espacio 3D.
Si no crea de forma explícita una proyección en perspectiva para el espacio 3D, el motor 3D utiliza un objeto PerspectiveProjection predeterminado que se encuentra en la raíz y se propaga a todos sus elementos secundarios.
Las tres propiedades que definen cómo muestra un objeto PerspectiveProjection el espacio 3D son las siguientes:
-
fieldOfView
-
projectionCenter
-
focalLength
Con la modificación del valor de
fieldOfView
, cambia automáticamente el valor de
focalLength
y viceversa, ya que son interdependientes.
La fórmula utilizada para calcular
focalLength
dado el valor de
fieldOfView
es la siguiente:
focalLength = stageWidth/2 * (cos(fieldOfView/2) / sin(fieldOfView/2)
Generalmente se modificaría la propiedad
fieldOfView
de forma explícita.
Campo visual
Con la manipulación de la propiedad
fieldOfView
de la clase PerspectiveProjection, puede hacer que un objeto de visualización 3D que se acerca al espectador parezca más grande y que un objeto que se aleja del espectador parezca más pequeño.
La propiedad
fieldOfView
especifica un ángulo entre 0 y 180 grados que determina la intensidad de la proyección en perspectiva. Cuanto mayor es el valor, mayor es la distorsión aplicada a un objeto de visualización que se mueve por su eje z. Un valor
fieldOfView
bajo implica un ajuste de escala muy pequeño y hace que objeto solo parezca moverse ligeramente hacia atrás en el espacio. Un valor
fieldOfView
alto causa más distorsión y la apariencia de mayor movimiento. El valor máximo de 179,9999... tiene como resultado un efecto de lente de cámara "ojo de pez" extremo. El valor máximo de
fieldOfView
es 179.9999... y el mínimo es de 0,00001... Exactamente 0 y 180 son valores no permitidos.
Centro de proyección
La propiedad
projectionCenter
representa el punto de fuga en la proyección en perspectiva. Se aplica como desplazamiento en el punto de registro predeterminado (0,0) en la esquina superior izquierda del escenario.
Cuando un objeto parece alejarse del espectador, se sesga hacia el punto de fuga y finalmente desaparece. Imagine un pasillo infinitamente largo. Cuando mira el pasillo hacia delante, los bordes de las paredes convergen en un punto de fuga hacia el final del pasillo.
Si el punto de fuga está en el centro del escenario, el pasillo desaparece hacia un punto en el centro. El valor predeterminado de la propiedad
projectionCenter
es el centro del escenario. Si, por ejemplo, desea que los elementos aparezcan en la parte izquierda del escenario y un área 3D a la derecha, establezca
projectionCenter
en un punto en la derecha del escenario para que ese sea el punto de fuga del área de visualización 3D.
Distancia focal
La propiedad
focalLength
representa la distancia entre el origen del punto de vista (0,0,0) y la ubicación del objeto de visualización en su eje z.
Una distancia focal larga es como una lente telefoto con una vista estrecha y distancias comprimidas entre objetos. Una distancia focal corta es como una lente gran angular, con la que se obtiene una vista amplia con mucha distorsión. La distancia focal media se aproxima a lo que vé el ojo humano.
Generalmente el valor
focalLength
se vuelve a calcular de forma dinámica durante la transformación de perspectiva conforme se mueve el objeto de visualización, aunque se puede establecer de forma explícita.
Valores de proyección en perspectiva predeterminados
El objeto predeterminado PerspectiveProjection creado en la raíz tiene los siguientes valores:
-
fieldOfView: 55
-
perspectiveCenter: stagewidth/2, stageHeight/2
-
focalLength: stageWidth/ 2 * ( cos(fieldOfView/2) / sin(fieldOfView/2) )
Estos son los valores que se utilizan si no crea su propio objeto PerspectiveProjection.
Puede crear una instancia de su propio objeto PerspectiveProjection con el fin realizar una modificación propia de
projectionCenter
y
fieldOfView
. En este caso, los valores predeterminados del objeto recién creado son los siguientes, en función del tamaño del escenario predeterminado de 500 por 500:
|
|
|