Vous êtes sur la page 1sur 34

Unidad 1 Conceptos Bsicos 2D

Pixel (Picture-Element): Mnima unidad de color que compone una imagen


digital.
El pixel se puede entender como una muestra individual de una imagen, sin
tamao ni forma, adimensional e independiente del dispositivo que lo va a
mostrar. O bien puede ser entendido como un punto fsico de una imagen en el
dispositivo, el cual posee un tamao fijo, una forma determinada y depende de
la tecnologa empleada.
Modelo RGB (Red, Green, Blue): Es un modelo de color aditivo, los colores
se forman con la mezcla por adicin de distintas intensidades de los 3 colores
primarios.
El modelo RGB no es capaz de representar toda la gama de colores (o Gamut)
que un humano puede percibir. Existen otros modelos que cubren gamas de
colores distintas.
Modelo CMYK (Cyan, Magenta, Yellow, Key): Es un modelo de color
sustractivo, ampliamente utilizado en impresoras de chorro de tinta. Para este
modelo se utiliza un fondo blanco y se combinan pigmentos de Cian, Magenta,
Amarillo y Negro para absorber luz y reflejar solo una parte de ella.
Subpixeles: la mayora de los dispositivos no pueden mostrar los 3 canales de
colores en la misma ubicacin fsica, por ello se los divide en subpixeles donde
cada uno emite las intensidades de rojo, verde o azul por separado.
Btimap (tambin llamado Raster): Es un tipo de estructura de datos
utilizada para almacenar imgenes digitales. Sus elementos son:

Un formato de imagen (Dimensiones, ancho y alto expresado en pixeles.


Formato de pixel, principalmente la profundidad de color).
Un conjunto de pixeles, tantos como indique su formato.

Profundidad de Color (Color Depth): Describe la cantidad de bits que se


utilizan para representar el valor de un pixel expresado en Bpp (Bits per pixel).
Determina la cantidad de informacin que puede contener cada pixel. A mayor
cantidad de bits por pixel ms amplio es el rango de colores a representar.
Monocromo (1 bpp) 2 colores. VGA indexado (8 bpp) 256 colores. HiColor (16
bpp) 65536 colores. TrueColor (24 o 32 bpp segn tenga canal alfa) 16 millones
colores.
Se puede denominar Pixmap a los bitmap con ms de un bit por pixel, pero
para nosotros es indistinto el nombre Bitmap del pixmap.

Color Indexado: se denomina as a los formatos con profundidad de color de


hasta 8bpp. Los valores de los pixeles no representan directamente un color
sino que referencian a una paleta de colores que contiene los valores reales
finales de RGB. Ocupan poco espacio, pero dispone de cantidad de colores
limitados.
Vectores y Bitmaps: Las imgenes digitales pueden ser representadas por
grficos basados en Bitmaps (o Rasters ) o bien basados en Vectores.
Bitmaps: Son dependientes de la resolucin (cantidad de pixeles en una unidad
de longitud, ejemplo dpi (dots per inch)). Esto es un problema al tener que
redimensionar el bitmap, al reducirlo hay que quitarle informacin a la imagen
y al ampliarlo hay que realizar interpolacin para estimar los colores de los
nuevos pixeles, produciendo muchas veces efectos de pixelado. La ventaja de
los Bitmaps es su calidad de imagen, que trae consigo la desventaja de la
necesidad de memoria. Ejemplos: JPEG, GIF, BMP, PNG.
Grficos Vectoriales: Estn compuestos por objetos definidos por ecuaciones
matemticas en lugar de pixeles. Es independiente de la resolucin, al
aumentar o disminuir el tamao mantienen la calidad, esto es debido a que se
realizan los clculos matemticos para convertir las ecuaciones en pixeles que
el dispositivo pueda interpretar (este proceso se llama rasterizacin). Esta
sobrecarga de procesamiento es su principal desventaja. Su ventaja es que no
ocupan mucho espacio debido a que solo deben guardar los coeficientes de las
ecuaciones. No son buenos para imgenes fotogrficas debido a que las
mismas se componen de figuras con variaciones de tonalidades muy sutiles. Se
utilizan principalmente en diseo asistido por computadora y animaciones.
Ejemplos: SVG, CDR, AI.

Cada sistema grafico tiene al menos dos espacios de coordenadas distintos:

Espacio de usuario: Es el espacio, independiente del dispositivo, en el


que se crean las primitivas grficas.
Espacio de dispositivo: Es el espacio del dispositivo grfico de salida
(pantalla, impresora)

En el espacio de usuario pueden utilizarse unidades como puntos, milmetros o


pulgadas, luego en el espacio de dispositivo estas magnitudes sern
convertidas a pixeles. Este proceso debe ser transparente para el usuario, solo

le interesa especificar la geometra respecto de su espacio de usuario y delegar


las transformaciones al sistema.
Formato dimensional es el nmero de pixeles distintos que se puede mostrar
en cada dimensin de una imagen. Ejemplo 1024x768 significa 1024 muestras
de pixeles en el eje horizontal y 768 muestras en el eje vertical. No confundir
con resolucin, que es la cantidad de pixeles distintos que existen en una
unidad de longitud determinada. La resolucin debe ser entendida como la
densidad de pixeles que se tiene en un espacio determinado.
Aspect Ratio (proporcin de aspecto): Es la divisin del ancho y el alto, se
expresa como X : Y. Por ejemplo: una imagen de 800x600 pixeles tiene
proporcin de 4:3 (4 a 3).
Movimiento en las imgenes
Para dar la ilusin de movimiento se muestra una secuencia de imgenes a
intervalos regulares. La frecuencia en la cual se muestran estos frames se
denomina framerate y es expresado en Fps (Frames per second). La inversa de
este nmero nos da la cantidad de segundos que un cuadro permanece en
pantalla. Dentro del Framerate podemos distinguir el update rate que es la
frecuencia en la que se modifica el Frame Buffer del dispositivo de pantalla y el
refresh rate que es la frecuencia en la que realmente se producen nuevas
imgenes. Estas frecuencias no siempre son iguales y eso conlleva a que
aparezcan artifacts como el parpadeo de pantalla o tearing.
Almacenamiento de imagenes
La manera ms directa de almacenar un Bitmap es en formato RAW
(codificando la informacin de cada pixel uno al lado del otro sin compresin).
Esta tcnica es eficiente en cuanto a velocidad pero ineficiente en cuanto a
espacio. Aun as es la tcnica ms utilizada actualmente.
Tamao (en KB) = Ancho x Alto x Bpp / 8 x 1024
Cabe aclarar que si se almacena un Bitmap en un formato de archivo hay que
sumarle su respectivo encabezado con informacin como las dimensiones, el
formato de pixel, paleta de colores, cantidad de capas, etc.
Tasa de transferencia en dispositivos grficos
La forma de transmitir imgenes es mediante un flujo continuo de datos en el
cual los pixeles son enviados uno detrs de otro, esto se denomina sistema
raster.
Tasa de datos (en bits/segundo) = Ancho x Alto x Bpp x Fps
Compresin de Imgenes

Se basa en que todas las imgenes tienen semejanza o correlacin entre los
pixeles. Existen dos componentes fundamentales para la compresin:
reduccin de redundancia y reduccin de irrelevancia.

Reduccin de redundancia: Intenta eliminar la repeticin en la imagen


original, tiene 3 subtipos.
o Redundancia espacial : correlacin entre pixeles vecinos.
o Redundancia espectral: correlacin entre planos de color
o Redundancia temporal: correlacin entre cuadros de una
secuencia
Reduccin de la irrelevancia: Intenta omitir la parte de la imagen que no
ser percibida por el receptor humano.

Existen dos tipos de compresin:

Sin perdida (lossless): la imagen reconstruida es igual bit a bit a la


original. Solo alcanza niveles bajos de compresin.
Con perdida (lossy): la imagen reconstruida es una versin aproximada
de la original. Se logran altos niveles de compresin y bajo condiciones
normales la perdida no es percibida por el receptor humano.

Tcnicas de compresin:
Run Lenght Encoding (RLE): Los pixeles consecutivos se codifican como nico
valor y su cantidad. Ejemplos: [8] 0 seria 00000000. As se logran ahorrar
varios bytes.
Codificacin Lempel-Ziv: Utiliza un diccionario con las secuencias de valores de
los pixeles ya encontrados. Los datos comprimidos contienen los cdigos de las
entradas del diccionario.
Codificacin Huffman: En lugar de utilizar nmero fijo de bits utiliza cdigos
variables, los valores ms frecuentes utilizan cdigos ms cortos.
Transformada del coseno discreta (DCT): Los bloques de pixeles son
representados usando funciones de coseno de distintas frecuencias, las
frecuencias altas, que contienen menos informacin, son descartadas. Esta
tcnica es muy utilizada en formatos JPG y MPEG.
Sin prdida: RLE, Lempel-Zip y Huffman. Con prdida: DCT

