0% encontró este documento útil (0 votos)
30 vistas15 páginas

Tema 3

Temas de ingenieria

Cargado por

David Cañon
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
30 vistas15 páginas

Tema 3

Temas de ingenieria

Cargado por

David Cañon
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Tema 3: Sistemas de Visualizacin en Tiempo Real.

Visualizacin por Hardware

TEMA 3: SISTEMAS DE VISUALIZACIN EN TIEMPO REAL.


VISUALIZACIN POR HARDWARE

3.1 INTRODUCCIN
Se entiende por sistema informtico en tiempo real aquel que tiene ciertas restricciones de
comportamiento en el tiempo. Algunas restricciones bastante comunes son que el sistema responda a una
seal externa en un tiempo lo suficientemente corto o que produzca una frecuencia de salida mnima1. En
particular, un sistema de sntesis de grficos 3D en tiempo real, ser un sistema que pueda redibujar la
escena en un tiempo suficientemente corto, lo que permitir cierta sensacin de continuidad visual y dotar
de un grado de interactividad adecuado a nuestra aplicacin.

Para conseguir esta disminucin del coste de la representacin grfica se utilizan libreras de
funciones que implementan tcnicas especiales de visualizacin, y tambin existe la posibilidad, dadas las
caractersticas de los procesos que efectan, de utilizar hardware especial para acelerar los clculos.

Las caractersticas que se pueden destacar en este tipo de sistemas son:

Trabajan con primitivas poligonales. Los objetos 3D siempre sern representados como
superficies para proceder a su visualizacin y, a su vez, las funciones de las libreras trabajaran
internamente con objetos poligonales que descompondrn en tringulos.
Para permitir mayor grado de realismo se incorpora el pegado de texturas de color, normalmente
bidimensionales.
Se intenta que el mayor nmero posible de clculos se resuelva mediante operaciones lineales,
reducibles a sumas y multiplicaciones, y fcilmente implementables por hardware.
Se incluye algn tipo de mtodo para eliminar superficies ocultas. Las dos alternativas ms
comunes son:
- Utilizar BSP-Trees para ordenar los polgonos por distancias y aplicar el algoritmo del
pintor comenzando la visualizacin por los ms lejanos.
- Utilizar una memoria especial llamada Z-buffer que para cada pixel guarda la distancia a la
que est el punto correspondiente del objeto tridimensional cercano de los dibujados en esa
direccin hasta el momento.
En estos mtodos se utiliza, adems de la memoria de pantalla (frame buffer) convencional,
memoria adicional para permitir ciertas operaciones superponer diferentes tipos de informacin
sobre cada pixel. El nmero de bits de informacin que se puede almacenar para cada pixel
(nmero de bitplanes) constituye una caracterstica fundamental.

Veamos los componentes ms comunes de esta memoria de pantalla.

a) Memoria de pantalla normal (memoria de color):

Guarda el color de cada punto. Para grficos por ordenador se suelen tener 24 bits de color
(trueColor: 8 bits por componente R, G, B). Otros sistemas utilizan 32 bits, 4 bytes (3 de R, G, B y uno
para el factor de transparencia "componente o canal alfa"). Para hacer grficos interactivos esta memoria
de color se suele multiplicar por dos, constituyendo lo que se llama un sistema de doble buffer. El doble
buffer se utiliza para evitar la sensacin de parpadeo (flickering) que se produce al redibujar la escena
mientras la estamos observando. Para ello el sistema grfico dibuja en un segundo buffer (el buffer
trasero o backbuffer) mientras el usuario percibe la imagen del buffer delantero (frontbuffer). Cuando se
acaba de dibujar la nueva imagen se conmutan (swap) las dos memorias, y el usuario pasa a ver de
repente en el frontbuffer la nueva imagen acabada, comenzndose a dibujar la siguiente imagen en el
backbuffer. De esta manera vemos siempre imgenes terminadas, y nunca el resultado intermedio.

En ocasiones se colocan otros planos de color adicionales que se pueden dibujar de forma
independiente, los planos de superposicin. Existen dos tipos de planos de superposicin: aquellos que se

1
Ver Tema 6: Simulacin en Tiempo Real.Concepto de Tiempo Real.

36
Depto. Informtica y Electrnica Informtica Grfica II
Universitat de Valncia

van a dibujar siempre por encima de los planos de color normales (memoria de overlay) y los que se van
a dibujar siempre por debajo (memoria de underlay). El overlay se puede usar para dibujar partes de la
escena prximas que no cambian frecuentemente (por ejemplo, la cabina del piloto en un simulador de
vuelo), mientras que el underlay se utiliza para dibujar el fondo (por ejemplo, las montaas lejanas del
mismo simulador de vuelo). La librera debe disponer de algn sistema para distinguir cul de los planos
de color debe ser el que se utilice para dibujar cada pixel particular. Esto puede realizarse definiendo una
mscara en los pixels, o bien utilizando colores especiales en los planos de underlay y overlay.

