Вы находитесь на странице: 1из 8

Por lo general, se tendrn muchos objetos con coordenadas geomtricas

especificadas de forma independiente. Estos deben ser transformado


(trasladado, escalado, y orientado) en la escena. Entonces, la escena en s
tiene que ser visto desde una ubicacin particular, la direccin, la escala y la
orientacin.
Visualizacin
Si mostramos tpicamente coordenadas de un modelo directamente en nuestro
dispositivo de despliegue, probablemente no veremos nada. El rango de
coordenadas en el modelo ( -100 a 100 metros) no coincide con el rango de
coordenadas de nuestro dispositivo de pantalla (0 a 1.919 pxeles) y sera
molesto limitarnos a las coordenadas que coincidan.
Adems, queremos ver el modelo desde diferentes lugares, direcciones, y
perspectivas. Fundamentalmente, la pantalla es un rectngulo plano
bidimensional, mientras que nuestro modelo contiene geometra tridimensional
extendida. Aqu se mostrar cmo proyectar coordenadas tridimensionales de
nuestro modelo en las coordenadas de la pantalla de dos dimensiones fijas.
Las herramientas clave para la proyeccin de tres dimensiones a dos son un
modelo de visualizacin, uso de coordenadas homogneas, la aplicacin de
transformaciones lineales mediante la multiplicacin de matrices, y la creacin
de una cartografa de la vista. Estas herramientas estn cada discuten en
detalle a continuacin.

Modelo de Vista
Por el momento, es importante seguir pensando en trminos de coordenadas
tridimensionales al tiempo que muchas de las decisiones que determinan lo
que se dibuja en la pantalla. Es demasiado pronto para empezar a pensar en
que es necesario elaborar pxeles. En su lugar, tratar de visualizar el espacio
tridimensional. Es ms tarde, una vez que finalicen las transformaciones de
visin, despus de que los sujetos de este captulo, que los pxeles entrarn en
la discusin.
Modelo de Cmara
El proceso de transformacin comn para la produccin de la vista deseada es
anloga a la de tomar una fotografa con una cmara. Como se muestra en la
Figura 5.1 los pasos con una cmara (o un ordenador) que podra ser la
siguiente:

1. Mueva la cmara a la ubicacin que desee para disparar desde y sealar


la direccin deseada de la cmara. (la transformacin de visualizacin)
2. Mueva el sujeto a fotografiar en la ubicacin deseada en la escena
(transformacin de modelado).
3. Elija una lente de la cmara o ajuste el zoom (transformacin de
proyeccin).
4. Tome la fotografa (aplicar las transformaciones).
5. estirar o encoger la imagen resultante con el tamao de imagen
deseado (transformacin de visualizacin). Para los grficos en 3D, esto
tambin incluye estiramiento o encogimiento de la profundidad (escala
de profundidad de gama). Esto no se debe confundir con el Paso 3, que
selecciona qu parte de la escena a capturar, no cunto para estirar el
resultado.
Observemos que los pasos 1 y 2 se puede considerar lo mismo, pero en
direcciones opuestas. Se puede dejar la cmara en un punto y traer la escena
en frente de ella, o dejar la escena en un punto y mover la cmara hacia el
sujeto. Mover la cmara a la izquierda es el mismo que mover el objeto a la
derecha. Girar la cmara hacia la derecha es el mismo que el sujeto gire en
sentido antihorario. Realmente depende dcada quien, qu movimientos se
realizan como parte de la Paso 1, y el resto pertenecen al Paso 2. Debido a
esto, estos dos pasos son normalmente agrupados transformacin del modelo
de vista. Sin embargo, siempre consistir en una secuencia de movimientos
(Translaciones), rotaciones y escalamientos. La caracterstica definitoria de
esta combinacin es en la fabricacin de un espacio nico y unificado para
todos los objetos reunidos en un solo lugar para ver, o espacio de ojo.
En OpenGL, nosotros somos responsables de hacer los pasos 1 a 3 anteriores
mediante shaders. Es decir, se requiere entregar coordenadas con el modelo
de vista y las transformaciones de proyeccin previamente calculadas. Tambin

debemos decirle a OpenGL cmo hacer la transformacin de visualizacin para