Unidad 2 Conceptos Avanzados 2D


Los Real Time Interactive System (RTIS o sistema interactivos en tiempo real)
son de naturaleza distinta a las aplicaciones a las que estamos acostumbrados.
Los RTIS cuentan con 3 procesos fundamentalmente: adquisicin de
informacin, procesamiento de informacin y exposicin de resultados.
Modelo orientado al control
Es el modelo ms conocido en el que todo programa tiene un inicio y un fin
(generalmente en un bloque de cdigo main). Este modelo no se adapta a la
idea de mltiples entradas por eventos ya que debemos estar chequeando el
estado de los dispositivos a mano (independientemente de que hayan
cambiado su estado o no) dentro del bloque principal y eso lleva a una alta
utilizacin del procesador.
Modelo manejado a eventos
Soluciona el problema de la eficiencia utilizando una cola de eventos o cola de
mensajes y reemplazando main por mainEventLoop. La idea es definir los
posibles eventos para los cuales el sistema debe reaccionar, realizar
procesamiento y luego volver a su estado de reposo. El sistema grafico
mantiene la cola ordenada cronolgicamente y la aplicacin se debe encargar
de ir procesando los eventos en ese orden, una vez que no haya ms eventos a
procesar el proceso permanece en modo espera.
Los ciclos en tiempo real cuentan con dos tareas: update o actualizacin que
consiste en realizar los procesos de adquisicin y procesamiento, es decir los
clculos de posiciones, rutinas de IA y de fsica, etc. Y la segunda tarea es la
rendering o representacin de la escena donde en base a los datos obtenidos
en el update se realiza el armado de la escena grfica.
Ciclo Acoplado: se base en darle igual prioridad a la rutina de update que la
rendering, esto trae el problema de que a diferentes hardware el sistema
puede comportarse de maneras
inesperadas, como actualizar
demasiado rpido y que la
aplicacin se torne incontrolable.
Ciclo Desacoplado: se basa en
ubicar las dos rutinas en forma
secuencial pero saltear la rutina
de update en algunos ciclos para
que la misma se ejecute un
numero constante de veces
mientras que la rutina de rendering se ejecutara todas las veces que lo permita
el hardware subyacente. Para lograr esto se calcula el tiempo ocurrido desde la
ltima llamada a la rutina y se compara con la inversa de la frecuencia
deseada y as sabemos si debemos actualizar o no.

En la mayora de los casos, a este modelo se lo suele combinar con un modelo


manejado por eventos que posee la capacidad de poder reaccionar a los
eventos del sistema
Hardware en sistemas de grficos raster
Los sistemas de grficos raster no solo emplean una CPU sino que tambin
utilizan un controlador de video o controlador de pantalla. La configuracin ms
simple para estos controladores es tener una porcin de memoria llamada
Framebuffer donde se almacena temporalmente la imagen raster. Luego el
controlador recorre el framebuffer para refrescar la pantalla. En este barrido
raster o refresco el controlador escanea cada uno de los valores de izquierda a
derecha de arriba hacia abajo
y lo trasforma en intensidades
elctricas que permiten que el
dispositivo de salida los
muestre como distintos colores
en su grilla de pixeles. El
barrido vertical es el que toma
mas tiempo. Al controlador de
video tambin se lo llama DAC
(Digital Analog Converter).
Para alivianar la carga de la
CPU y mejorar el rendimiento
se utiliza un coprocesador
grfico o GPU (Graphics
Processing Unit) y un rea de
memoria separada dedicada a este procesador.
Entre las varias tareas que puede realizar una GPU se encuentra la de realizar
RasterOps como convertir primitivas grficas en pixeles.

Rasterizacin: Es el proceso de tomar primitivas grficas especificadas


en el espacio de usuario (independiente del dispositivo), y
transformarlas a su equivalente en pxeles.
Primitivas Grficas (elemento fundamentales con los que se
conforman las escenas)
Punto: Es una tpla de valores que representan una posicin en un sistema de
coordenadas. Los atributos del mismo pueden ser tamao y color.

Lnea: Est formada por todos los pixeles que se encuentran en la lnea que
conecta dos puntos. Sus atributos pueden ser: grosor, color, trama, etc.
Transformaciones en 2D: las ms comunes son traslacin, escalado y rotacin.
(Matrices de trasformacin en la hoja de frmulas).
Se dice que el escalado es uniforme si el valor Sx = Sy de la matriz de
escalado, si son diferentes se denomina escalado diferencial.

Composicin de Transformaciones
Con las coordenadas homogneas llegamos a un modelo uniforme de
multiplicacin de matrices para cada transformacin. Si queremos escalar,
rotar y luego trasladar una imagen podemos concatenar las matrices as:
T(R(SV)) o bien: (TRS)V . Esto significa que podemos agrupar las 3
trasformaciones en una nica matriz M = TRS. Esto es muy til en trminos de
eficiencia ya que solo calculamos una vez la matriz y se la aplicamos a todos
los vectores (miles) que necesitemos, en vez de tener que estar haciendo 3
multiplicaciones de matrices por cada vector. En esta notacin las
multiplicaciones se realizan de derecha a izquierda, Escalado, Rotacin,
Traslacin (TRS) en nuestro ejemplo. No es lo mismo invertir el orden.
En el caso particular de los Bitmaps no resulta eficiente aplicar estas
transformaciones a cada pixel de forma convencional, por ello el GPU posee
rutinas optimizadas para ello. Estas rutinas entran en la categora de
RasterOps. Una de las ms utilizadas es la de BitBlit o Blit (Bit Block Transfer),
que realiza copia de bloques de pixeles de un lugar a otro. Esta operacin
representa la traslacin. Otras opciones que permite esta rutina de RasterOps
es la de realizar operaciones como el AND, OR, XOR, etc. Otra opcin muy
utilizada es la Clipping (recorte). Tambin existen RasterOps para escalar y

rotar Bitmaps cuando se los copia a destino. Muchas bibliotecas grficas


abstraen el concepto de Bitmap, framebuffer o cualquier regin de memoria
capaz de almacenar pixeles bajo el concepto de superficie, haciendo ms
sencilla la programacin.
El Blitter cumple la funcin de copiar rpidamente bloques de pixeles
de una regin de memoria a otra.
Transparencia y traslucidez son conceptos diferentes. Un pixel es
transparente o no lo es, mientras que la traslucidez puede tener varios grados
de opacidad (siendo opacidad lo contrario a transparencia, 100% opaco, 0%
transparente).
Tcnicas de Transparencia
Transparencia por color clave, se basa en definir un Color Key y luego a la
hora de imprimir la imagen sobre el fondo la funcin de Blit se encarga de
ignorar todos los pixeles de ese color definido. La informacin de transparencia
se codifica en el mismo canal RGB, lo cual ahorra espacio, por contrapartida la
imagen copiada no dispone de ese color clave definido, adems esta tcnica no
contempla traslucidez, los pixeles se copian 100% opacos o no se copian.
Transparencia por mascara, tiene la misma idea base que la tcnica
anterior pero utiliza un Bitmap aparte de 1Bpp, entonces solo copiara los
pixeles de la imagen que en su correspondiente posicin del bitmap de la
mscara posea un 1. Utiliza ms espacio, pero no se reserva ningn color y las
mscaras son intercambiables sin modificar el bitmap original.
Tcnicas de Traslucidez
La forma ms utilizada para mostrar un imagen con distintos niveles de
opacidad encima de otra imagen de fondo es Alpha Blending (mezclado
alpha). Se combinan los valores de los pixeles de una imagen con los de la
imagen de fondo teniendo en cuenta el valor alpha (opacidad). C = alpha * A
+ (1 alpha) * B
Traslucidez Uniforme, es cuando se aplica un valor de alpha uniforme a toda
la imagen.
Alpha Blending, utilizando el alpha channel a cada pixel se le asigna un valor
de alpha y luego se utiliza la formula antes vista, logrando as efectos de
traslucidez diferentes para cada pixel. Esta tcnica se utiliza mucho para evitar
el efecto serrucho en la tcnica de antialising.
Animacin en 2D