b) Memoria de acumulacin:

Se utiliza tambin para almacenar color, con el propsito de acumular imgenes sucesivas. Con
estas memorias se pueden realizar efectos curiosos como el motion bluring que consiste en un
desenfoque producido por el movimiento del objeto, que se puede conseguir sumando con diferentes
pesos varias imgenes del objeto mientras se mueve. La memoria de acumulacin se puede tambin
utilizar para eliminar los efectos de dentado (aliasing) en la imagen, suavizando los bordes de los objetos
y los detalles de las texturas. Para ello se hace la media entre varias imgenes que se diferencian por
ligeras variaciones del punto de vista.

c) Memoria de profundidad (Z-buffer):

Como hemos dicho antes, la existencia de esta memoria es una caracterstica particular de los
sistemas de visualizacin en tiempo real. En esta memoria se suelen utilizar 16 o 32 bits por pixel para
guardar informacin relativa a la distancia o profundidad de cada pixel. Cuando se comienza a dibujar la
escena toda la memoria del z-buffer se borra, inicializando su valor a la mxima distancia posible. A
partir de entonces cada vez que se dibuja un tringulo se comprueba, para cada pixel que cubre su
proyeccin, si la distancia al observador es menor que la almacenada en ese punto del z-buffer. Si lo es,
entonces el pixel se cambia al color del objeto y su valor de profundidad se almacena como nuevo valor
en el z-buffer.

zp
A
z1 p1 p2

z2 B

Figura 3.1.C.: Funcionamiento del z-buffer.

A se dibuja despus que B, pero por ser z 2 > z1 , el color de p1 no se borra para cambiarlo
por p 2 .

Al final tenemos una distribucin de memoria del siguiente tipo:

underlay
Z-buffer
Back buffer (color)
Front buffer (color)
overlay

3.2. LA PIPELINE GRFICA

37
Tema 3: Sistemas de Visualizacin en Tiempo Real.
Visualizacin por Hardware

El proceso computacional que lleva desde la descripcin de los objetos en la escena hasta la imagen
final se produce, en los sistemas en tiempo real, mediante una serie de fases consecutivas y conectadas
entre s (la salida de datos de una fase constituye la entrada de la siguiente), que se denomina pipeline
(oleoducto) grfica.

Debemos distinguir los datos propios de la escena, que van a circular por este sistema de
procesamiento secuencial, del conjunto de variables, accesibles al programador, que van a determinar el
procesamiento al que se ven sometidos los datos. Este conjunto de variables se denomina contexto
grfico. El contexto grfico incluye variables cuyo valor puede ser cambiado por el programa a lo largo
del proceso. Entre ellas hay opciones que controlan la activacin o desactivacin de ciertas funciones
(por ejemplo, el uso del doble buffer o de la comparacin del z-buffer) o controlan el modo en que
algunas operaciones son realizadas (por ejemplo, variantes en el mtodo de iluminacin) y tambin
incluyen datos que son utilizados por la pipeline, como las matrices de proyeccin y transformacin,
posicin del observador, color actual, material actual, fuentes de luz, texturas, etc.

Recordemos que uno de los objetivos de los sistemas de visualizacin en tiempo real es
descomponer el proceso de visualizacin en fases simples que tengan un coste mnimo y puedan ser
implementadas por hardware. Segn cul sea el equipo disponible, parte de la pipeline ser ejecutada por
el hardware especfico y parte tendr que ejecutarse por la CPU del sistema. Esta idea permite que una
misma aplicacin pueda funcionar en equipos con diferente tipo de aceleracin grfica (o con ninguna).
En cualquier caso, la parte ejecutada en la CPU comenzar siempre por el principio de la pipeline, y a
partir de cierto punto los datos sern transferidos al hardware grfico que continuar el proceso hasta el
final.

La idea fundamental del procesado en tiempo real es que todos los objetos deben ser descompuestos
en polgonos. Estos polgonos sern descompuestos a su vez en tringulos. Cada tringulo ser
proyectado sobre la ventana bidimensional y rellenado con los colores adecuados para reflejar los efectos
de la iluminacin, texturas, etc. Una vez se han generado los tringulos, en la pipeline existen dos partes
claramente diferenciadas: una primera etapa operaciones realizadas sobre cada uno de los vrtices, y
despus de que stos se proyecten sobre la ventana, entonces comienza una segunda fase de clculos
realizados para cada pixel cubierto por los tringulos.

