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

Ocultamiento de Superficies

Indice

1. INTRODUCCION

2. CONCEPTO DE COHERENCIA

3. CLASIFICACION DE LOS ALGORTIMOS DE OCULTAMIENTO

PRECISION A LA IMAGEN
6

4. ALGORITMO DE BACK-FACE CULLING

5. ALGORITMO DE WARNOCK

13

6. ALGORITMO DE Z-BUFFER

16

7. ALGORITMO DEL PINTOR

20

8. ALGORITMO DE RBOL BSP

21

9. CONCLUSIONES

24

10.

25

BIBLIOGRAFIA

Pgina3

PRECISION AL OBJETO

Ocultamiento de Superficies

Introduccin
Hasta el momento hemos aprendido como construir y proyectar objetos
tridimensionales, pero siempre se ven todas las partes del objeto. Esto da
a nuestros dibujos una cierta calidad de transparencia. Las figuras que se
obtienen de esta forma reciben el nombre de modelos almbricos ya que
slo presentan los contornos de objetos supuestamente slidos. Los
objetos complejos se pueden convertir rpidamente en un enredo de
segmentos y curvas sin sentido. Es difcil identificar que lneas pertenecen
a la parte frontal de objeto y cuales estn situadas detrs.
Otra consideracin a tomar en cuenta cuando queremos lograr una
simulacin de carcter real es que en el mundo real un objeto puede
obstaculizar la visualizacin de otro objeto, es decir, los objetos pueden
interponerse, ocultando la visin de otros.
El problema general consiste en hacer que los objetos se vuelvan opacos
en el mundo de los grficos tridimensionales y a esto se le denomina
eliminacin de superficies ocultas.
Este problema no es tan sencillo como cabra pensar en un principio. De
hecho, es el ms complejo en trminos de programacin. Lo que la
naturaleza hace con facilidad (y una gran cantidad de procesamiento
paralelo) debemos hacerlo nosotros con un nmero elevado de clculos.
Existen varias soluciones para el problema de las superficies y lneas

En este apartado veremos las tcnicas para eliminar aquellas lneas,


curvas o superficies que estaran ocultas en una escena y as aumentar el
realismo de sta, es decir, veremos diferentes algoritmos que pueden

Pgina3

ocultas.

Ocultamiento de Superficies

solucionar este problema y determinar qu curvas o superficies pueden


ser observadas desde un punto de vista dado y cuales no.

Concepto de Coherencia

Podemos definir la coherencia como el grado en el cual las partes de un

entorno muestran similitudes locales. Esta propiedad se puede aprovechar para


aumentar la eficiencia de los algoritmos ya que permite ahorrar clculos cuando
las propiedades de un objeto varan suavemente. Se han identificado distintas
clases de coherencia:

Coherencia de objeto. Si un objeto est completamente separado de otro,

no es necesario comparar sus componentes (caras, aristas...) entre s para


comprobar si se solapan.

Coherencia de arista. La visibilidad o no de una arista cambia slo si se

cruza con un objeto visible.

Coherencia de arista implcita. No es necesario calcular todos los puntos

de la recta que se forma cuando dos planos se cruzan, solo son necesarios dos.

Coherencia de lnea de barrido (scan-line). Los objetos definidos en el

espacio deben ser llevados a la pantalla en forma de pxeles (scan-conversion),


esto se hace por medio de lneas que barren la imagen (Scan-line). Pues bien, la
coherencia reside en el hecho de que la variacin de una lnea a otra es pequea,
lo cual se puede tener en cuenta para simplificar las computaciones.

Coherencia de cara. Las propiedades de las caras de los objetos varan

que hacer esfuerzos innecesarios.

Pgina3

suavemente, lo que permite hacer los clculos de modo incremental sin tener

Ocultamiento de Superficies

De forma similar a esta ltima se definen otros tipos de coherencia como

la de rea y la de profundidad.

Clasificacion de los algoritmos de


Ocultamiento
Las tcnicas y algoritmos de ocultamiento se pueden dividir en dos grupos
segn el enfoque que se le d:

PRECISION A LA IMAGEN (image-precision): Determinar cual de


los n objetos en la imagen es el visible en cada pixel. Esto supone un
esfuerzo computacional proporcional a p*n;

donde p representa el

nmero de pxeles.

PRECISION

AL

OBJETO

(object-precision):

comparar

directamente los objetos eliminando las partes no visibles. De este modo


el esfuerzo computacional es proporcional a n2. Aunque parece menor
que en el caso anterior (habitualmente n es menor que p), los algoritmos
son ms difciles de implementar.

Pgina3

Ocultamiento de Superficies

Otra diferencia entre ambas aproximaciones reside en el hecho de que los


algoritmos de precisin a la imagen son ejecutados directamente a la
resolucin del dispositivo de salida (pantalla, impresora, etc.), mientras
que en los otros se realiza el clculo de modo independiente, pero es
necesario un paso posterior de traduccin a la resolucin deseada.
Debemos aadir que esta divisin de los algoritmos no es excluyente, ya
que existen algoritmos que combinan clculos de ambos grupos.