La forma ms comn de lograr efectos de movimiento es con imgenes


estticas, mostrando una imagen y cambindola por otra levemente diferente
a intervalos lo suficientemente cortos.
Transformaciones geomtricas, se basa en aplicar las transformaciones
antes vistas variando levemente los parmetros en forma gradual y continua
en el tiempo. Los valores de estos parmetros resultan de la interpolacin del
tiempo transcurrido entre el primer y el ltimo cuadro.
Animacin por Cuadros, Se basa en el principio que utilizaban los dibujos
animados tradicionales donde se dibuja cada cuadro y se arma un fotograma
con la seguidilla de los mismos. Algunas tcnicas se siguen utilizando en
animacin por computadora
Looping, es la tcnica que permite ahorrar cuadros en secuencias que se
repiten.
Salto de Cuadros, cuando un mismo cuadro permanece ms tiempo en pantalla
que la tasa de refresco del dispositivo, ejemplo dispositivo con 60 fps con una
animacin de 30 fps.
Mosaico o Sprite Sheet, consiste en tener un nico bitmap con todos los
cuadros ubicados uno al lado del otro en forma de mosaico y usar el clipping
del blitter para copiar una subregin del bitmap en cada actualizacin. Se
ahorra mucho espacio y se obtiene mejor performance, aunque requiere de un
pequeo clculo para obtener las subregiones, por eso es deseable que todas
las imgenes tengan el mismo tamao.
Los Sprites son Bitmaps con transparencia que adems poseen
propiedades asociadas como posicin, ngulo, escalado, puntos de
colisin, etc.
Tearing o parpadeo, es un artifact (efecto no deseado) que se produce cuando
una aplicacin no puede mantener un estado grfico consistente durante el
momento de refresco de la pantalla. Si durante la lectura del controlador de
video de los pixeles del framebuffer, la aplicacin actualiza el cuadro, se ver la
pantalla dividida en franjas, una con el cuadro anterior y otra con el cuadro
actual a dibujar. Para evitar esto deberamos copiar la escena al framebuffer
cuando el controlador no lo est leyendo, para ello hay un tiempo muy corto
llamado Vertical Blank Interval (VBI) entre una lectura y la siguiente, pero es
demasiado corto para armar escenas complejas, por ello debemos recurrir a
otro mtodo.
Double Buffering, Es una tcnica de Back Buffering que permite eliminar el
efecto de tearing mediante el uso de otro buffer extra, Back buffer (al
framebuffer se lo denomina front buffer tambin). Ambos buffers tienen las
mismas caractersticas. El back buffer es un buffer secundario, no visible, que

acta de espacio temporal donde realizar el proceso de dibujado y una vez


finalizado el mismo se realiza la copia del back buffer al front buffer mediante
un copiado masivo muy rpido implementado por hardware que se realiza en el
Vertical Blank Interval. Si comparamos los fps de esta tcnica vs el dibujado
directo en el framebuffer vemos que es menos performante, pero la
performance percibida por el usuario es mucho mejor.
Page Flipping, es similar a doubl buffering, la nica diferencia es que se
utiliza la capacidad de los adaptadores de video de cambiar el puntero al
framebuffer para evitar el copiado de un buffer a otro, as se va alternando el
puntero de un buffer a otro y vamos dibujando la escena alternadamente en
cada uno.
Triple Buffering, para evitar ese problema de tener que sincronizar con el VBI,
se utilizan dos back buffers y se puede mezclar esta tcnica con page flipping.
Utilizar ms buffers no representa mejora y produce retardo respecto al input
lag.

Unidad 3 Conceptos Bsicos 3D


Para la programacin de grficos en 3 dimensiones utilizaremos un modelo
lgico, compuesto por un espacio geomtrico que contiene y representa todos
los objetos que querremos mostrar en pantalla. Existen diversos modelos
lgicos para representar, computar y mostrar un universo en 3 dimensiones en
una PC. Algunos son: Modelo de Silicon Graphics, Voxel Rendering, Reyes
rendering, etc. Nosotros utilizamos Modelo de Silicon Graphics.
Una primitiva es la unidad elemental mediante la cual se pueden construir
todos los elementos del universo 3D. La unidad fundamental del modelo de
Silicon Graphics es el tringulo. El tringulo es la unidad bsica, y est
compuesta por 3 vrtices, cada vrtice especifica un punto en el espacio
mediante 3 floats. Por lo tanto un tringulo se representa mediante 9 floats.
El tringulo es el cuerpo de tres dimensiones ms simple de representar.
Adems es coplanar, lo que significa que todos sus vrtices se encuentran
contenidos dentro de un nico plano.
Malla
Una figura geomtrica compuesta por tringulos se denomina malla (mesh). Un
escenario en 3 dimensiones estar compuesto por un conjunto de mallas.
Una malla tiene el siguiente esquema (en general):

1 textura
N tringulos
o 1 normal (face-normal)
o 3 vrtices
3 valores de posicin (por vrtice, X,Y,Z)
2 coordenadas de textura (por vrtice, u,v)
3 valores de vector normal (por vrtice, Nx,Ny,Nz)
4 valores de color (por vrtice, RGBA)

Mesh: es el modelo 3D que queremos representar en el universo. Posee una


lista de tringulos que definen su geometra y puede poseer una o ms
texturas (el esquema anterior es con una).
Textura: es una imagen 2D que puede proyectarse sobre un tringulo para
lograr un efecto de superficie, rugosidad, luminosidad, etc. Cada triangulo se
mapea a una porcin de la textura mediante sus coordenadas u,v.
Triangulo: cuenta con 3 vrtices y un vector normal que indica la direccin de
la cara.

Color: Cada vrtice puede especificar un color RGB o RGBA. Este color se
utilizara para calcular la iluminacin del tringulo, es independiente de la
textura. Los adaptadores de video toman los colores de los vrtices y generan
colores interpolados para los pixeles de pantalla que se encuentren en el medio
de los vrtices que especifican un color.

Rendering
Una vez definido nuestro universo 3D especificando las primitivas grficas que
definen cada malla necesitamos poder visualizar el resultado. Para ello
debemos pasar de nuestro modelo lgico en 3D a un modelo fsico en 2D (ya
que los dispositivos trabajan en dos dimensiones). Para lograrlo el modelo
lgico deber ser proyectado a un modelo de dos dimensiones compuesto por
pixels. Este proceso se denomina rendering. Al finalizar el proceso de rendering
se obtiene una imagen digital en dos dimensiones, una imagen tipo raster.
La cmara es lo que determina que parte ser visible del universo 3D en un
momento dado, y se la denomina Frustum. El frustum es una figura
geomtrica de aspecto piramidal.
Todos los tringulos que se encuentren dentro del volumen del frustum sern
visibles en pantalla (excepto aquellos que sean tapados por otros). Aquellos
tringulos que se encuentren parte dentro y parte fuera sern recortados hasta
dejar solo la parte de los mismos que es visible (triangle splitting). Al
proceso de determinar que tringulos caen dentro y cuales fuera se lo
denomina Frustum Culling.
Determinar que tringulos sern visibles dentro del frustum debido a que
algunos pueden ser tapados por otros se denomina Occlusion Culling.
Por lo tanto el concepto de Rendering consiste en calcular, para una cmara
determinada, dentro de un universo 3D determinado, que pixels debern ser
dibujados en pantalla.
Renderizado RealTime vs Offline
En el renderizado Offline se construye un universo 3D y a partir de l se
obtienen imgenes (renders) bajo determinadas posiciones de la cmara. El
foco en este tipo de aplicacin es obtener la mayor calidad posible sin importar
tanto el tiempo de procesamiento. El cine de animacin, la edicin digital de
imgenes y la fotografa tienen este tipo de necesidades.
En el renderizado RealTime la situacin es completamente diferente, el
programa tiene una naturaleza crtica respecto del tiempo, debe dar respuesta
en tiempo real al usuario que lo est utilizando. Aplicaciones como programas
de diseo grfico, programas de simulaciones y video juegos son ejemplos de
algunos que tienen estas necesidades.