El siguiente sera un esquema del proceso en pipeline que comienza por la Base de Datos de la
escena:

Clculo
por Operaciones
Base de datos vtices por pixels

Seleccinar objetos
CLCULO
PROYECTAR Vertices 2D RASTERING
Polgonos DEL Pixels
COLOR
3D-2D +Z

1 2 3 4 Imagen
final

Las fases principales son:

1. - Seleccionar los objetos que deben dibujarse en cada fotograma


- Convertir esos objetos a primitivas poligonales.
- Producir a partir de ellas listas de vrtices.

2. - Calcular el color para cada vrtice segn un mtodo de sombreado local.

3. - Proyeccin 3D2D de cada vrtice, que adems nos proporciona su profundidad


- Recorte o clipping del tringulo si alguna parte de l cae fuera de la ventana.

4. - Rellenado de los tringulos (rastering). Para ello se realizan varias fases de procesamiento por
pixel

38
Depto. Informtica y Electrnica Informtica Grfica II
Universitat de Valncia

- Comprobar si cada nuevo pixel es visible o no (comprobacin de profundidad).


- Interpolacin lineal del color para el nuevo pixel (mtodo de Gouraud).
- Si existe una textura definida o transparencia, efectuar la modificacin de color
correspondiente.

Vamos a estudiar ahora con ms detalle algunas de estas fases.

3.2.1. SELECCIN DE OBJETOS Y CONVERSIN A POLGONOS.

En grficos interactivos toda representacin de los objetos 3D que no sea poligonal se debe
previamente transformar en una representacin de superficie poligonal para poder hacer uso de la
pipeline grfica.

En esta fase de seleccin se intenta optimizar la calidad y cantidad de objetos que se van a utilizar.
La seleccin de objetos se basa en dos tcnicas principales:

Seleccin del detalle. Un mismo objeto puede estar representado con ms de un nivel de detalle,
y por tanto, podemos escoger el que sea ms adecuado (segn su calidad y coste) en cada
momento.
Seleccin por visibilidad. Si queremos disminuir el coste de computacin en la pipeline,
podemos dejar de enviar los objetos que estn:
- Ocultos por otros objetos.
- Fuera del campo de visin.

Veremos ms en detalle cmo estas tcnicas pueden implementarse haciendo uso de estructuras de
datos especiales2.

La conversin a polgonos se puede efectuar por la propia aplicacin, a criterio del programador, o
utilizar funciones de la librera grficas. Algunas libreras permiten definir objetos con representaciones
no basadas en polgonos, pero incluyen funciones para efectuar la conversin. Por, ejemplo OpenGL
incluye la definicin de superficies paramtricas tipo NURBS utilizando funciones especficas
(glNurbsSurface( )).

Al final de este proceso tendremos una lista de polgonos descritos por vrtices. Cada vrtice debe
contener como mnimo la informacin acerca de su posicin en el espacio, pero tambin datos que
permitan calcular posteriormente su color. Si el programa no proporciona para cada vrtice un color
previamente calculado, deber indicarse el valor del vector normal a la superficie en ese punto para que la
pipeline calcule el color mediante un modelo de iluminacin.

En el caso de que se desee pegar una textura sobre el objeto3, deben proporcionarse los datos para
que la pipeline calcule automticamente las coordenadas de textura, o bien dar explcitamente los valores
de estas coordenadas.
PIPELINA DE TRANSFORMACIONES SOBRE VERTICES
Una vez los objetos han sido seleccionados y se han descompuesto en vrtices, estos sufre una proceso de
transformacin hasta convertirlos en pixels (nos centraremos en esas transformaciones y obviaremos la
iluminacin local aunque es un proceso que se realiza en coordenadas del ojo). Las transformaciones se
pueden organizar como muestra las siguiente estructura de tubera:

2
Ver Tema 6: Simulacin en Tiempo Real. Estructuras Jerrquicas.
3
Ver Tema 7: Tcnicas Avanzadas de Modelado Geomtrico. Texturas

39
Tema 3: Sistemas de Visualizacin en Tiempo Real.
Visualizacin por Hardware

TRANSF TRANSF TRANSF


(x,y,z,w) COOR. COOR. COORD..
DEL DE LA DE
Coor. Locales DEL MUNDO DEL OJO RECORTE
MODELO VISTA PROYEC.

DIVISIN TRANSF.
COOR. COOR. COOR.
DE DE
RECORTE NORMALIZ VENTANA
PROYEC. VENTAN.