PRECISION A LA IMAGEN
Se realizan en el sistema de coordenadas de la imagen.
Se determina cual de los n objetos es visible en cada uno de los p pxeles
de la imagen.
Algoritmo
PARA (cada pxel de la imagen) {
Determinar el objeto ms cercano al observador que
es atravesado por el rayo proyector a travs del
pxel;
Dibujar el pxel con el color apropiado;

Pgina3

Ocultamiento de Superficies

Se observa que compara todos los objetos con cada pxel, su complejidad es
O(n*p)
Este algoritmo depende del dispositivo utilizado y el tamao de la ventana. Al
cambiar la cantidad de pxeles se deben rehacer los clculos.
Algoritmos: Z Buffer, Warnock, Scan-Line , Back-Face Culling
Los algoritmos de precisin de imagen se hicieron para sistemas grficos de
barrido.

PRECISION AL OBJETO
Realizan el proceso de clculo en el sistema de coordenadas del objeto.
Se compara directamente cada objeto con el resto de los elementos,
eliminando objetos enteros, tambin partes no visibles del objeto.
Algoritmo
PARA (cada objeto de la escena) {
Determinar aquellas partes del objeto
cuya vista no esta obstruida por:
el mismo objeto;
otro objeto;
Dibujar esas partes con el color apropiado;

Pgina3

Ocultamiento de Superficies

Vemos que cada objeto se compara con el resto, su complejidad es O(n2).


No se considera la resolucin de la pantalla para los clculos => el dibujo en
pantalla es el ltimo paso.
Algoritmos: algoritmo del Pintor, Algoritmo utilizando el rbol BSP
Los algoritmos de precisin de objeto se hicieron inicialmente para sistemas
grficos vectoriales.

ALGORITMOS DE OCULTAMIENTO DE
SUPERFICIES
1. SUPERFICIES OCULTAS: BACK FACE RENOVAL (CULLING)

Pgina3

El objetivo de ste cdigo es eliminar superficies no visibles de un objeto y


eliminar superficies de un objeto ocultas por otros objetos.

Ocultamiento de Superficies

Mtodo Back Face culling:


1. Sirve para determinar las caras de un objeto que estn detrs y no son
visibles
a. Cada cara define un plano que divide el espacio en dos
semiespacios, uno 'in' y otro 'out'
b. El subespacio 'in' es aqul en que se encuentra el objeto (al
menos la parte del objeto que tiene a esta cara por frontera con el
exterior)
c. La cara est detrs respecto de un centro de proyeccin CP si el
CP est en el semiespacio 'in' (el objeto tapa a la cara)
d. La cara est delante respecto del CP si ste se encuentra en el
semiespacio 'out'
2. Prefiltro para resto de algoritmos de superficies ocultas: descarta caras
que seguro que no son visibles (culling)
a. Si back face indica que una cara est detrs, la cara no es visible
b. Si back face indica que una cara est delante, puede que est
oculta si el objeto no es convexo o si tiene otro objeto delante
3. Poco costoso.
Algoritmo back face:
1. Calcular la normal
a cada cara que apunta hacia afuera del objeto
(hacia el semiespacio 'out')
2. Estudiar signo del coseno del ngulo entre la normal a la cara y la
direccin de proyeccin
(va del objeto hacia el centro de proyeccin):
a. Si es > 0, la cara est delante y no se descarta (puede que sea
visible)

(el centro de proyeccin est en semiespacio 'in' y


est en
semiespacio 'out')
c. Si es = 0, la cara est de canto y se descarta (si es visible, se
reducir a una arista que de todas maneras aparecer al
proyectar una cara vecina)

Pgina3

(el centro de proyeccin y estn en el mismo semiespacio: el


'out')
b. Si es < 0, la cara est detrs y se descarta (no visible)

Ocultamiento de Superficies

Clculo de la normal:
1. En 2D
a. Se ordenan vrtices en direccin antihorario.
b. Normal a una arista se calcula como producto vectorial de vector
de la arista con vector unitario de eje OZ
c. Ejemplo: Si tenemos un polgono de vrtices A B C D (sentido
antihorario), la normal a la arista AB es:

2. En 3D
a. Se ordenan vrtices de cada cara en sentido antihorario vistos
desde fuera del objeto
b. Normal a la cara es el producto vectorial de dos aristas
consecutivas
c. Ejemplo: Si una de las caras del objeto tiene los vrtices A B C (en
sentido antihorario vistos desde fuera del objeto), la normal a la
cara ABC es, por ejemplo:

Clculo del signo del coseno del ngulo entre la normal y la direccin
de proyeccin
1. Basta estudiar el signo del producto escalar :

2. Obtencin de la direccin de proyeccin

a usar:

Pgina3

a. El vector
va del objeto hacia el centro de proyeccin
b. Si el centro de proyeccin CP = (C x,Cy,Cz,0) es un punto impropio,
coincide con CP

Ocultamiento de Superficies

10

c. Si el centro de proyeccin CP = (C x,Cy,Cz,Cw) es un punto propio


(Cw no es cero),
es el vector que va de uno de los vrtices de la
cara (p.ej., el punto A) al centro de proyeccin:

Observaciones:
1. Se puede hacer back face antes del prewarping: ahorra proceso de
proyeccin
2. Si se hace prewarping, el signo del producto escalar es el signo de la
coordenada
Z
de
la
normal
a
la
cara
(tras prewarping, la proyeccin es ortogrfica con direccin/CP (0,0,1,0))
3. No es preciso normalizar las normales (hacerlas unitarias), aunque este
clculo viene bien para otros algoritmos (iluminacin)
4. En el clculo de la direccin de proyeccin para CP propios, da igual el
vrtice de la cara escogido (relacin con distancia de punto a plano del
producto
)
5. Otra forma alternativa de clculo del signo:
1. Si Ax+By+Cz+D=0 es la ecuacin del plano de la cara y
2. (A, B, C) es un vector normal a la cara apuntando hacia afuera
3. entonces el signo a estudiar es el de AC x+BCy+CCz+DCw (relacin
con distancia de punto a plano)

La forma ms simple de eliminar polgonos innecesarios es eliminar todos


aquellos que el observador no puede ver. Esto se conoce como back face
culling. Ya que la mayora de los objetos 3D son completamente cerrados, los
polgonos no enfrentados al observador estn siempre bloqueados por
polgonos que s lo estn, excepto cuando el observador est dentro del
objeto. El enfrentamiento de un polgono esta definido por el winding u orden
en el que sus vrtices se envan al renderizado. Un renderizado puede definir
un winding en el sentido de las agujas del reloj o contrario como
enfrentamiento hacia el frente o hacia atrs. Una vez que un polgono se

Pgina3

Back face culling (tambin llamado eliminacin del enfrentamiento


trasero)

Ocultamiento de Superficies

11

transform a un espacio en la pantalla, su winding puede ser verificado y si


esta en la direccin opuesta, no es dibujado. Por su puesto, back face culling
no puede ser usado con volmenes abiertos o degenerados.

Estructuras de datos espaciales:


Tcnicas ms avanzadas usan estructuras de datos para eliminar objetos que
estn fuera del volumen visible o tapados por otros objetos. Las estructuras
de datos ms comunes son particionado binario del espacio, y eliminacin de
celda y portal.
Mejoras posteriores:
Si bien el proceso de rasterizacin bsico hace dcadas que se conoce, las
aplicaciones modernas siguen haciendo optimizaciones y adiciones para
aumentar el rango de posibilidades del motor de rasterizacin.
Filtrado de texturas:
Las texturas son creadas a resoluciones especficas, pero ya que la superficie
en donde estn aplicadas puede estar a cualquier distancia del observador,
estas pueden mostrarse en tamaos arbitrarios en la imagen final. Como
resultado, un pxel en la pantalla usualmente no corresponde directamente a
un texel. Alguna tcnica de filtrado debe ser aplicada para lograr imgenes
claras a cualquier distancia. Hay varios mtodos, con diferentes relaciones
entre calidad de imagen y complejidad computacional.

El mapeado del entorno es una forma de mapeado de texturas en la cual las


coordenadas de la textura son dependientes de la vista. Una aplicacin
comn, por ejemplo, es simular reflejo en un objeto con brillo. Uno, por

Pgina3

Environment mapping (mapeado del entorno):

Ocultamiento de Superficies

12

ejemplo, se puede mapear el entorno de un cuarto a una copa de metal, como


el observador se mueva alrededor de la copa, las coordenadas de la textura
en los vrtices de la copa se mueven proporcionalmente, dando la ilusin de
metal reflectivo.
Bump mapping (mapeado de imperfecciones, golpes, rugosidad):
Bump mapping es otra forma de mapeado de textura que no provee a los
pxeles de color sino de profundidad. Especialmente con pxel shaders
modernos, bump mapping crea la sensacin de rugosidad dependiente de la
luz y el punto de vista en una superficie para aumentar el realismo.
Nivel de detalle (LOD):
En muchas aplicaciones modernas, el nmero de polgonos en una escena
puede ser impresionante. Sin embargo, un observador en una escena solo
podr discernir detalles de objetos cercanos. Los algoritmos de nivel de
detalle varan la complejidad de la geometra en funcin de la distancia al
observador. Los objetos justo enfrente del observador pueden ser mostrados
en su completa complejidad mientras que los objetos que estn ms lejos
pueden ser simplificados dinmicamente.
Sombras:
Los clculos de iluminacin en el tradicional proceso de rasterizacin no
tienen en cuenta la obstruccin de objetos. El mapeado de sombras y el
mapeado de volmenes de sombras son dos tcnicas comunes modernas
para crear sombras.
Aceleracin por hardware:
Comenzando en los 90', la aceleracin por hardware para consumidores
normales de computadoras de escritorio se ha convertido en la norma.
Mientras que los programadores grficos se haban ms tempranamente
basado en ensamblador codificado a mano para que sus programas funcionen
ms rpido, la mayora de los programas modernos estn escritos para
funcionar a travs de una de las existentes APIs grficas, las cuales manejan a
la GPU.

Pgina3

Las ltimas GPUs poseen soporte para Pxel Shaders programables los cuales
mejoran drsticamente las posibilidades de los programadores. La tendencia
est apuntada a la completa programabilidad de la pipeline (tubera,
conducto) grfica.

Ocultamiento de Superficies

13

Procesador de imgenes rasterizadas:


Un procesador de imgenes rasterizadas, o RIP, es un dispositivo que se usa
en los sistemas de impresin para producir una imagen de mapa de bits.
Posteriormente, el bitmap generado por el procesador se enva a un
dispositivo de impresin. La entrada de datos en el RIP puede ser una pgina
generada en un lenguaje de descripcin de pgina de de alto nivel como
puede ser PostScript, PDF (del acrnimo ingls portable Document Format) o
XPS. Tambin puede ser otro bitmap de un dispositivo cuya salida es enviada
a la entrada del RIP. En ltima instancia, el dispositivo RIP aplica algoritmos de
interpolacin y suavizado sobre el bitmap de entrada para generar el bitmap
de salida.
La finalidad del procesamiento para el que se ha concebido un RIP es
conseguir una imagen rasterizada de alta resolucin a partir de una
informacin digital vectorial. Inicialmente, los dispositivos RIPs eran una etapa
de la electrnica del hardware que reciba la descripcin de la pgina a travs
de una interfaz, (generalmente la RS232) y generaba una salida que
posteriormente se usaba para habilitar o deshabilitar cada pxel en tiempo
real del dispositivo de salida como pudiera ser el escner de una filmadora de
fotolitos.
Inclusive, un RIP se puede implementar en un componente software del
sistema operativo o como un firmware ejecutado en un microprocesador del
interior de la impresora. Ghostscript y GhostPCL son ejemplos de software
RIPs. Cada impresora PostScript contiene un RIP en su firmware. Los RIPs ms
recientes guardan la compatibilidad hacia atrs con photosetters por eso son
capaces de soportar lenguajes ms antiguos.

Interpretacin. Este es el paso donde el lenguaje de descripcin de


pgina soportado se transforma en una representacin de una pgina
particular. Muchos RIPs procesan pginas con tanta intensidad que el
funcionamiento habitual de la mquina es solo para la pgina en curso,
es decir, se proceso una sola pgina cada vez. Una vez que la pgina se
ha generado se procesa la siguiente.

Renderizado. Proceso a travs del cual la representacin interna


particular se transforma en un bitmap de tono continuo. Hay que hacer
notar que, en la prctica, la interpretacin y el renderizado se hacen
juntos con bastante frecuencia. Los lenguajes simples (en su mayor
parte los ms antiguos) se disearon para trabajar con mnimos
requerimientos de hardware, por eso tienden a ejecutar el renderizado
directamente.

Pgina3

Pasos de un RIP:

Ocultamiento de Superficies

14

Proyeccin. Para que se imprima, un bitmap de tonos continuos se ha de


transformar previamente en otro de tonos medios (patrones de puntos).
Hay dos mtodos o tipos para este paso. La proyeccin por modificacin
en la amplitud (AM) y la proyeccin estocstica o por modulacin en la
frecuencia (FM). En la proyeccin AM, la variacin del tamao de los
puntos depende de la densidad del objeto y sus valores tonales. Los
puntos se colocan en una cuadrcula fija pero son mayores si
corresponden a un rea de la imagen de alta densidad. En la proyeccin
FM, el tamao de los puntos permanece siempre constante y se ubican
en un orden aleatorio para crear reas de imagen ms claras u oscuras.
El emplazamiento de los puntos, y la densidad de estos, se controla a
partir de un sofisticado algoritmo matemtico.

Los RIP se usan en las impresoras lser para comunicar las imgenes
rasterizadas al lser de barrido de la impresora.

2.

ALGORITMO DE WARNOCK

Ms complejo que Z-buffer, pero no requiere tanta memoria


Se suele usar con caras triangulares para simplificar comprobaciones de
solapamiento
Idea es buscar reas rectangulares de la pantalla que tengan color
uniforme: el del fondo o el de una cara

1. Preproceso semejante al de Z-buffer:


1. matrices de transformacin
2. back face
3. clipping
4. prewarping
2. Se transforman las caras a coordenadas de pantalla
3. Se calcula la ecuacin del plano correspondiente a cada cara
transformada
4. Se tiene lista de rectngulos pendiente de estudio;
se comienza con rectngulo que cubra toda la pantalla
5. Se toma un rectngulo de la lista:
1. Si el rectngulo es del tamao de un pxel, se obtienen
todas las caras (triangulares) cuya proyeccin contiene al
pxel (el pxel est dentro de su proyeccin):

Pgina3

Procedimiento interno

Ocultamiento de Superficies

15

1. Si ninguna cara contiene al pxel, se pinta de color de fondo


2. Si al menos una cara contiene al pxel, se le da el color de la
cara ms cercana (|z| menor) en ese punto
2. Si el rectngulo es mayor que un pxel, se obtienen todas
las caras cuya proyeccin se solapa con el rectngulo:
1. Si ninguna cara se solapa, se rellena el rectngulo con el
color de fondo
2. Si el rectngulo se encuentra completamente dentro de la
proyeccin de una cara, y esta cara es la ms cercana de
las que se solapan con el rectngulo, se rellena con el color
de esta cara
3. Si no se da ninguno de estos casos, se subdivide el
rectngulo

Comprobaciones de solapamiento

2. Si la Y de interseccin est entre t(op) y b(ottom), hay


interseccin
2. Si no hay interseccin, se repite proceso para resto de
aristas y bordes del rectngulo hasta encontrar interseccin

Pgina3

1. Cara P1P2P3, rectngulo dado por l(eft), r(ight), b(ottom), t(op)


1. b(ottom) tiene coordenada Y mayor que top en la pantalla
2. Se calculan xmin = min (x1,x2,x3) , etc.
2. Se realizan las siguientes comprobaciones hasta que se
determine el tipo de solapamiento:
1. Minimax test: Si se cumple alguna de las condiciones
siguientes, no hay solapamiento
1. xmax < l
2. xmin > r
3. ymin > b
4. ymax < t
2. Comprobacin de interseccin arista rectngulo
(solapamiento parcial):
1. Para borde l(eft), si l no est entre x1 y x2, no hay
interseccin; en caso contario:
1. Se calcula la Y de interseccin con arista P1P2

Ocultamiento de Superficies

16

3. Si no hay ninguna interseccin, se contina con siguiente


comprobacin
4. Si hay interseccin, no se comprueba ms.
3. Comprobacin de tringulo dentro (solapamiento parcial):
1. Si todos los vrtices del tringulo dentro de rectngulo, el
tringulo est dentro del rectngulo
2. Se comprueba si uno de los vrtices estn en zona 'in'
respecto de todos los bordes
4. Comprobacin de rectngulo dentro (solapamiento total):
1. Si todos los vrtices del rectngulo dentro de tringulo, el
rectngulo est dentro del tringulo
2. Se comprueba si uno de los vrtices estn en zona 'in'
respecto de todas las aristas
5. Si no, el tringulo y el rectngulo son disjuntos (no hay
solapamiento)

Comprobacin de proximidad
1. Se realiza cuando rectngulo est completamente dentro de
una cara
2. Se calcula distancia (Z) de las esquinas del rectngulo para los
planos de todas las caras cuya proyeccin se solapa con
rectngulo
1. Si una de las caras tiene distancias menores que todas las dems
(la mayor de sus distancias es menor que cualquiera de las del
resto de las caras), esta es la cara ms cercana
2. Si esto no sucede, o si la cara ms cercana no incluye al
rectngulo por completo, se subdivide

1. Comprobacin de si un punto est en zona 'in' de una arista se realiza de forma


semejante al algoritmo de back face removal: se sustituyen
coordenadas del punto en ecuacin de la recta y se ve el signo
(Ax+By+C > 0: out, < 0: in)
2. Clculo de distancias (coordenada z) se hace de forma
semejante a algoritmo de Z-buffer, a partir de ecuacin del
plano de la cara
1. No hace falta pasar de coordenadas de pantalla a coordenadas de
mundo real
2. Se puede ahorrar una divisin pasando a una ecuacin del plano
del tipo (C=1):
Ax+By+z+D=0 ; z = -D-Ax-By

Pgina3

Observaciones

Ocultamiento de Superficies

17

3. Se puede aprovechar informacin de comprobaciones previas:


1. Si tringulo es disjunto de un rectngulo, tambin lo es de todas
sus subdivisiones
2. Si un tringulo tapa a un rectngulo, tambin tapa a todas sus
subdivisiones
4. Se puede sofisticar la comprobacin de proximidad con tcnicas
semejantes a las del algoritmo del pintor
1. S' detrs de plano de S
2. S delante de plano S'

3.

El Algoritmo Z-Buffer

Es un mtodo de tipo espacio-imagen; que consiste en que cada vez que


realiza el renderizado verifica que no se haya dibujado antes en la posicin
del pixel que est ms cerca de la posicin respecto de la cmara.
A diferencia con algoritmo del pintor no es necesario clasificar un nmero
infinito de puntos. Solo es preciso especificar aquellos que van a ser
dibujados, es decir aquellos que corresponden a los pixeles ubicados en los
puertos de visualizacin donde la magnitud del numero de pixeles es finita a
diferencia de los puntos que se encuentran en la superficie de un polgono.
Entonces lo que hace el Algoritmo Z-Buffer registra que se dibuja en cada

aquellos pixeles que representan los puntos ms cercanos al espectador. Se


estara entonces llevando a cabo una clasificacin de profundidades separada

Pgina3

pixel del puerto de visualizacin, as podramos estar seguro que se muestran

Ocultamiento de Superficies

18

de cada pixel en el rea de la pantalla correspondiente al puerto de


visualizacin.

Para activarlo utilizando el OpenGL se har una llamada al:

glEnable (GL_DEPTH_TEST)
Esta llamada le dice al OpenGL que active el este de profundidad. Adems,
cada vez que se redibuje la escena, aparte de borrar el buffer de color, hay
que borrar el buffer de profundidad, y eso se realiza con la llamada a:

glClear (GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT).


Por ultimo, y no menos importante, al momento de inicializar OpenGL se le
tiene que decir que cree l buffer de profundidad. Esto se realiza al definir el

Pgina3

modo visualizacin.

Ocultamiento de Superficies

Sin Z- Buffer

19

Con Z-Buffer

Cuando el Algoritmo Z-Buffer funciona correctamente, no aparecen superficies


ocultas transparentadas; Sin embargo, presentan dos inconvenientes: tiempo
y memoria (debido a estos detalles esta funcin viene implementada en las
tarjetas graficas de hardware actuales).
Se requieren de dos areas de memoria para implementar el buffer de
profundidad y el buffer de renovacin. El buffer de profundidad se utiliza para
almacenar los valores de Z para cada posicin x, y a medida que se realizan
las comparaciones en el segundo buffer se almacena los valores de intensidad

Pgina3

de cada posicin.

Ocultamiento de Superficies

20

Las profundidades son representadas por los nmeros de cada celda de la


matriz que representa al puerto de visualizacin de tal manera que el cero
representa al pixel ms alejado del observador.
Inicialmente el Z-Buffer se encuentra vacio (cargados con ceros), luego
aadimos un polgono de profundidad constante al buffer vacio y observamos
la matriz resultante , luego se aade un polgono mas de profundidad
constante tambin y con profundidades distintas y observamos los cambios
que sufre cada celda con respecto al valor inicial.

Void z_Buffer(){
int x, y;
for(y=0;y<YMAX;y++){
for(x=0;x<XMAX;x++){
WritePixel(x,y,color);
WriteZ(x,y,0);
}
}
}
//Este metodo limpia el frame Buffer y el Z-Buffer
//en lo que respecta al eje Z

Pgina3

Una implementacin del algoritmo seria:

Ocultamiento de Superficies

21

for (cada poligono){


for(cada pixel en la proyeccion del poligono){
double pz=valor de z en las coordenadas x,y
if(pz>=Read(x,y)){
Write(x,y,pz);
WritePixel(x,y,color del pixel en cordenadas x,y);
}
}
}
//este metodo actualiza el Buffer de renovacion con los valores
//ya comparados en el Z-Buffer
Si algn otro objeto se tiene que renderizar en el mismo pixel la tarjeta grafica
realiza las comparaciones y elije la ms cercano al observador. Entonces este
valor es guardado en el Z-Buffer, reemplazando al valor antiguo. Esto
permitir la correcta representacin de los objetos.
LOS OBJETOS CERCANOS OCULTAN A LOS MAS LEJANOS
Ahora la distribucin de la distancia del Z-Buffer no es por igual, para esto
existe una variacin del Z-Buffer cuya precisin de los resultados estn mejor
distribuidos, esta se llama W-Buffer.
Para dibujar una nueva escena, el Z-Buffer deber limpiarse a un valor
definido, normalmente es 1.0 porque este valor es el lmite superior para una
escala entre 0 y 1. Esto implica que no hay objetos ms alejados en ese punto
en el frustum de visin.

Algunas Desventajas y Ventajas:


La gran ventaja de este mtodo es que es infalible. No importa lo como
sea la imagen, siempre dar resultados impecables.
Los inconvenientes: la dificultad de programacin, la gran cantidad de
memoria necesaria para mantener el buffer de pantalla, y la excesiva
lentitud del sistema.
En grandes ordenadores el proceso puede tomar algunos minutos ,
mientras que en sistemas caseros , puede tomar horas e incluso das
dependiendo de de la complejidad de la imagen .
Para disminuir en medida la cantidad de memoria necesaria, se ideo el
mtodo de la LINEA DEL EXAMEN que es idntico al Z-Buffer solo que en vez

Pgina3

La invencin de este concepto de Z-Buffer se suele aplicar a Edwin Catmull.


Realmente tambin a Wolfgang Straber describi esta idea en su tesis
doctoral de 1974.

Ocultamiento de Superficies

22

de almacenar toda la pantalla, se almacena solo una lnea de pixeles de cada


vez, tratando nicamente los puntos cuya proyeccin pertenecen a las
coordenadas del Scan. Y repitiendo el mismo proceso para todas las lneas de
pantalla, se consiguen resultados como el sistema Z-Buffer ; ahora respecto a
este mtodo se requiere de mayor dificultad de programacin y tiempos de
procesos.

4.

Algoritmo del pintor

El algoritmo del pintor es una de las soluciones ms simples para el


problema de visibilidad en los grficos 3D por computadora. Cuando se
proyecta una escena de tres dimensiones en un plano de dos es necesario
determinar que polgonos son visibles y cules no.
El nombre "algoritmo del pintor" se refiere a un pintor que primero dibuja los
elementos lejanos de una escena y despus los cubre con los ms cercanos.
El algoritmo del pintor ordena todos los polgonos de una escena en funcin
de su profundidad y despus los pinta en ese orden, pintando encima de las
partes que no son visibles y solucionando as el problema de la visibilidad.

Se pintan primero las montaas lejanas, seguidas por el prado; finalmente se


dibujan los objetos ms cercanos, los rboles.

El algoritmo puede fallar en determinados casos. En este ejemplo, los


polgonos A, B y C estn superpuestos. No es posible determinar qu polgono
est por encima de los otros o cundo dos se intersecan en tres dimensiones.
En este caso, los polgonos en cuestin deben ser cortados de alguna manera
para permitir su ordenacin. El algoritmo de Newell propuesto en 1972 da una
solucin para cortar dichos polgonos. Tambin se han propuesto numerosos
mtodos en el campo de la geometra computacional.

Pgina3

Los polgonos superpuestos pueden provocar que el algoritmo falle.

Ocultamiento de Superficies

23

En las implementaciones ms bsicas, el algoritmo del pintor puede ser poco


eficiente, ya que fuerza al sistema a renderizar cada punto de todos los
polgonos visibles, incluso si estos polgonos estn ocultos en la escena final.
Esto implica que, en las escenas detalladas, el algoritmo del pintor puede
consumir demasiados recursos.
Estas y otras causas llevaron al desarrollo de las tcnicas que emplean el ZBuffer, que puede ser vistas como un desarrollo del algoritmo del pintor que
resuelve los conflictos de profundidad pxel por pixel, reduciendo la necesidad
de una ordenacin por profundidad. Incluso en estos sistemas, a veces se
emplea una variante del algoritmo del pintor. Como las implementaciones del
Z-Buffer generalmente se basan en un buffer limitado de profundidad
implementado por hardware pueden producirse problemas de visibilidad
debido a los errores de redondeo, provocando la superposicin en la unin de
dos polgonos. Para evitarlo, algunos motores grficos implementan el
"sobrerenderizado", dibujando los bordes de ambos polgonos en el orden
impuesto por el algoritmo del pintor. Esto significa que algunos pixeles se
dibujan dos veces (como en el algoritmo del pintor normal), pero slo ocurre
en pequeas zonas de la imagen y apenas afecta al rendimiento.

5.
Algoritmo BSP (Particion Binaria
del Espacio)
Binary space partitioning o Particin Binaria del Espacio (BSP) es un
mtodo para subdividir recursivamente un espacio en elementos convexos
empleando hiperplanos. Esta subdivisin da lugar a una representacin de la
escena por medio de una estructura de datos del rbol conocida como rbol
de BSP

La tcnica del Z-Buffer puede asegurar que las escenas se dibujarn


correctamente y que se eliminar la necesidad de seguir un orden como en el
algoritmo del pintor, pero es poco eficiente en trminos de memoria. Los
rboles BSP dividen los objetos de forma que el algoritmo del pintor los
dibujar correctamente sin necesidad de emplear un Z-buffer ni de ordenar
los objetos como un simple rbol transversal que los mantenga en el orden

Pgina3

En diseo por ordenador es deseable que el dibujo de una escena sea correcta
y rpida. Una manera sencilla de dibujar una escena correctamente es el
algoritmo del pintor: dibujar primero lo ms lejano y despus lo ms cercano.
Sin embargo, este sistema es muy limitado ya que se pierde tiempo pintando
objetos que ms tarde sern tapados por otros.

Ocultamiento de Superficies

24

adecuado. Tambin sirve como base para otros algoritmos, como las listas de
visibilidad, que buscan evitar dibujar sin necesidad.
El problema es que necesita un pre-procesamiento de la escena, lo que hace
difcil e ineficiente insertar los objetos mviles directamente en el rbol BSP.
Esto se suele solucionar empleando conjuntamente un Z-Buffer, usndolo para
unir correctamente los objetos mviles como puertas y enemigos con el resto
de la escena.
Los rboles BSP se emplean normalmente en los videojuegos, especialmente
en los de accin en primera persona y en los que tienen entornos de interior.
Probablemente el primer juego que emple esta tcnica fue Doom (ver motor
de Doom para ms informacin sobre la implementacin). Otros usos incluye
el Ray tracing y la deteccin de colisiones

Definicin recursiva del rbol binario


T(S):

Si card(S) = 1:
o T(S) es una hoja, v;
o En la hoja se almacena el objeto (si existe), S(v).
Si card(S) > 1:
o La raz v de T(S) almacena:
una recta (plano) hv,
conjunto S(v) de objetos contenidos en hv.
o Hijo izquierdo de v: raz de un rbol T(S-), con S = {hv- instp S :
s ? S}.
o Hijo derecho de v: raz de un rbol T(S+), con S + = {hv+ instp S :
s ? S}.

El nmero final de objetos crecer inevitablemente ya que las lneas y caras


que se crucen con el plano de particin sern divididas en dos, y tambin es
deseable que el rbol final est razonablemente balanceado. De hecho, el
algoritmo para crear un rbol BSP correcta y eficientemente es la parte ms

Pgina3

La particin binaria del espacio es un proceso genrico que divide una escena
recursivamente en dos hasta que satisface uno o ms requisitos. El mtodo
especfico empleado vara dependiendo del objetivo final. Por ejemplo, en un
rbol BSP empleado para la deteccin de colisiones el objeto original sera
dividido hasta que cada parte sea lo suficientemente sencilla como para ser
individualmente comprobada, y en el renderizaje interesa que cada parte sea
convexa, de forma que el algoritmo del pintor pueda ser usado.

Ocultamiento de Superficies

25

difcil de implementar. En un espacio de tres dimensiones, se emplean planos


para dividir las caras de un objeto; en un espacio de dos se emplean lneas.
La siguiente imagen ilustra el proceso de particin de un polgono irregular en
una serie de polgonos convexos. Destacar cmo cada paso produce polgonos
con menos segmentos hasta que se llega a F y G, que son convexos y no
necesitan mayor particin. En este caso en particular, la lnea de particin se
ha tomado empleando vrtices existentes del polgono y no se intersecciona
con ninguno de sus segmentos. Si la lnea de particin se intersecciona con un
segmento, o una cara en un modelo tridimensional, el/los segmento/s o cara/s
tienen que ser divididas en dos dado que cada particin debe ser un objeto
completo e independiente.

1.
2.
3.
4.

A es la raz del rbol y de todo el polgono.


Se divide A en B y C
Se divide B en D y E.
Se divide D en F y G, que son convexos y se convierten en hojas del rbol.

Inicialmente, esta idea se propuso para los grficos 3D por ordenador para
incrementar la eficiencia de renderizado. Otros usos son el procesamiento
geomtrico con formas, Constructive Solid Geometry en herramientas CAD,
deteccin de colisiones en robtica y videojuegos 3D, y otras aplicaciones

Pgina3

Dado que la utilidad de un rbol BSP depende de cmo se gener, un buen


algoritmo es esencial. La mayora de los algoritmos prueban muchas
posibilidades para cada particin hasta que se encuentra un resultado lo
suficientemente bueno, y tambin mantienen la informacin necesaria en
memoria para poder retroceder en caso de que una rama del rbol no sea
satisfactoria y probar otras opciones. Por eso generar un rbol necesita mucho
tiempo de computacin.

Ocultamiento de Superficies

26

informticas que incluyen el manejo de estructuras espaciales complejas. la


eliminacin de caras ocultas ya que gracias a los planos divisorios del rbol
conoceramos qu polgonos estn detrs o delante, teniendo solamente que
considerar determinadas ramas del rbol a travs de la posicin desde la que
nos estemos posicionando en l.
El uso ms comn de los rboles de BSP es probablemente retiro superficial
ocultado en tres dimensiones. Los rboles de BSP proporcionan un mtodo
elegante, eficiente para clasificar polgonos va una primera caminata del
rbol de la profundidad: algoritmo del pintor delantero o Algoritmo del
pintor

Pgina3

Conclusiones

Ocultamiento de Superficies

27

Con las tcnicas presentadas podremos representar objetos en tres


dimensiones hasta lograr una visin realista del objeto.
Estos mtodos sirven para hacer que en la ventana de visualizacin no
aparezcan los objetos o las caras que no seran visibles desde el punto
de vista del observador.
Pero antes de elegir el mtodo a realizar se tiene que hacer un anlisis
del objeto a mostrar.
Se pueden reducir los tiempos de las operaciones de los algoritmos con
tcnicas de aceleracin.
Concluimos en que el Z-Buffer es el algoritmo ms apropiado (eficiencia)
cuando tratamos de dibujar una mayor cantidad de figuras en un
determinado escenario. Pero requiere mas espacio en memoria

http://es.wikipedia.org/wiki/Rasterizaci%C3%B3n

Pgina3

Bibliografa

Ocultamiento de Superficies

28

http://arantxa.ii.uam.es/~pedro/graficos/teoria/BackFace/Ba
ckFace.htm
http://www.scribd.com/doc/22112172/Ocultamiento
http://www.mieres.uniovi.es/egi/dao/apuntes/ocultamiento.
html
http://www.google.com.pe/url?
sa=t&source=web&cd=2&ved=0CBgQFjAB&url=http%3A
%2F%2Fseccperu.org%2Ffcatho%2Flib%2Fexe
%2Ffetch.php%3Fid
%3Dimage_processing_and_computer_graphics%26cache
%3Dcache%26media
%3Docultamiento_y_relleno.pdf&ei=Oq0zTK7vLYG88gbo0M
mjAw&usg=AFQjCNFNpRW6DpSNISZ-sF_Q7QCwnQukpA
Pdf de ocultamiento y relleno.
Diapositivas del Laboratorio de Computacin Grafica
Universidad Central de Venezuela
http://arantxa.ii.uam.es/~pedro/graficos/teoria/Warnock/Wa
rnock.htm
http://arantxa.ii.uam.es/~pedro/graficos/teoria/
http://es.wikipedia.org/wiki/Z-buffer
http://arantxa.ii.uam.es/~pedro/graficos/teoria/ScanZBuffer/
ScanZBuffer.htm
http://es.wikipedia.org/wiki/Algoritmo_del_pintor

Pgina3

http://es.wikipedia.org/wiki/%C3%81rbol_BSP