Graphics Pipeline
Para realizar un render, es decir, pasar del modelo lgico de 3D al modelo fsico
2D que se mostrara en pantalla, existen una serie de complejos pasos a seguir
que se denominan Graphics Pipeline.
A muy grandes rasgos, los pasos de una aplicacin 3D son los siguientes:
El programa especifica a la API la geometra en su modelo 3D, texturas e
iluminacin del mundo 3D que desea construir. La API, junto con la ayuda de
los adaptadores de video, recibe toda la informacin de la aplicacin, la
procesa y la transforma para ser proyectada en el plano 2D de una pantalla.
Todo este proceso se denomina rendering y para completarlo se debe pasar por
todas las etapas del Graphics Pipeline.
Las etapas del Graphics Pipeline son secuenciales. La informacin llega a una
etapa, es procesada y luego enva su respuesta a la siguiente etapa.
La entrada inicial del Pipeline ser la descripcin del modelo lgico del universo
3D y la salida ser la matriz de pixeles que se mostrar en pantalla.

Etapa Application/Scene: Esta etapa no pertenece a la API, es donde


se concentrar el mayor trabajo del programador. En esta etapa se crea y
configura el universo 3D, se construyen todos los modelos a partir de las
primitivas, se configuran los aspectos de iluminacin y texturas para cada
modelo y se configuran los parmetros de la cmara. Tambin se efectuaran
todos los clculos de inteligencia artificial, deteccin de colisiones, clculos de
fsica, etc.

Etapa Geometry: Esta etapa se divide en varios procesos.


Transforms: Se recibe la geometra provista por la aplicacin junto con las
transformaciones que se les desea aplicar. En esta etapa la API realiza todas las
transformaciones especificadas para cada modelo y termina obteniendo la
verdadera posicin en el espacio de un objeto 3D.

Cabe destacar que ya a principio de esta etapa, la API junto con los
adaptadores de video, desconocen el concepto de modelo 3D o malla y solo se
manejan a nivel de tringulo. La API grfica continuar el resto de los pasos del
pipeline trabajando individualmente sobre cada tringulo.
Frustum Culling: En esta etapa se evala que tringulos estn dentro y
cuales fuera. Los que estn fuera en este momento dado ya no pasaran a la
siguiente etapa. Los que estn dentro por completo o parte dentro pasaran,
luego se los cortara como corresponda.
Back-Face Culling: En este proceso todos los tringulos que se encuentran
completamente hacia el lado contrario a la cmara son eliminados, ya que
nunca sern visibles. Para esto se utiliza la informacin del vector normal a
cada triangulo.
Per-Vertex Lighting: En esta etapa se procesan todos los parmetros de
iluminacin definidos. El usuario cuenta con estos parmetros para definir la
iluminacin: Color por vrtice, Material del mesh, Luces que hayan sido
colocadas en el universo 3D. El modelo de iluminacin utilizado es el Gouraud
Shading que determina el color de cada vrtice y luego se interpola para
obtener los colores de los puntos restantes del tringulo. En este proceso se
termina calculando el color verdadero de cada vrtice, no de cada pixel, eso se
efectuara luego en la etapa de Shading a partir de lo calculado aqu.
Triangle Clipping: En esta etapa se cortan todos los tringulos que tienen
parte dentro y parte fuera del volumen del frustum formando nuevos tringulos
al realizar dichos cortes.

Etapa Scan-Line Conversion

: Esta etapa representa el punto de


conversin entre el modelo lgico 3D y el modelo fsico 2D. Cada triangulo es
proyectado al plano de la pantalla 2D y se calcula que pixeles ocupara en la
pantalla. Para esto se transforma una arista a la vez, tomando el vrtice de
inicio y de fin aplicndole la matriz de proyeccin en perspectiva y luego se
calculan los pixels intermedios de la arista. Se replica el proceso para las dos
aristas restantes y luego se calculan los pixels internos. Este proceso se ejecuta
lnea por lnea, de all el nombre de la etapa. En esta etapa no se tiene en
cuenta que tringulos se superpondrn, se calculan para todos sin importar si
luego sern visibles o no.
Los pixels son celdas discretas en 2D, por ello al proyectar se puede obtener un
efecto no deseado de serrucho, para solucionarlo se puede aumentar la
resolucin o utilizar alguna tcnica como Anti-Aliasing.
Esta etapa es una de las ms costosas computacionalmente del Pipeline.
Acadmicamente el proceso es el siguiente: Se proyectan los 3 vrtices y se
arma la ecuacin de la recta para cada arista, luego un pixel de la pantalla
pertenece al triangulo solo si al evaluarlo en las 3 rectas el resultado es
positivo (o cero) en todas. Si es negativo en aunque sea una, entonces no
pertenece al triangulo. Se testean solo los pixeles que se encuentran dentro del
bounding box formado por los 3 vrtices del tringulo, este bounding box se
encuentra con solo obtener los valores mnimos y mximos de los 3 vrtices.

Etapa Rendering/Rasterization : Esta etapa es una de las ms


complejas y que ms cambios a sufrido a lo largo del tiempo. Cuenta con las
siguientes sube tapas:
Shading: Consiste en determinar el verdadero color RGB para cada pixel que
se mostrar en pantalla. Este proceso recibe la proyeccin de pixeles de cada
triangulo. Por cada triangulo se obtienen los 3 pixeles extremos, que
corresponderan a los vrtices del tringulo en 3D, y se realiza Gouraud
Shading para obtener el color de todos los pixeles intermedios mediante
interpolacin lineal. El problema que trae esto es que para obtener buenos
efectos e iluminacin es necesario armar modelos con mayor cantidad de
tringulos (ms pesados).
Texturing: Este proceso recibe por cada triangulo las coordenadas de textura
de cada vrtice. Las mismas indican como proyectar la textura en el tringulo.
Por lo tanto es necesario obtener los pixels de la textura que se utilizaran en la
proyeccin, estos pixels se denominan Texel (Texture Element), y el proceso de
seleccin de los mismos se denomina Texture Sampling. Una vez que se obtuvo
texel para cada pixel se procede a mezclar el valor del mismo con el color
previamente calculado en el proceso de Shading. El resultado de esa mezcla es
el verdadero color del pixel que se mostrar en pantalla.
Alpha Blending: El usuario puede especificar un valor de traslucidez por cada
vrtice de cada triangulo, mediante el canal alpha (A del modelo RGBA). Este
canal tiene un valor de punto flotante entre 0 y 1, siendo 1 completamente
opaco y 0 transparente. La traslucidez de pixels afecta a los tringulos que se
superponen entre s (Occlussion), por ello es necesario tener en cuenta el
orden de precedencia respecto de la profundidad.
Stencil Test: Existe un Stencil Buffer, que el usuario puede manipular como
una mscara, asignndole un valor de punto flotante entre 0 y 1 y luego se
testeara para decidir si esos pixeles pasan o no a la siguiente etapa.
Principalmente se utiliza para efectos de sombra en tiempo real.
Anti-Aliasing: Esta tcnica se utiliza para eliminar desperfectos grficos que
ocurren al discretizar en pixels de tamao fijo una figura continua. La idea
general de la tcnica es suavizar las lneas agregando pixels de colores
cercanos. Aplicar Anti-Aliasing a toda la pantalla en tiempo real es muy
costoso, pero hoy en da los adaptadores de video ya cuentan con una opcin
para ello lo cual lo hace viable.
Depth Buffering: En esta etapa es donde se determina finalmente que
pixeles sern visibles y cuales no (debido a que otros los tapan). Para ello se
utiliza el Z-Buffer, que es un rea de memoria de video como el Framebuffer,
donde se determina los pixels que realmente quedan enfrente de la cmara y
se descartan aquellos que quedan tapados. Es una operacin muy costosa y
por eso hay tcnicas de optimizacin para detectarlo en etapas ms
tempranas.

Display: Es el proceso final del PipeLine. Es donde se completa el framebuffer,


que luego ser copiado al dispositivo de video (salida) en el prximo intervalo
de refresco.
Se denomina Fixed Pipeline porque las etapas del mismo estn perfectamente
establecidas y no pueden modificarse. Esta arquitectura de pipeline fijo ha
ayudado a los fabricantes de adaptadores de video a optimizar sus chips cada
vez ms, pero limita al programador respecto al control de lo que se muestra
en pantalla.

Unidad 4 Texturas e Iluminacin


Iluminacin Dinmica e Iluminacin Esttica:
La iluminacin dinmica es la que ms se asemeja al comportamiento real de
la luz. Su efecto se calcula en run time para cada cuadro por lo tanto su uso es
limitado.
La iluminacin esttica es una alternativa para lograr efectos de iluminacin
con bajo costo computacional. Principalmente consiste en: texturas y colores
por vrtices.