Esto pude verse como el proceso de hacer una foto: las tranformaciones del modelo consisten en
posicionar el objeto en el punto de la escena que nos interesa, las transformaciones de la vista consisten
en colocar la camara con la direccin adecuada. Las transformacin de proyeccin son similares al
proceso de enfocar la lente de la camara la divisin de proyeccin es el proceso de impregnacin de la
pelicula fotografica y las transformaciones de ventana se prodrian ver como el proceso de revelado donde
seleccionamos el tamao y proporciones del papel sobre el cual revelamos la foto.

3.2.2. TRANSFORMACIN DE OBJETOS O MODELADO.

Es muy comn que dispongamos de una especificacin del objeto en un cierto sistema de
coordenadas (sistema de coordenadas del objeto o sistema local). Por ejemplo, hemos modelado una casa
en la que las coordenadas de los vrtices y la orientacin de los vectores normales viene definida respecto
a un sistema ortogonal situado en el centro de la casa. Sin embargo, los diferentes objetos situados en una
escena comparten un sistema de referencia absoluto (sistema de coordenadas del mundo, de la escena, o
sistema global). Por tanto necesitamos un mecanismo para transformar la posicin, orientacin y escala
de los objetos de forma que podamos combinarlos en una escena comn con otros, mover el objeto o
efectuar diferentes copias del mismo en diferentes posiciones y tamaos.

La forma en que estas transformaciones de modelado se efectan en las libreras grficas suele ser a
travs de un sistema de coordenadas actual que se almacena en el contexto grfico. Este estado actual del
sistema de coordenadas se representa por medio de una matriz que expresa la transformacin que en cada
instante lo liga con el sistema absoluto del mundo. Supongamos que tenemos una funcin que dibuja un
cubo cuyos vrtices han sido definidos respecto a con un sistema de coordenadas situado en su centro.
Cmo podemos dibujar el cubo en una posicin cualquiera de la escena? Suponiendo que el sistema de
coordenadas actual de la escena est inicialmente en el origen del sistema del mundo, tendramos que
trasladarlo al punto donde queremos situar el cubo, y entonces llamar a la funcin que dibuja el cubo.

Cambio sistema Sistema de Dibujar cubo


coordenadas coordenadas actual

Sistema de coordenadas del mundo =


sistema de coordenadas actual

Estas operaciones de transformacin son siempre matriciales, pueden descomponerse en sumas y


multiplicaciones, y por tanto caen dentro de la categora de operaciones lineales que podemos incluir de
forma eficiente en el procesado grfico de los vrtices que definen a los objetos.

Para visualizar cmo se combinan diferentes transformaciones de modelado podemos utilizar


estructuras rboreas como sta; en las que se especifica el orden de las operaciones y a qu objetos afecta
(a todos aquellos bajo el nodo que indica la transformacin).

40
Depto. Informtica y Electrnica Informtica Grfica II
Universitat de Valncia

Notar que debemos especificar el ordenen las operaciones.

(Girarlo)
Rotacin

Objeto2
(Moverlo) (Cambio de tamao)
Traslacin Escalado

Objeto1 Objeto3

Hay libreras que incluyen una estructura de datos en la que pueden definirse directamente estas
estructuras jerrquicas de transformaciones. En otras libreras no existe una estructura de datos explcita,
y las operaciones y su alcance se deben indicar mediante instrucciones de la librera en el cdigo del
programa. Por ejemplo esto sucede en OpenGl, donde el ejemplo anterior podra ser programado como se
muestra en el anexo 9.

Las coordenadas utilizadas internamente por muchas libreras grficas para representar la posicin
de los vrtices tienen cuatro componentes. La cuarta componente se denomina coordenada homognea, y
tiene por defecto un valor unidad. Una vez se han efectuado todas las transformaciones matriciales, tanto
las de proyeccin como las de modelado, la librera grfica interpretar que las coordenadas 3D de cada
punto son las tres primeras coordenadas, dividida cada una de ellas por el valor w de la coordenada
homognea.

El uso de estas coordenadas homogneas tiene tres razones principales:

Poder representar objetos infinitos, asignando a alguno de sus vrtices un valor w = 0.


Poder efectuar la proyeccin de perspectiva con una operacin matricial (lo veremos luego).
Poder representar la transformacin de traslacin (que en principio consiste en sumar un
vector) como una multiplicacin matricial.

r x y z
Coord. Homogneas X = , , .

Nota :
Para representar un punto en el infinito pondremos = 0.

Traslacin x = T x

1 0 0 tx x x x + t x

y = T t , t , t y y + t y
( )
0 1 0 ty
(
T tx ,ty,tz ) =
0 0 1 tz z x y z

=
z z + tz

0 0 0 1
Matriz de translacin