el Paso 5.
La Figura 5.2 resume los sistemas de coordenadas requeridas por OpenGL para
el proceso completo. Hasta ahora, hemos hablado de la segunda caja
(trasformaciones de usuario), pero estamos mostrando el resto a establecer el
contexto de toda la pila de visualizacin, terminando con la forma de
especificar su rango de visualizacin y profundidad a OpenGL. Las coordenadas
definitivas dictadas a OpenGL para el recorte y la rasterizacin son
coordenadas homogneas normalizadas. Es decir, las coordenadas que se
pueden extraer estar en el rango [-1,0, 1,0] hasta las escala OpenGL para
ajustarse a la ventana.
El paso 3 nos muestra una analoga de elegir un lente de la cmara con la que
tomaremos la fotografa. Selecciona que tan estrecho o ancho es el cono
rectangular a travs del que se capturar la escena. Slo la geometra
comprendida en este cono estar presente en la imagen final. Al mismo
tiempo, el Paso 3 tambin producir la informacin necesaria (en el cuarto
homognea de coordenadas, w) para despus crear el efecto escorzo de la
perspectiva.
OpenGL excluir adems, la geometra que est demasiado cerca o demasiado
lejos; es decir, aquellos en frente de un plano o cerca de los que estn detrs
de un plano lejano. No hay ninguna contrapartida de este en la analoga de la
cmara (aparte de la limpieza objetos extraos dentro de su objetivo), pero es
til en una variedad de maneras. Lo ms importante, objetos que se aproximan
vrtice del cono aparecen infinitamente grande, que causa problemas,
especialmente si se deben alcanzar el pice. En el otro extremo de este
espectro, objetos muy lejanos que se pueden extraer de la escena estn mejor
excluidos por razones de rendimiento y algunas razones de precisin
profundidad, as, si la profundidad debe abarcar demasiado grande la distancia.
Por lo tanto, tenemos dos planos adicionales que se intersectan con los cuatro
planos del cono de visin rectangular. Como se muestra en la Figura 5.4, estos
seis planos definen un volumen de visualizacin de forma troncocnica.

Modelo de Vista Ortogrfica


A veces, no se desea una vista en perspectiva y una vista ortogrfica se utiliza
en su lugar. Este tipo de proyeccin es utilizado por aplicaciones de planos
arquitectnicos y de diseo asistido por computadora, donde es crucial para
mantener los tamaos reales de los objetos y los ngulos entre ellos a medida
que se proyectan. Esto podra hacerse simplemente haciendo caso omiso de
uno de los ejes X, Y, o coordenadas z, dejando que los otros dos coordenadas
dan ubicaciones de dos dimensiones. Se podra hacer eso, por supuesto,
despus de la orientacin de los objetos y la escena con las trasformaciones
del modelo de vista, como con el modelo de la cmara. Pero al final, todava se
tendr que localizar y escalar el modelo resultante para la visualizacin en
coordenadas de dispositivos normalizados. La transformacin de esto es la
ltima que se da en la siguiente seccin.

Las etapas del canal de renderizado que transforman las coordenadas


tridimensionales para visualizacin OpenGL se muestran en la Figura 5.5.
Esencialmente, son las etapas programables que comparezcan ante la
rasterizacin. Debido a que estas etapas son programables, por tanto tenemos
una gran flexibilidad en la forma inicial de sus coordenadas y en cmo puede
transformarlas. Sin embargo, estamos obligados a terminar con las etapas fijas
(no programables) posteriores necesarias. Es decir, tendremos que hacer
coordenadas homogneas que estn listos para la divisin perspectiva
(tambin conocida como las coordenadas de recorte). Lo que esto significa y
cmo hacerlo son los temas de las siguientes secciones.
Cada uno de los modelos de vista (pasos anteriores) se llaman como una
transformacin. Son todas las transformaciones lineales que se pueden lograr a
travs de la multiplicacin de matrices en coordenadas homogneas. La
prxima multiplicacin de matrices y coordinar las secciones homogneas dan
refrescos sobre estos temas. La comprensin de ellos es la clave para entender
realmente cmo funcionan las transformaciones OpenGL.
En un shader, transformando un vrtice por una matriz es la siguiente:
#version 330 core
uniform mat4 Transform; // se mantiene igual durante muchos vrtices
// (granularidad primitivo)
in vec4 Vertex;
// por cada vrtices se envan datos
// shader est corriendo
void main()
{
gl_Position = Transform * Vertex;
}