Iluminacin Esttica
Texture Mapping: Para que un tringulo contenga una seccin de textura es
necesario especificar valores de mappeo, denominados coordenadas de
textura. Son un par ordenado (u,v) con valor entre 0 y 1 que luego se
multiplican por el ancho y alto de la imagen que da la textura para obtener los
verdaderos valores de mappeo, logrando as que la especificacin de mappeo
sea indistinta del tamao real de la textura. El mappeo se haca con
interpolado lineal pero eso traa problemas con objetos con inclinaciones, por
ello se empez a utilizar Perspective Correct Texture Mapping que para
proyectar utiliza 1/z en el espacio 3D y as obtiene mejores resultados al aplicar
texturas, es ms costoso computacionalmente pero los adaptadores de video lo
soportan.
Mipmapping: se basa en generar varias imgenes de diferentes tamaos a
partir de una imagen de textura definida, para utilizar la imagen del tamao
que convenga segn la cantidad de pixeles que va a representar en pantalla.
Se suele generar un nuevo mipmap si un pixel contiene uno o ms texels. No
se realiza en tiempo real, la API los tiene pre calculados desde la carga de la
textura por primera vez. Adems al no tener que realizar esos clculos en
tiempo real la API le aplica anti-aliasing a las imgenes generadas (que son
ms pequeas) para corregir y disminuir imperfecciones, que debido a su costo
no sera posible realizarlo en tiempo real.
Texture Sampling: Es el mtodo de seleccin de muestras de texels.
Conllevan un gran costo computacional. Algunos son:
Nearest Sampling Method: Al recibir las coordenadas de textura, sus
valores floats se multiplican por las dimensiones de la imagen de textura y el
resultado es truncado a integer. Es el mtodo ms eficiente, pero desperdicia
informacin importante (los decimales).
Bilinear Sampling Method: Este mtodo utiliza los valores truncados del
mtodo anterior para determinar un rea de 4 pixels dentro de la textura e

interpola los colores de manera proporcional par a obtener el color final.


Frmula para el clculo del color final en hoja de frmulas.
Al intentar acceder al texel ms cercano puede ocurrir que nos quedemos fuera
de los lmites de la textura. Para solucionar este problema existen diversas
tcnicas, denominadas Texture Addressing Mode.

Wrap: Si intentamos acceder a la posicin u +1 y esta se encuentra


fuera del lmite de la textura, entonces tomamos el primer texel de la
fila. Es un modo circular.
Clamp: Si queremos acceder a un texel fuera de los limites se toma el
texel ms extremo, es decir, si tratamos de acceder al texel u+1 v+1,
entonces tomaremos el u,v.
Border Color: cualquier texel que intentemos acceder fuera de los limites
devuelve un color default.

Trilinear Sampling Method: Este mtodo tiene en cuenta los distintos niveles de
textura creados en el proceso de Mipmapping. Efecta bilinear entre dos
mipmaps y luego interpolacin lineal entre los dos valores encontrados. Atena
el efecto brusco de cambio de un mipmap a otro.
Anisotropic Sampling Method: Este mtodo utiliza la tcnica del mtodo
anterior pero incorporndole el ngulo de inclinacin del tringulo.
En un concepto ms amplio, una textura es una imagen compuesta por una
matriz de dos dimensiones, la cual posee como valor de cada par de
coordenadas (x,y) un color RGB. El color representado por cada pixel de la
textura normalmente se utiliza para hacer referencia al color que queremos
que se muestre en el modelo 3D, podra utilizarse para otras cosas.
Con este concepto ms amplio, una textura puede ser considerada como una
forma extra de proveer informacin para un modelo 3D.
DiffuseMap: es la textura tradicional que venimos tratando. Cada pixel
representa el color RGB que queremos que sea plasmado en la superficie
de un modelo 3D.
LightMap: Es una textura que se utiliza para lograr efectos de luces y
sombras. Cada pixel de la imagen representa el brillo de una
determinada seccin de un modelo 3D.
NormalMap: es una textura que se utiliza en la tcnica de Bump Mapping
para lograr efectos de relieve y generar sensacin de mayor detalle de
geometra. Cada pixel de la imagen representa el valor del vector normal
de la superficie del modelo 3D.
Multitexture: actualmente se pueden definir varias texturas para un mismo
modelo, simplemente se tienen varios canales de textura y cada triangulo
define varios pares de coordenadas u,v. Luego se las debe mezclar de alguna
manera, la tcnica ms comn es Modulation (se multiplican los texels de los
canales).

En cuanto a los colores por vrtice como se dijo antes cada vrtice puede
especificar valores RGBA para definir su color y luego se interpolara para
obtener los valores intermedios de los pixeles entre los vrtices. Esto se puede
combinar con los valores que den la/s textura/s para obtener un mejor
resultado.

Iluminacin Dinmica
Cuando se construye el universo 3D se pueden situar diferentes emisores de
luz en el escenario. Estos emisores luego sern tenidos en cuenta por la API
para influenciar el color de los vrtices de los tringulos. La iluminacin
dinmica debe ser calculada en run-time, en la etapa de Shading, con lo cual
es computacionalmente costosa.
El modelo utilizado es simplificado, ya que sera imposible calcular la
iluminacin real con el hardware actual. El dato utilizado para el clculo es el
vector normal del vrtice al que le queremos calcular la iluminacin. Una vez
obtenidos los colores de los 3 vrtices de un tringulo se utiliza algn mtodo
(Shading Model) para determinar los colores de los puntos intermedios.
Ecuacin de luz simplificada en hoja de frmulas.
Ambient Light: La luz ambiental es aquella que proviene de todas
direcciones, todas las superficies son iluminadas por ella con igual intensidad
sin importar su orientacin. Es una simplificacin tramposa de la fsica de la
luz, ya que la luz ambiental real proviene de la luz reflejada por el ambiente
(cosa que no podemos calcular debido al costo computacional), entonces se
establece un valor X arbitrario que especifica la cantidad de luz ambiental.
Diffuse Light: La luz difusa es la proveniente de una fuente de luz que es
absorbida por una superficie y luego reflejada en todas direcciones. Depende
del ngulo que exista entre la orientacin del vrtice y el vector desde el
vrtice hacia la fuente de luz. La luz difusa es independiente de la posicin de
la cmara.
Specular Light: La luz especular es la proveniente de una fuente de luz que
refleja en la superficie y se dirige hacia la cmara. Se la conoce como efecto
espejo y representa la capacidad de un objeto de reflejar luz.
Material
En la fsica real cuanto ms cerca est un objeto de una fuente de luz, ms se
ilumina, para simular la atenuacin de la luz al alejarse se utilizan los tres
coeficientes de la ecuacin del clculo de la luz. La configuracin de esos
coeficientes determina como un objeto refleja o irradia luz y se la denomina
material.

Shading Model
Una vez calculado el color RGB con el modelo de iluminacin dinmica, se debe
calcular los colores de los puntos intermedios de las superficies, este proceso
se denomina Shading.
Flat Shading: Es el mtodo ms simple y rpido. No calcula el color RGB para
cada vrtice sino que calcula un nico color para todo el tringulo utilizando el
vector normal, as cada triangulo tiene un nico color slido. No genera
transiciones de iluminacin suaves.

Gouraud Shading: En este mtodo se tiene en cuenta el vector normal de


cada vrtice y se calcula el color RGB para cada uno. Luego se realiza
interpolacin lineal para calcular los colores de puntos intermedios. Logra
resultados ms suaves que flat y con poco overhead.
El color de cada vrtice es determinado por el modelo de iluminacin dinmica.
Este color luego es aadido al color que originalmente se haba cargado al
vrtice a travs de la API grfica. Esto se realiza en la etapa de Per-vertex
Lighting del Graphics Pipeline.
Ms tarde en la etapas de Shading y Texturing se termina combinando el color
anterior con el color de los texels de la textura que se ha mapeado a ese
tringulo.
De esa forma se integran todos los elementos que permiten calcular el color
final de un modelo.