41
Tema 3: Sistemas de Visualizacin en Tiempo Real.
Visualizacin por Hardware

x + tx x
= x = x =
x 3D = + t x = x 3D + t x

x 3D = x
y + ty y
y3D = y y3D
= y = y = = + t y = y3D + t y

z 3D =z z + tz z

= z = z =
z 3D = + t z = z 3D + t z

Rotacin

Normalmente se ofrecen funciones para realizar una rotacin alrededor de cualquiera de los tres ejes
o alrededor de un eje arbitrario, pero teniendo siempre en cuenta cierto criterio de signo para interpretar
el sentido de giro.

1 0 0 0

0 cos sin 0
M x ( ) = Matriz de rotacin alrededor del eje x
0 sin cos 0

0 0 0 1

cos 0 sin 0

0 1 0 0
M y ( ) = Matriz de rotacin alrededor del eje y
sin 0 cos 0

0 0 0 1

cos sin 0 0

sin cos 0 0
M z ( ) = Matriz de rotacin alrededor del eje z
0 0 1 0

0 0 0 1

Para efectuar giros ms complejos podemos combinar estas rotaciones bsicas de forma secuencial.

Las rotaciones no afectan solamente a la posicin del objeto, sino tambin a los vectores normales,
de manera que la iluminacin calculada posteriormente corresponda a la orientacin real del objeto en la
escena.

Escalado

42
Depto. Informtica y Electrnica Informtica Grfica II
Universitat de Valncia

Mantiene la forma bsica del objeto, slo altera sus proporciones. Las anteriores transformaciones
slo varan la posicin pero no sus proporciones. Para cambiar la escala del objeto en cada uno de los tres
ejes, con sendos factores de escala (ex , ey , ez ) , utilizaramos la matriz:

ex

( )
ey
E ex , ey , ez =

ez

1

Composicin de transformaciones

Podremos tambin concatenar varias transformaciones sobre un objeto, ya que el sistema de


referencia local resultar afectado consecutivamente por todas las operaciones que vayamos haciendo
dentro del alcance adecuado. Debemos tener en cuenta la forma en que estas transformaciones se
acumulan. Por ejemplo, si efectuamos una rotacin y luego una traslacin, el resultado no es el mismo
que si hacemos las operaciones al revs. Si giramos respecto al eje X, la orientacin de los ejes Y, Z
habr cambiado, y eso afectar a todas las traslaciones ,rotaciones y escalados posteriores, que se
efectuarn utilizando los nuevos ejes.

Un ejemplo sencillo de composicin es el siguiente: deseamos hacer rotar un objeto, pero no


respecto al origen de coordenadas actual, sino respecto a otro punto. Para conseguirlo tendremos que
trasladar el origen de coordenadas al punto que deseamos como centro de la rotacin, efectuar la rotacin
y luego devolver el origen de coordenadas a su posicin inicial, para lo cual deberamos haberlo apilado
previamente.

Otro ejemplo, un poco ms complejo, es rotar un objeto respecto a un eje arbitrario. Para ello
efectuaramos una traslacin T que haga pasar el eje de giro por el origen de coordenadas, luego una
rotacin (rotaciones) R que hagan coincidir el eje con uno de los ortogonales x, y, z. Entonces podramos
usar una funcin de rotacin (por ejemplo Rz) y luego tendramos que deshacer las transformaciones R y
T.

z
Eje de giro

Eje

Para volver a colocar al objeto:

43
Tema 3: Sistemas de Visualizacin en Tiempo Real.
Visualizacin por Hardware

eje
z

R ()
z
-R
-T

3.2.3. ASIGNACIN DE COLOR A LOS VRTICES.

Una vez tenemos los vrtices situados y orientados en el sistema de coordenadas del mundo
podemos aplicar de forma adecuada el modelo de iluminacin para asignarles un color, si es que ste no
ha sido asignado explcitamente en el programa y el subsistema de iluminacin est activado. Como
necesitamos efectuar un clculo lo ms eficiente posible, todas las libreras para grficos en tiempo real
utilizan un modelo de iluminacin basado en el sombreado local. Este tipo de modelo utilizar los valores
de la posicin y el vector normal de los vrtices junto a la especificacin del material y las fuentes de luz,
que se encontrar en el contexto grfico. Si se desea restringir este clculo a los vrtices visibles, pueden
efectuarse primero la fase de proyeccin y recorte que veremos a continuacin.

44
Depto. Informtica y Electrnica Informtica Grfica II
Universitat de Valncia

3.2.4. PROYECCIN 3D-2D.

Esta transformacin es el paso fundamental para la visualizacin de escenas tridimensionales, ya