Transformaciones lineales son componibles; lo que slo porque nuestra


analoga cmara necesit cuatro pasos de transformacin no significa que
tenemos que transformar nuestros datos cuatro veces. Ms bien, todas esas
transformaciones se pueden componer en una nica transformacin. Si
queremos transformar nuestro modelo por primera vez por la matriz de
transformacin A seguido de matriz de transformacin B, veremos qu
podemos hacerlo con matriz de transformacin C, donde

C=AB
(Debido a que estamos mostrando ejemplos de la multiplicacin de matrices
con el vrtice de la derecha y la matriz de la izquierda, la composicin de
transformaciones aparecen en orden inverso: B se aplica al resultado de la
aplicacin de un a un vrtice los detalles detrs de esta se explican en. la
prxima actualizacin.)
Por lo tanto, la buena noticia es que podemos colapsar cualquier nmero de
transformaciones lineales en una sola matriz que se multiplican, lo que permite
la libertad de pensar en trminos de las medidas que sean ms convenientes.

Actualizacin y Multiplicacin de Matrices


Para nuestro uso, matrices y multiplicacin de matrices no son ms que un
mecanismo conveniente para expresar transformaciones lineales, que a su vez
son una forma til de hacer las manipulaciones de coordenadas necesarias
para la visualizacin de modelos. El mecanismo de la matriz fundamental se
explica aqu, mientras usos interesantes para que se van a plantear en
numerosos lugares en los debates posteriores.
En primer lugar, una definicin. Una matriz de 4 4 tiene un vector de cuatro
componentes de otro vector de cuatro componentes a travs de la
multiplicacin por la siguiente regla:

Algunas observaciones:
Cada componente del nuevo vector es una funcin lineal de todos los
componentes de la antigua vector, de ah la necesidad de 16 valores en
la matriz.
La multiplicacin siempre toma el vector (0, 0, 0, 0) a (0, 0, 0, 0). Esto es
caracterstico de las transformaciones lineales y muestra que si se
trataba de un 3 3 veces de matriz un vector de tres componentes,
por qu la traduccin (en movimiento) no se puede hacer con una

matriz se multiplican. Veremos cmo traducir un vector de tres


componentes se hace posible con una matriz de 4 4 y coordenadas
homogneas.

En nuestros modelos de vista, vamos a querer tener un vector a travs de


mltiples transformaciones, aqu expresamos como multiplicaciones de
matrices de matrices A y B:

Y nosotros queremos hacer esto de manera eficiente mediante la bsqueda de


una matriz C tal que:

Donde

Debemos tomar la trasformacin B y la trasformacin A y generar una sola


trasformacin C es un beneficio que obtenemos por pegar a las
transformaciones lineales. La siguiente definicin de multiplicacin de la matriz
resume este trabajo.

Donde
Esto es

La multiplicacin de matrices no es conmutativa, hablando en trminos


generales de la multiplicacin de matrices A y B

Y, en general, al multiplicar la matriz A y el vector v

As que hay que tener cuidado a multiplicarse en el orden correcto. La


multiplicacin de matrices es, afortunadamente, asociativa:
Este es un resultado clave vamos a aprovechar para mejorar el rendimiento.
Matrices y Transformaciones Lineales
Comenzamos nuestra tarea de mapeo en coordenadas de dispositivos
mediante la adicin de un cuarto componente a nuestras coordenadas
cartesianas tridimensionales, con un valor de 1.0, para hacer coordenadas
homogneas. Estas coordenadas entonces estarn listas para ser multiplicadas
por una o ms matrices de 4 4 rotar, escalar, trasladar y aplicar perspectiva.
A continuacin se dan ejemplos de cmo utilizar cada una de estas
transformaciones. E4 4l resumen es que cada una de estas transformaciones
se pueden realizar a travs de la multiplicacin por una matriz de 4 4, y una
serie de tales transformaciones puede estar compuesto en una sola matriz 4
4, una vez, que entonces se puede utilizar en mltiples vrtices.

Вам также может понравиться