LightMap
La calidad de la iluminacin por vrtice con Gouraud Shading en una malla est
limitada por la cantidad de vrtices de la misma. Si uno quiere lograr mejores
efectos de iluminacin se ve obligado a aumentar la complejidad de la
geometra del modelo.
Los LightMaps son una tcnica para evitar este problema y lograr buenos
efectos de luces y sombras en objetos estticos.
Un LightMap es una textura que representa el brillo de las superficies de un
objeto, dadas diversas fuentes de luces. Solo contiene informacin acerca de
cmo est iluminado el objeto.
Al proceso de agrupar muchas texturas pequeas en una sola ms grande se lo
denomina Texture Packing.
La tcnica de LightMaps es muy til para lograr buena calidad de brillo
inclusive en objetos de geometra simple. Adems tiene muy bajo costo
computacional porque todo se pre calcula Offline. Pero esta tambin es su
principal desventaja, ya que es una iluminacin esttica. Si durante la
ejecucin de la aplicacin la geometra fuese modificada (destruccin de una
pared, apagar un farol de luz) la iluminacin sobre los modelos seguir igual
que al principio.
Bump Mapping: Es una tcnica para aumentar la calidad grfica y la
complejidad de un modelo mediante la generacin de falsas protuberancias y
abolladura. Normal Mapping es una de las tcnicas ms sencillas de Bump
Mapping. La idea de Normal Mapping es generar dos modelos, uno low poly y
otro high poly. Solo se puede renderizar el High poly en tiempo real, el low poly
se utiliza para generar un Normal Map ya que tiene mucho ms detalle y ms
vectores normales lo que dara un mejor efecto de iluminacin. Luego se utiliza
ese normal map y se lo aplica como una textura al low poly model obteniendo
mejores resultados de iluminacin
Iluminacin Offline

Radiosity es ideal para calcular la irradiacin de luz entre los objetos y Ray
Tracing es ms indicado para efectos de reflexin especular y transparencia.
Por lo tanto, en la prctica, ambas tcnicas son combinadas para obtener las
ventajas de cada una.

Occlusion Culling. Solucin con Z-Buffer


El Z-Buffer o Depth-Buffer es una matriz bidimensional alocada en la memoria
de la placa de video. En cada posicin se almacena un valor de Z, que
determina la profundidad de un pixel candidato a ser enviado a pantalla.
Mediante el proceso de Z-Culling se determina lo ms pronto posible que pixels
van a ser visualizados finalmente en la pantalla. La idea es proyectar a 2D cada
uno de los objetos y obtener la profundidad Z de cada pixel. Sin calcular su
color todava. Se compara ese valor de Z con el casillero correspondiente del ZBuffer (segn coordenadas x,y) y si el casillero esta vaco se llena con ese valor
de Z, si est lleno se lo compara con el nuevo y si es mayor se lo intercambia
(se encuentra ms cerca y debe verse el nuevo) y se deshecha el pixel viejo.
De esta manera se van descartando aquellos pixeles que quedaran ocultos y se
evita el procesamiento de Texturing y de color.
Integracin con Alpha Blending
Debido a que el Z-Culling se realiza antes del clculo del color, no se puede
tener en cuenta el valor de traslucidez. Una tcnica para solventar esto es
enviar a la API los modelos opacos primeros con el Z-buffer habilitado, luego
los modelos traslucidos son ordenados por su coordenada Z y enviados a la API

previa des habilitacin del Z-Buffer. Ya que sino los valores se pisaran porque
el proceso con Z-Buffer solo contempla la profundidad y no as la traslucidez.
Notas:
El algoritmo de iluminacin dinmica se ejecuta en la sub etapa de PerVertex
Lighting de la etapa Geometry del Graphics Pipeline. Recibe como
entrada vrtices de tringulos y devuelve esos mismos vrtices con su
color RGB calculado.
El algoritmo de Shading Model es ejecutado en la sub etapa de Shading
de la etapa de Rendering/Rasterization del Graphics Pipeline. Recibe
como entrada fragmentos de tringulos sin color y devuelve como salida
pixels con el color determinado.
Un Shader es cdigo programable que ejecuta en la GPU.
Pertenece al esquema de Programable Pipeline. Existen Vertex
Shaders y Pixel Shaders, entre otros. Un
Pixel Shader permite al programador sobrescribir la funcionalidad
tradicional de la subetapa de Shading del Pipeline, para
implementar un Shading Model diferente.
SkyBox es un mtodo sencillo de crear un fondo envolvente para un
escenario, utilizando un cubo con 6 texturas que encastran
perfectamente.
Enviroment Mapping es una tcnica para generar el efecto de reflejo
de superficies como espejos, metales y agua. Se utiliza una textura,
denominada EnviromentMap.

Unidad 5 Animacin
Animar es dar la sensacin de que los objetos tienen vida propia.
La animacin hace que los objetos cambien en el tiempo siguiendo un guion
predefinido, mientras que la simulacin trata de predecir cmo van a cambiar
los objetos a lo largo del tiempo siguiendo reglas fsicas y matemticas.

Un keyframe representa un estado importante dentro de la


animacin. En el keyframe se definen los parmetros del objeto que
cambian su estado.
Un inbetween o tween, es un cuadro intermedio que se logra luego de
interpolar dos keyframes.
Los cels de la animacin tradicional tienen su paralelo con los Sprites que
tienen transparencia, ya que ambos permiten mostrar objetos cuya forma no
son rectangulares.

Los parmetros que pueden interpolarse en un Sprite pueden ser


posicin, color, ngulo de rotacin, tamao, nivel de traslucidez.
Interpolar es obtener un conjunto de puntos de muestra y buscar una funcin
que se ajuste a ellos. Se utilizan generalmente polinomios, particularmente los
de 3er grado.
Se puede animar una malla en 3D interpolando las coordenadas de las
posiciones de cada vrtice en una serie de keyframes ubicados a lo largo del
tiempo.
Un esqueleto es una estructura lgica del tipo jerrquica compuesta por huesos
y juntas.
Skinning es el proceso de asociar cada vrtice de la malla del modelo a los
huesos del esqueleto.
Vertex weighting o blending es una tcnica que permite asignar a cada vrtice
que porcentaje de influencia ejercen dos o ms huesos sobre l. Se utiliza para
lograr animaciones ms realistas y evitar efectos indeseados.
La cinemtica directa comienza desde el nodo raz y propaga las
transformaciones hacia los niveles inferiores. Por otro lado la cinemtica
inversa solamente se conoce la transformacin del nodo terminal y se calculan
las transformaciones de cada uno de los nodos padre.
Los obstculos que enfrenta la cinemtica inversa entre otros son, que por un
lado pueden existir mltiples soluciones para una misma pose o tambin puede
no existir solucin alguna.

Formula de interpolacin lineal para ejercicios de animacin por keyframes en


hoja de formulas
La animacin implcita tiene muchas ventajas comparada con la animacin
explicita.
La memoria requerida en la animacin implcita se reduce fuertemente cuando
en cada keyframe se almacenan solo los cambios en traslacin y orientacin de
los huesos.
Otra de las ventajas es que una misma animacin esqueltica puede
reutilizarse para varias mallas. Si el esqueleto es el mismo, se puede realizar el
proceso de Skinning a distintas mallas, reutilizando los mismos keyframes.
Una ventaja de la animacin explicita es que distintas animaciones pueden
mezclarse gradualmente entre s, en lo que se denomina Animation Blending.
Se pueden lograr transiciones ms suaves entre distintas animaciones.
Por otro lado la desventaja principal de la animacin implcita es su
complejidad de implementacin, siendo mucho ms complejo desarrollarla
frente a un sistema explcito. El costo de procesamiento tambin se incrementa
debido a las intensivas transformaciones matriciales.
Finalmente, otra desventaja es que al ser una estructura jerrquica, puede
resultar una limitacin si el modelo requiere que se realice una metamorfosis
en otro objeto que no guarde la misma forma. Es por eso que se desalienta el
uso de animacin esqueltica cuando se quieren lograr efectos de Morph
Target.

Unidad 6 Deteccin de Colisiones


Un testeo de colisin es la accin de calcular si dos modelos de un
escenario colisionan entre s.
Para saber si un punto est incluido en un plano, se reemplaza el punto dentro
de la ecuacin del plano y se compara su resultado.
Detectar si un punto est dentro de un triangulo mediante el teorema de la
suma de los angulos interiores es ineficiente porque la implementacin del
teorema necesita ejecutar tres operaciones de arco coseno, que suelen ser
costosas computacionalmente.
Los volmenes de simplificacin de modelos permiten rechazar en
forma temprana un modelo entero, sin necesidad de efectuar clculos
de colisin para cada uno de sus tringulos.
En lneas generales un BoundingSphere derrocha ms espacio que un
BoundingBox porque el primero debe crear su contorno con la magnitud del
radio hacia todas sus direcciones, mientras que el segundo posee tres
magnitudes distintas para cada uno de sus ejes. Por otro lado el testeo de
BoundingSphere suele ser ms eficiente porque no utiliza tantas instrucciones
condicionales como las de BoundingBox.
Al desplazar un modelo no es necesario reconstruir el BoundingBox, solo se le
debe aplicar el mismo desplazamiento que al modelo. Con las rotaciones es
necesario recalcularlo.
La cantidad de planos a utilizar para encerrar un modelo con la tcnica de
convex hull depende del modelo a encerrar.
El efecto Slidding consiste en utilizar la energa remanente de
movimiento para desplazar a un objeto a lo largo del plano contra el
cual colision. Se proyecta sobre el plano de colisin la parte del
vector de velocidad que no pudo ser aprovechada para desplazarse.