que es aqu donde cada vrtice de cada tringulo pasa de estar situado en el espacio 3D a hacerlo en
coordenadas referidas a la ventana de visualizacin o viewport. Esta transformacin se va a realizar en
dos pasos: primero efectuaremos la transformacin de visin, pasaremos del sistema de coordenadas del
mundo al sistema de coordenadas del ojo u observador, definido por la posicin y orientacin del
observador o cmara, y en segundo lugar efectuaremos la transformacin de perspectiva, o proyeccin
propiamente dicha, que pasar de coordenadas del observador a coordenadas de ventana.

in y
ntac A
u
orie
-Z

v D
x
Mover el
observador z

Coord. mundo
Coord. pantalla

Coord. ojo
3D-2D

3.2.4.1. Transformacin de Visin

Para describir la posicin y orientacin el observador se utilizan generalmente tres vectores que
especificarn los nueve grados de libertad posibles (tres de posicin y tres de orientacin). Una posible
combinacin es:

- Definir la posicin del punto de vista mediante un vector V.


- Definir un vector unitario con la direccin hacia dnde mira: P
- Definir la direccin vertical para el observador por medio de un tercer vector A
y a
rrib
c iaa
Ha
ir a
em
o nd
Ad

n
ici
P os
x
z

Para hacer coincidir el sistema del mundo con el del observador tendremos que trasladar toda la
escena un mismo vector -V, de manera que ahora el punto de vista estar situado en el origen del mundo.
A continuacin tenemos que efectuar una rotacin de manera que ambos ejes se alineen. La matriz total

45
Tema 3: Sistemas de Visualizacin en Tiempo Real.
Visualizacin por Hardware

de la transformacin de visin ser el producto de las matrices correspondientes a ambas


transformaciones: M=RT.

Rotacin

Si consideramos los vectores anteriores, y definimos U como el producto vectorial P x A tendremos


la matriz:

dx dy dz 0

ux uy uz 0
R =
ax ay az 0

0 0 0 1

Una vez tenemos los vrtices de la escena expresados en coordenadas del sistema observador, stas
se pasan a coordenadas de ventana mediante una proyeccin 3D-2D. Si deseamos una proyeccin
ortodrica o paralela, bastar utilizar dos de las coordenadas del sistema observador como coordenadas
de ventana (con las correcciones de escala adecuadas), pero este tipo de proyeccin no hace disminuir el
tamao de los objetos con la distancia. Para realizar una proyeccin que simule este efecto se usa el
sistema de la perspectiva lineal o cnica.

Traslacin

v
x

1 - vx
x
1 - vy
z
(
T - v x ,-v y ,-v z )
=
1 - vz

1

3.2.4.2. Perspectiva Lineal

La perspectiva lineal es una aproximacin (que es utilizada tambin en el mtodo de trazado de


rayos [ENLACE]) conocida desde antiguo para la representacin plana de escenas tridimensionales.
Consiste en trazar desde los objetos lneas rectas que convergen en un nico punto (la posicin del
observador o cmara). Cuando estas lneas intersectan un plano (que representara el lienzo, la ventana o
la retina del observador) se forma all la imagen proyectada de la escena se trata de una operacin que
debemos realizar con todos los vrtices. En este tipo de proyeccin se cumple que cuanto ms lejos est
un objeto, ms pequea ser su imagen en el plano de proyeccin.

Al considerar la perspectiva de esta forma estamos realizando dos aproximaciones: la primera es


suponer que la distancia a la que se encuentran los objetos (que influye en la disminucin de su tamao
aparente) se puede aproximar por su distancia en el eje z. Esta aproximacin ser buena para ngulos
pequeos, pero fallar si aumenta el campo de visin, ya que entonces la diferencia entre la distancia y la
componente z ser evidente.

46
Depto. Informtica y Electrnica Informtica Grfica II
Universitat de Valncia

La segunda aproximacin consiste en considerar que la superficie de proyeccin es plana, cuando


nuestra visin se basa en el uso de una superficie curva. De nuevo sucede que las diferencias no son
demasiado grandes si consideramos ngulos de visin pequeos.
y
plano
ventana

d
y
0

y
z

-z0

y y 0 d y0
= y = y y
d - z0 - z0 0 - z0

La perspectiva lineal cumple una propiedad fundamental: la proyeccin de un tringulo 3D es un


tringulo 2D formado uniendo las proyecciones de los vrtices, de manera que para cada tringulo de la
escena obtendremos su correspondiente tringulo bidimensional sobre el plano de proyeccin. Para poder
realizar de manera eficiente esta computacin tenemos que buscar de nuevo una representacin lineal,
para lo que utilizaremos otra vez una matriz en coordenadas homogneas.