Unidad 7 Tcnicas de Optimizacin Indoor


La idea principal es optimizar los procesos de Frustum Culling y Occlusion
Culling. Ambos realizados a nivel de tringulos por el adaptador de video.
Ambos tienen mucho costo computacional, entonces si logramos evitar enviar
determinados modelos enteros al adaptador de video porque tenemos alguna
lgica que nos asegura que luego el frustum Culling o el Occlusion Culling los
eliminara podemos ahorrar tiempo de procesamiento que puede ser utilizado
en alguna otra tarea, por ejemplo renderizar mas tringulos para tener una
escena ms compleja y de mayor calidad. Para alcanzar estos objetivos de
optimizacin hay diferentes tcnicas.
Fuerza bruta con simplificacin de modelos
La simplificacin de modelos con volmenes geomtricos (como bounding
sphere, bounding box y convex hull) permite optimizar los clculos
matemticos de colisin. De esa manera calcular la colisin del frustum con
una malla de 3000 tringulos tendr un costo computacional mucho mayor que
hacer un nico chequeo de colisin de frustum con bounding sphere. Por lo
tanto se puede seguir este procedimiento para optimizar: En cada cuadro
iteramos sobre todos los modelos 3D y hacemos chequeo de colisin de
frustum-BoundingSphere por cada modelo, si no colisionan descartamos el
modelo, si colisionan hacemos chequeo de colisin de frustum-BoundingBox
del mismo modelo. Si no colisionan lo descartamos, si colisionan asumimos que
ese modelo es visible y lo enviamos a la API para que sea renderizado.
A partir de esta tcnica se realizan mejoras para hacer el proceso ms
performante.
Grilla regular: es la idea de dividir el escenario en una grilla compuesta por
celdas de tamao fijo que delimitan sectores imaginarios. La ventaja de esta
tcnica es que nos permite calcular las colisiones del frustum con una celda y
si colisionan podemos asumir que los modelos que se encuentren dentro de la
celda tambin colisionaran, as nos ahorramos los testeos de fuerza bruta
(iterar por todos los modelos). El algoritmo a seguir seria iterar por todas las
celdas de la grilla lgica y por cada una:

Realiza testeo frustum-bounding Box (las celdas con rectngulos 3D


alineados a los ejes).
Si el bounding box est completamente fuera del frustum se descartan
todos los modelos que se encuentren en la celda. Si la celda se
encuentra completamente dentro del frustum, todos los modelos
colisionaran => los enviamos a la API.
Pero si la celda posee parte de su volumen dentro y parte fuera,
tenemos 2 opciones. O asumimos a todos los modelos visibles y dejamos

que el adaptador de video se encargue o realizamos el procedimiento de


fuerza bruta para los modelos que se encuentran dentro de dicha celda.
Tiene sus desventajas esta tcnica. Hay que armar la grilla (sea de manera offline o en un estado previo a la aplicacin ejecutando en real-time). Adems
tiene detalles de configuracin que dependen de la aplicacin en s como el
tamao de las celdas, que puede conllevar a que mal elegido nos traiga peor
performance que la fuerza bruta. Adems las celdas deben ser todas de igual
tamao sin importar que quizs alguna zona no tenga ningn modelo y nos
obliga a realizar testeos frustum-celda en esas zonas innecesariamente.

Quadtree y Octree
Son estructuras de datos que evolucionan de la grilla regular. Tienen la
capacidad de adecuarse a la geometra particular de un escenario mediante la
construccin de una grilla adaptativa. Octree maneja 3 ejes y quadtree solo 2,
la utilizacin de una tcnica u otra depender de las caractersticas de la
aplicacin y del escenario.
La idea principal es ir subdividiendo el mapa, en cubos o cuadrados segn la
tcnica, hasta llegar a un nivel mximo de divisiones prestablecido o a que
haya menos de cierta cantidad de modelos en cada cubo o cuadrado. Las
divisiones se hacen en la mitad del cuadrado a dividir en ambos ejes.
La construccin de esta grilla conforma una estructura de datos en forma de
rbol.
La concentracin de modelos del escenario determina que tanto se seguir
subdividiendo un nodo. Por lo tanto en aquellos lugares en los que haya ms
modelos habr ms subdivisiones y en aquellos lugares vacos habr muy
pocas subdivisiones.
Esto produce que el tamao de las celdas sea ms chico donde realmente se
necesita ese nivel de precisin, manteniendo celdas de gran tamao para
abarcar las reas de poca informacin.
La construccin de la grilla debe realizarse en manera offline y persistirse en
algn archivo, ya que conlleva un importante costo computacional como para
hacerlo en real-time.
El porcentaje de completitud de un rbol se calcula como la cantidad de nodos
que posee el rbol sobre el total de nodos de ese rbol completo.

KD-Tree
La tcnica de KD-Tree es una evolucin directa de los Octrees/Quadtrees que
tiene como objetivo lograr un rbol balanceado sobre el escenario de modelos.
Para lograr esto lo que la tcnica propone es hacer cortes no a mitad espacial

como los anteriores sino a mitad de densidad de cantidad de modelos en una


celda dada.

BSP-Tree
El BSP-Tree termina la lnea de evolucin iniciada con la grilla regular e intenta
alcanzar como resultado un rbol completamente balanceado de rpido
acceso. La tctica anterior poda obtener resultados bastantes buenos pero se
vea limitada con ciertas configuraciones de modelos porque solo poda
efectuar cortes rectos por los ejes.
En un rbol BSP los cortes que se pueden hacer para dividir el volumen de un
nodo en dos mitades no tienen ninguna restriccin, pueden hacerse cortes en
diagonal con cualquier direccin.

Portal Rendering
Todas las tcnicas explicadas anteriormente atacan correctamente el tema de
Frustum Culling pero ninguno provee una solucin sencilla para acelerar el
Occlusion Culling. Portal Rendering es una estrategia para atacar ambos
problemas con una misma tcnica.
Esta tcnica se basa en proveed de metadata al escenario, en vez de crearle
una grilla lgica asumiendo que todos los modelos estn desparramados por el
escenario. De esta manera se deben definir celdas y portales que conectan las
diferentes celdas mediante objetos convexos. Con esta estructura definida
podemos realizar Frustum Clipping, que es el proceso de reducir
dinmicamente el frustum, ya que al chocar con un borde de una celda (si
no hay un portal que la conecte con otra) ese es el lmite de visin. Esto
permite acelerar enormemente el clculo de Occlusion Culling.
Portal Rendering utiliza un grafo de celdas que son conectados por portales.
La meta-data de Portal Rendering debe ser creada por el diseador del
escenario, a medida que va confeccionando sus modelos.
Todas las tcnicas contempladas hasta ahora se explicaron siempre sobre un
escenario que permaneca esttico. Todos sus modelos tienen una posicin fija
en el espacio que se mantiene igual durante toda la ejecucin de la aplicacin.
Dinamismo en Quadtree, Octree, KD-Tree y BSP. Como se dijo antes es
computacionalmente costoso el clculo de las grillas o cortes correspondientes
al escenario, por lo tanto no se puede recalcular en cada cuadro. Lo que si
puede hacerse es calcular en que nueva hoja del rbol se encuentra un modelo
que se haya movido. Luego quitarlo de la hoja original y agregarlo en la nueva.
Para el dinamismo en Portal Rendering se utiliza la misma idea.
Las tcnicas de rboles vistas tambin pueden ser utilizadas para optimizar la
deteccin de colisiones, haciendo relevantes solo los modelos que se
encuentren en hojas visibles por el frustum (las dems colisiones posibles no
son necesarias).

Para detectar colisiones en Portal Rendering, primero se determina en que


celda se encuentra la cmara. Una vez encontrado esto, se procede a detectar
colisiones solo con los modelos que pertenecen a esa celda, descartando
automticamente todos los modelos restantes.
La matriz de PVS es una matriz de bits y se utiliza para evitar realizar testeos
Frustum-Portal contra portales que nunca sern alcanzados desde una celda
particular.

Unidad 7 Tcnicas de Optimizacin Outdoor