De la figura podemos deducir fcilmente la frmula de la perspectiva lineal, que bsicamente


consiste en dividir las dos coordenadas paralelas al plano de proyeccin (x,y) por la distancia de cada
punto al observador.

3.2.4.3. Implementacin de la Perspectiva Lineal en la Pipeline Grfica

x 1 0 0 0 x x = x

y = 0 0 0 y

y = y x3D = x' w'= x - z
z 0 0 1 0 x z' = z y3D = y' w'= .y - z

w 0 0 1 0 1 w = -z

representa el aspecto, la proporcin anchura/altura de la ventana en pixels.


Notemos que este sistema aprovecha el significado de la coordenada homognea para realizar una
divisin encubierta con la ayuda de la matriz de transformacin, de forma que al final reproducimos el
efecto de hacer el tamao de los objetos inversamente proporcional a su distancia el eje z.

En las libreras grficas se proporciona adems informacin para recortar el tamao del espacio de
proyeccin. Por un lado se suele especificar el ngulo de perspectiva o del campo de visin ( en
OpenGL se da el ngulo de visin vertical fovy (field of view en y)). Por otro lado, como veremos
inmediatamente, tambin el espacio piramidal de proyeccin (el frustrum) se limita segn la coordenada
z.

47
Tema 3: Sistemas de Visualizacin en Tiempo Real.
Visualizacin por Hardware

D.p.c (near)

D.p.c (far)

3.2.4.4. Utilizacin de los Planos Cercano y Lejano

En las libreras para grficos en tiempo real el programa debe aadir a los parmetros de perspectiva
que ya hemos visto la posicin de dos planos de recorte, el plano cercano y el plano lejano, que
delimitan un tronco de pirmide donde se sitan los objetos que sern efectivamente visibles en la
proyeccin. Los objetos que salgan fuera de estos planos no se vern, y los que los intersecten sern
recortados, dejando visible solamente la parte interior.

La utilidad de estos planos es doble: por una parte permiten restringir la parte de la escena que se
desea ver en funcin de la distancia. En ciertos casos esto puede permitir que nos centremos en una parte
de la escena que nos interesa. Sin embargo, la principal razn para utilizar estos planos es calibrar
adecuadamente los valores de profundidad del z-buffer, de la memoria de distancia. En efecto, los valores
almacenados en el z-buffer no son valores absolutos de distancia, sino valores relativos a la posicin
entre los dos planos de recorte, de manera que si estos estn muy alejados entre s, una diferencia de una
unidad en la profundidad almacenada en el z-buffer representar una gran distancia en coordenadas del
mundo, y ello puede provocar problemas a la hora de efectuar la ocultacin de superficies no visibles, ya
que dos planos situados a similar distancia pueden confundirse a la hora de comprobar cul es visible. Por
ello es conveniente situar los planos de recorte tan cercanos entre s como sea posible, lo que aumentar
la capacidad de precisin en el test que utiliza el z-buffer.

PIPELINE DE TRANSFORMACIONES EN OpenGL.


Ver Capitulo 3 de OpenGL Programming Guide de Addison-Wesley.
Ver Ejemplo Teteras.

3.2.5. RECORTE (CLIPPING).

Una vez llegada a esta fase tenemos ya los vrtices de los tringulos proyectados sobre un plano,
pero nada impide que sus coordenadas caigan fuera de la ventana. Como la siguiente fase del procesado
en tiempo real va a consistir en el rellenado de los tringulos, nos conviene limitar stos a la parte que
este dentro de la ventana, ahorrndonos la interpolacin de pixels que van a quedar fuera del rea de
visualizacin. Es por ello por lo que se realiza una fase previa de recorte, en la cual se comprueba qu
tringulos de la lista de visualizacin se encuentran dentro de la ventana y cules fuera, de manera que:

- Si estn completamente fuera de la ventana, entonces los desechamos.


- Si estn completamente dentro se siguen procesando sin alterarlos.

48
Depto. Informtica y Electrnica Informtica Grfica II
Universitat de Valncia

Para tringulos que tienen una parte dentro y otra parte fuera:
- Se recorta y elimina de la lista de visualizacin lo que queda fuera.
- Se retriangula la parte que queda dentro de la ventana, calculando por interpolacin la
posicin, el color y otras propiedades de los nuevos vrtices que pudieran aparecer.

3.2.6. RELLENO DE LOS TRINGULOS (RASTERING).

Se trata de la ltima fase, en ocasiones la ms costosa, del proceso, por lo que es la primera que se
suele integrar en el hardware grfico. En esta etapa se trata de asignar colores a los pixels
correspondientes al interior de cada tringulo proyectado que cae dentro del rea de visualizacin. Los
colores asignados deben calcularse por el mtodo de Gouraud, interpolando linealmente entre los colores
de los tres vrtices. Otras variables como la coordenada de profundidad z o las coordenadas de textura
sufren el mismo proceso de interpolacin lineal, fcilmente reproducible por hardware.

x , y , z , crgb

C1
C12 C13 x , y , z , crgb
12 12 12
a b c
C3
C2

El algoritmo que generalmente se utiliza para rellenar la mitad de un tringulo como el de la figura
es el siguiente:

hallar x12 , z12 , c12


hallar x a , x b , z a , z b , c a , c b
inicializacin: x a x 1 ; x b x1 ; z a z1 , z b z1 , c a c1 , c b c1
desde y y1 hasta y 3
x a x a + x a ; x b x b + x b ;
z a z a + z a ; z b z b + z b ;
c a c a + c a ; c b c b + c b
hallar c c , z c || c c c a ; z c z a
desde x x a hasta x b
c c c c + c c ; z c z c + z c
si ( NO activado test-profundidad z c < z x, y ( )
c( x, y) f ( c c , z c ,...)
z( x, y) z c

Obsrvese que el resultado final es la actualizacin del color c(x,y) y el valor de profundidad en el z-
buffer z(x,y) para los puntos del rea de visualizacin que superan el test de visibilidad basado en el z-
(
buffer. El color final de estos pixels actualizados, representado aqu por una funcin f c c , z c ,... , )
depender del tipo de operaciones por pixel que estn definidas (transparencia, texturacin, etc.)

49
Tema 3: Sistemas de Visualizacin en Tiempo Real.
Visualizacin por Hardware

3.2.6.1. Consideraciones sobre el Coste Computacional

Como comentamos, las operaciones de la pipeline pueden dividirse ms o menos en dos partes: las
realizadas por vrtice y las realizadas por pixel en la fase de rellenado. Podemos decir que el coste
computacional es en ambos casos lineal, aunque puede variar para vrtices o pixels particulares
(dependiendo de ciertos factores como el nmero de fuentes de luz presentes, el tipo de operaciones de
rellenado, etc.). Por ello resulta evidente que habr que controlar estas variables a la hora de intentar
optimizar el coste del proceso de visualizacin4.

Otro problema que puede aparecer en el proceso grfico en tiempo real se debe a la propia
estructura de la pipeline, en la que los datos necesarios deben transmitirse de una fase a otra. Esta
transmisin en algunos casos puede ser ms lenta que el propio procesamiento de los datos,
especialmente cuando se utiliza el bus del sistema.

En general la fase de procesamiento o transmisin de datos ms lenta restringir la velocidad global


de la pipeline. Cuando una etapa es claramente menos eficiente que las dems se habla de la existencia de
un cuello de botella, que hay que intentar solucionar para aprovechar la capacidad de otros mdulos de la
pipeline.
Todos estos factores de coste se describirn con ms detalle en el tema 6.

3.2.6.2. Modo Retenido e Inmediato: La Lista de Visualizacin

Ya hemos comentado que despus de la fase de seleccin de objetos y su conversin a tringulos se


crea una lista con los polgonos que deseamos dibujar en el fotograma. Esta lista de visualizacin o
display list debe contener toda la informacin necesaria para el procesamiento que efectuar el resto de la
pipeline.

Las libreras grficas pueden funcionar en dos modos diferentes (algunas admiten ambos modos,
otras solamente uno). En el llamado modo inmediato, la librera generar una lista de visualizacin
diferente para cada fotograma, repitiendo de nuevo el proceso de seleccin y poligonizacin. En el modo
retenido, la librera guarda la lista de visualizacin generada para reutilizarla en los siguientes
fotogramas, ya que si no hay grandes alteraciones en la escena, basta con cambiar el punto de vista o
efectuar transformaciones sobre ciertos objetos para tener los datos correspondientes a las sucesivas
imgenes.

La distincin entre estos dos modos se hace importante en ciertas arquitecturas de hardware para la
visualizacin. Hay procesadores grficos que permiten almacenar la lista de visualizacin en una
memoria propia, evitando el coste de enviar cada fotograma los datos desde la memoria principal. Sin
embargo este sistema resulta muy ineficiente cuando hay que efectuar frecuentes actualizaciones masivas
de la lista de visualizacin, debido a que la escena cambia mucho de un fotograma a otro (muchos
vrtices aparecen, desaparecen, o se mueven).

4
Ver Tema 6: Simulacin en Tiempo Real.

50

También podría gustarte