Los escenarios Outdoor son abiertos y no poseen objetos como
paredes y techos que restrinjan naturalmente la vista. Por lo tanto no
puede realizar una optimizacin fuerte por Occlusion Culling.
El nivel de detalla discreto utiliza distintas versiones de calidad precomputadas de un mismo modelo, efectuando saltos entre cada una segn
corresponda. El nivel de detalle continuo modifica en tiempo real los
tringulos de un modelo, agregando o quitando calidad segn sea
necesario.
El efecto Popping ocurre cuando se cambia en forma brusca entre dos
modelos de Nivel de Detalle discreto. La diferencia de calidad entre ambos
modelos es percibida por el usuario y produce un efecto de aparicin
repentina. Este efecto puede disminuirse aplicando Alpha Blending entre
ambos modelos.
Para determinar que versin de LOD (Level of Detail) utilizar se tienen en
cuenta la distancia del modelo a la cmara y el tamao que el mismo ocupa en
pantalla.
Un Heightmap (mapa de alturas) es una textura o imagen
convencional, hecha con escala de grises. Posee colores entre 0 y 255. Los
colores ms oscuros representan las zonas ms bajas del terreno mientras que
los colores claros representan las zonas ms altas.
Se utilizan HeightMaps para modelar terrenos al aire libre porque modelar un
terreno de gran tamao, tringulo por tringulo, es una tarea ardua de llevar a
cabo. Con un Heightmap puede lograrse en poco tiempo una aproximacin
sencilla del terreno deseado.
El vector de escala permite configurar las dimensiones del terreno,
independientemente del tamao de Heightmap que se utilice.
Se dice que un HeightMap es una funcin para cada par de coordenadas (x,z)
porque la textura de heightmap especifica un nico valor de Y, que determina
la altura del terreno.
Una instancia de modelo es una referencia de un modelo original, con
pequeas variaciones respecto de este. Se utiliza para modelos repetitivos.
Ahorra memoria.
La tcnica de Tiling es necesaria para renderizar terrenos porque un
terreno de gran tamao necesitara una textura demasiado grande
para aplicarle color. Los adaptadores de video posee un lmite de tamao
para texturas y la memoria del sistema tambin puede verse afectada.
En esta tcnica contamos con un conjunto de texturas pequeas, todos del
mismo tamao, denominadas tiles o mosaicos. Estas texturas se combinan

como baldosas de una vereda para confeccionar el color final de una superficie
mayor.
La variacin del valor Y entre dos puntos (X, Z) del Heightmap indica si la
prxima posicin deseada es realmente alcanzable por el modelo.

Unidad 8 Shaders
Al comienzo se trabajaba con el modelo del Graphics Pipeline visto
anteriormente que era fijo, de all Fixed Pipeline, pero con el tiempo esto
evolucion hacia Pipeline programable.
Se llama fragmentos a los pixeles que an no estn en pantalla. Es decir un
pixel final puede ser el producto de varios fragmentos debido al alpha blending
y al mutisampling.
Haba 2 tipos de unidades programables: los vertex shaders unit y los fragment
(o pixel) shaders unit. Los shaders entonces se escriban en lenguaje
ensamblador de muy bajo nivel, lo cual haca muy complicada su escritura,
mantenimiento y reutilizacin.
En el contexto de las GPUs un shader es un pequeo programa que se
carga y se ejecuta directamente en el hardware de la placa, en las
llamadas shaders units
Vertex Shader
El vertex shader trabaja a nivel de vrtices y sobrecarga la etapa de transform
y lighting del fixed pipeline. Recibe como dato de entrada un nico vrtice y
devuelve un vrtice transformado. Como mnimo debe devolver la posicin
transformada (o proyeccin al espacio de pantalla) de tal forma que el
rasterizador pueda generar los distintos fragmentos. Eventualmente puede
producir ms datos por vrtice como color (iluminacin por vrtice) y cualquier
otro dato que ser consumido por el rasterizador. El vertex shader no tiene
acceso a ningn otro vrtice de la primitiva, ni informacin sobre la misma,
esto permite el paralelismo entre los distintos vrtices que son totalmente
independientes entre s.
Con los Vertex Shaders podemos lograr efectos como ojo de pescado,
distorsiones, movimiento de telas y banderas, ondulaciones de superficies, etc.
Pixel Shader
El PS se llama una vez por cada pixel generado por el rasterizador. Recibe los
valores interpolados por vrtice (color, coordenadas de textura, normal, etc.) y
con todos esos datos devuelve el color final del pixel. Trabaja con un solo pixel
a la vez y eventualmente puede descartar dicho pixel y abortar las siguientes
etapas del pipeline. El PS no puede modificar la posicin en pantalla (X ,Y ) del
pixel pero ocasionalmente puede modificar el valor de profundidad Z.
Algunos efectos que se pueden lograr con pixel shader son: Iluminacin en
tiempo real, Multitextura, Efectos de relieve (bumpmapping), Pelaje en
superficies, Fuego, reflejos, sombras, alpha blending y blur.
Geometry Shader
Luego se agreg en el pipeline una entrada en la etapa de Geometry que
permitiera crear primitivas. As la entrada del Geometry Shader son los 3
vrtices de un tringulo y eventualmente informacin de adyacencia
(tringulos adyacentes al mismo). Con todo eso es capaz de crear nuevas
primitivas a partir de una nica primitiva de entrada.

Teselado
Se llama teselado a la operacin de cubrir una superficie utilizando tringulos
de tal forma que no queden huecos en el medio y que no se superpongan
ninguna de las figuras. El teselado de geometras es una de las principales
tcnicas para atacar el problema del LOD en grficos. La idea es que la
geometra se define con primitivas de orden superior las cuales son
convertidas a tringulos (proceso de teselado) slo cuando se precisan dibujar
en pantalla. Como se puede controlar la cantidad de tringulos en los que se va
a convertir la superficie original, es posible controlar el LOD de manera precisa.

Notas:
El CPU es de propsito general, mientras que el GPU est diseado
especialmente para renderizar. El CPU es un procesador escalar, mientras
que el GPU es un procesador vectorial o de flujo. El CPU es orientado a la
operacin, est hecho para ejecutar cualquier tipo de algoritmos en forma
serial, mientras que el GPU es orientado a los datos, ya que se procesan
millones de pixeles de forma independiente y en paralelo. El CPU busca
siempre la mayor precisin posible mientras que el GPU se permite cierta falta
de precisin con el fin de aumentar la performance.
El GPU tiene instrucciones SIMD (Single Instruction, Multiple Data) porque
las operaciones que se realizan a los vrtices y pixeles pueden realizarse de a
varios elementos por vez. Adems hay operaciones como dot product y cross
product que convienen realizarse en una sola instruccin.
GPGPU es General Purpose GPU, y se utiliza para aplicaciones en campos que
no necesariamente son relacionados con los grficos, como por ejemplo
modelado de molculas, simulaciones fsicas, climticas, algoritmos genticos,
etc.
Pipelining es una tcnica para lograr paralelismo en los stages del
rendering pipeline. Esto se logra utilizando unidades de geometra y de
rasterizacin en paralelo, cada una ejecutando distintas etapas del pipeline.
El rendering pipeline es paralelizable ya que en general los tringulos y los
pixeles que se procesan dentro de l son independientes unos de los otros. Las
tres etapas fundamentales del rendering pipeline son Aplicacin, Geometra y
rasterizador.
En la etapa de geometra ingresan los datos de los vrtices, coordenadas de
textura, texturas, materiales, informacin de la iluminacin, cambios de
estados del render y egresan los vrtices proyectados en un plano, junto con su
informacin de profundidad, y los datos necesarios para hacer el Shading.
De la etapa de Rasterizacin egresan los colores de pixeles que van a ser
copiados en el framebuffer.

Un shader es un pequeo programa que se ejecuta en el shader


unit del GPU. El vertex shader se encarga de realizar el
procesamiento de los vrtices como por ejemplo
transformaciones, deformaciones, Skinning, efectos de
iluminacin, Heightmaps. El Pixel shader se encarga de procesar
fragmentos, y se pueden realizar efectos como multitextura,
iluminacin a medida, bump mapping, efectos de pelaje, high
dynamic range, Alpha Blending, motion blur, y muchos ms.
Unified Shader architecture significa que un Shader Unit (programa ejecutable
en GPU) puede ejecutar tanto un Vertex como un Pixel Shader. Al unificar la
forma de programarlos se habilita la opcin de realizar balanceo de carga.

Vous aimerez peut-être aussi