INDICE 1. Introducción 2. Detección de Caras Posteriores 3. Emisión de Rayos (traza de Rayos) 4. Z-Buffer 5. Método de Lín...
INTRODUCCIÓN Conceptos Rectángulos limítrofes Es el rectángulo envolvente “más pequeño” de un polígono. Se determina con l...
INTRODUCCIÓN Clasificación de los Métodos /  Prototipo de Algoritmos Precisión de Objeto (Objeto-Espacio) Se comparan los ...
Clasificación de los Métodos /  Prototipo de Algoritmos Precisión de Imagen (Imagen-Espacio) Se debe determinar cual de to...
DETECCION DE CARAS POSTERIORES Si la ecuación del plano es A x +  B y +  C z + D = 0  -> La cara es posterior  <-> P     ...
EMISION DE RAYOS Idea centro del pixel punto de referencia de proyección
EMISION DE RAYOS Algoritmo for  ( cada línea de rastreo en la imagen ) { for  ( cada pixel en la línea de rastreo ) { dete...
EMISION DE RAYOS Cálculo de Intersecciones  / Esfera Para cada punto  (x,y,z)  en el rayo que va de  (x 0 ,y 0 ,z 0 )  ( c...
EMISION DE RAYOS Cálculo de Intersecciones  / Polígono (1a. Parte) Ecuación del rayo  con  (x 0 ,y 0 ,z 0 )  ( centro de p...
EMISION DE RAYOS Cálculo de Intersecciones  / Polígono (2a. Parte) El problema se puede resolver en cualquier plano (espec...
Z-Buffer Idea (Implementable: hardware/software) Memoria Gráfica  (Memoria de Enfriamiento) Memoria de Profundidad (z-Buff...
Algoritmo Se iniciliza tanto el z-buffer como el buffer de enfriamiento así: z-buffer(x,y)  = -   máx. profundidad  en...
Cálculos de profundidad  (parte 1) Z-Buffer Paso 1:  Se determina  y máx  y  y mín , al comparar todos los vértices del po...
z nuevo  =  z anterior   + (( A / m ) +  B ) /  C , y z nuevo  =  z anterior  +  B / C  (si la arista es vertical) Paso 3:...
METODO DE LINEA DE RASTREO Repaso algoritmo para el rellenado de polígonos ET  (Edge Table) 0 i Ymax. Xmin 1 / m X inter Y...
METODO DE LINEA DE RASTREO Estructuras de datos empleadas I G H A F E D C B info sombreado coef. ecn. plano bandera PT   (...
METODO DE LINEA DE RASTREO Algoritmo for  ( cada línea de rastreo en la imagen ) { actualizar  AET  a partir de  AET  ante...
METODO DE LINEA DE RASTREO Ejemplo 1 PT   (Polygon Table) AET   (Active Edge Table) I G H A F E D C B EF ED CD CB FALSE TR...
METODO DE LINEA DE RASTREO Ejemplo 2 PT   (Polygon Table) AET   (Active Edge Table) I G H A F E D C B FA HI CB HG TRUE FAL...
METODO DE CLASIFICACION DE PROFUNDIDAD Algoritmo del Pintor Paso 1:  Se “clasifican” las superficies en orden de profundid...
METODO DE CLASIFICACION DE PROFUNDIDAD Determinación del orden de profundidad de los polígonos que se  traslapan Superfici...
METODO DE CLASIFICACION DE PROFUNDIDAD Determinación del orden de profundidad de los polígonos  / ejemplo 1 Prueba 1 Prueb...
METODO DE CLASIFICACION DE PROFUNDIDAD Determinación del orden de profundidad de los polígonos  / ejemplo 2 Prueba 1  Las ...
METODO DE CLASIFICACION DE PROFUNDIDAD Determinación del orden de profundidad de los polígonos  / ejemplo 3 Prueba 1  Las ...
METODO DE CLASIFICACION DE PROFUNDIDAD Determinación del orden de profundidad de los polígonos  / ejemplo 4 Prueba 1  Las ...
METODO DE CLASIFICACION DE PROFUNDIDAD Observación acerca de poligonos interpenetrantes Debido a que cuando existen polígo...
PARTICION BINARIA DE ESPACIO (BSP) Definición de  BSP :  B inary  S pace  P artition Ejemplo Partición jerárquica y recurs...
PARTICION BINARIA DE ESPACIO (BSP) Algoritmo del pintor a partir de  BSP Paso de preprocesamiento construir el  BSP  para ...
PARTICION BINARIA DE ESPACIO (BSP) Ejemplo 1 A BSP orden de dibujo para el punto de vista E B, D D E B B C A D E punto de ...
PARTICION BINARIA DE ESPACIO (BSP) Ejemplo 2 A BSP orden de dibujo para el punto de vista E B, D B E F B C A D E punto de ...
METODO DE ARBOLES OCTALES Idea Convertir el  octree  (estructura 3-D) al  quadtree  (estructura 2-D) correspondiente 6 3 2...
METODO DE ARBOLES OCTALES Procesamiento de un Octal  (ejemplo para el octal 0)  /  Caso 1 El  octal  oscurece al de  atrás...
METODO DE ARBOLES OCTALES Procesamiento de un Octal  (ejemplo para el octal 0)  /  Caso 2 El  octal  está vacío, no oscure...
METODO DE ARBOLES OCTALES Procesamiento de un Octal  (ejemplo para el octal 0)  /  Caso 3 El  octal  es más complejo: se d...
METODO DE ARBOLES OCTALES Algoritmo OcttoQuad ( oct ) //rutina recursiva que recibe un octree, y devuelve el quadtree  //c...
METODO DE SUBDIVISION DE AREAS Idea Concretamente se trata de subdividir el área total de vista hasta que cada área de pro...
METODO DE SUBDIVISION DE AREAS Pruebas para determinar si un área corresponde a un caso “simple” Primero se define, para l...
METODO DE SUBDIVISION DE AREAS Pruebas para determinar si un área corresponde a un caso “simple” Prueba 1 Todas  las super...
METODO DE SUBDIVISION DE AREAS Prueba 3 Paso 1  Se calcula el  Z mín  de la superficie  circundante  dentro del  área Paso...
Upcoming SlideShare
Loading in …5
×

9zBuffer

2,366 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,366
On SlideShare
0
From Embeds
0
Number of Embeds
727
Actions
Shares
0
Downloads
87
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

9zBuffer

  1. 1. INDICE 1. Introducción 2. Detección de Caras Posteriores 3. Emisión de Rayos (traza de Rayos) 4. Z-Buffer 5. Método de Línea de Rastreo 6. Método de Clasificación de Profundidad 7. BSP (Partición Binaria de Espacio) 8. Método de Arboles Octales 9. Método de Subdivisión de Areas
  2. 2. INTRODUCCIÓN Conceptos Rectángulos limítrofes Es el rectángulo envolvente “más pequeño” de un polígono. Se determina con los valores mínimos y máximo de todos los vértices que forman el polígono. Volúmenes acotantes (cajas acotantes): Es el volumen (caja) “más pequeño” que encierra un poliedro, se determina a partir de las coordenadas mínimas y máximas de todos los vértices que forman el poliedro. Una prueba minmax sirve para determinar trivialmente si dos polígonos se traslapan o no, los valores mínimo y máximo se obtienen de la proyección de los volumenes acotantes en el plano de proyección (el resultado son los rectángulos limítrofes ) simplemente al descartar las coordenas en z (una vez efectuadas todas las operaciones de la tubería de vista) Dos polígonos son no penentrantes si existe un plano que los separa sin cortarlos y son interpenetrantes en caso contrario.
  3. 3. INTRODUCCIÓN Clasificación de los Métodos / Prototipo de Algoritmos Precisión de Objeto (Objeto-Espacio) Se comparan los objetos entre sí y se eliminan entera o parcialmente dependiendo de que parte de ellos resulte visible. Algoritmo for ( cada objeto en el mundo ) { determinar partes del objeto cuya vista no sea obstruida por otras partes del mismo objeto o por otros objetos ; dibujar esas partes con el color apropiado; }
  4. 4. Clasificación de los Métodos / Prototipo de Algoritmos Precisión de Imagen (Imagen-Espacio) Se debe determinar cual de todos los objetos, o si ninguno (se tiene entonces el fondo), es visible en cada pixel de la imagen . Algoritmo for ( cada pixel en la imagen ) { determinar el objeto más cercano al observador que es atravesado por el proyector a través del pixel ; dibujar el pixel con el color apropiado; } INTRODUCCIÓN
  5. 5. DETECCION DE CARAS POSTERIORES Si la ecuación del plano es A x + B y + C z + D = 0 -> La cara es posterior <-> P  N  0 Si, además, los objetos están representados en coordenadas de vista y n = N / | N | = (0, 0, 1) -> La cara es posterior <-> P  n  0 o sea, C  0 Observe que este método solo sirve para conjuntos poliédricos (por la convexidad) Y V X V Z V N n P = (A, B, C)
  6. 6. EMISION DE RAYOS Idea centro del pixel punto de referencia de proyección
  7. 7. EMISION DE RAYOS Algoritmo for ( cada línea de rastreo en la imagen ) { for ( cada pixel en la línea de rastreo ) { determinar el rayo del centro de la proyección a través del pixel; for ( cada objeto en la escena ) { if ( se interseca el objeto y resulta como el más cercano ) registrar intersección y nombre del objeto ; } asignar el color del pixel igual al de la intersección del objeto más cercano; } }
  8. 8. EMISION DE RAYOS Cálculo de Intersecciones / Esfera Para cada punto (x,y,z) en el rayo que va de (x 0 ,y 0 ,z 0 ) ( centro de proyección ) a (x 1 ,y 1 ,z 1 ) ( centro del pixel ) se tienen las stes. ecns. paramétricas (en t ): (1) x = x 0 + t D x y = y 0 + t D y z = z 0 + t D z , 0  t  1, donde: D x = ( x 1 - x 0 ) D y = ( y 1 - y 0 ) D z = ( z 1 - z 0 ) La esfera de centro (a,b,c) y radio r se puede representar: (2) ( x - a ) 2 + ( y - b ) 2 + ( z - c ) 2 = r 2 , reemplazando (1) en (2) , simplificando y agrupando, obtenemos: ( D x 2 + D y 2 + D z 2 ) t 2 + 2 t [ D x ( x 0 - a )+ D y ( y 0 - b ) + D z ( z 0 - c )] + ( x 0 - a ) 2 + ( y 0 - b ) 2 + ( z 0 - c ) 2 - r 2 = 0 Resolviendo para t: 0 raices reales (el rayo no interseca la esfera ) 1 raiz real (el rayo roza la esfera en un punto) 2 raices reales (el rayo interseca la esfera / 2 puntos de intersección ) Es conveniente normalizar el rayo de modo que la distancia de (x 0 ,y 0 ,z 0 ) a (x 1 ,y 1 ,z 1 ) sea 1.
  9. 9. EMISION DE RAYOS Cálculo de Intersecciones / Polígono (1a. Parte) Ecuación del rayo con (x 0 ,y 0 ,z 0 ) ( centro de proyección ) (x 1 ,y 1 ,z 1 ) ( centro del pixel ) (1) x = x 0 + t D x y = y 0 + t D y z = z 0 + t D z , 0  t  1, donde: D x = ( x 1 - x 0 ) D y = ( y 1 - y 0 ) D z = ( z 1 - z 0 ) como la ecuación del plano es: (2) A x + B y + C z + D = 0, reemplazando (1) en (2) obtenemos que: t = - ( A x 0 + B y 0 + C z 0 + D ) / ( A D x + B D y + C D z ) Ahora se debe determinar si el punto de intersección está dentro del polígono
  10. 10. EMISION DE RAYOS Cálculo de Intersecciones / Polígono (2a. Parte) El problema se puede resolver en cualquier plano (específicamente en cualquier plano ortogonal) ¿Cómo se resuelve el problema en el plano? x y z
  11. 11. Z-Buffer Idea (Implementable: hardware/software) Memoria Gráfica (Memoria de Enfriamiento) Memoria de Profundidad (z-Buffer) x y z Valores de z R G B Para cada polígono:
  12. 12. Algoritmo Se iniciliza tanto el z-buffer como el buffer de enfriamiento así: z-buffer(x,y) = -   máx. profundidad  enfriamiento(x,y) = color del fondo for ( cada polígono ) { for ( posición en la superficie del polígono ) { se calcula el valor de z ; if ( z > z-buffer(x,y) ) { // menor profundidad z-buffer(x,y) = z ; enfriamiento(x,y) = color del objeto en (x,y) ; } } } Z-Buffer
  13. 13. Cálculos de profundidad (parte 1) Z-Buffer Paso 1: Se determina y máx y y mín , al comparar todos los vértices del polígono Paso 2: Se determina el valor de z , si la ecn. del plano es: A x + B y + C z + D = 0 -> z = (- A x - B y - D ) / C , para la posición (x,y) -> z nuevo = (- A ( x+1 ) - B y - D ) / C , para la posición (x+1, y) -> Para valores a lo largo de una línea de rastreo: z nuevo = z anterior - A / C Al trabajar sobre el plano de vista: x y z
  14. 14. z nuevo = z anterior + (( A / m ) + B ) / C , y z nuevo = z anterior + B / C (si la arista es vertical) Paso 3: El valor de x , a lo largo de una arsita izquierda, se determina recursivamente, así: x nuevo = x anterior - (1/ m ), donde m es la pendiente de la arista y x inicial es el correspondiente a y max -> Para valores a lo largo de una arista (para pasar a siguiente línea de rastreo): Z-Buffer Cálculos de profundidad (parte 2) Observe que este método solo sirve para conjuntos poliédricos (por la convexidad)
  15. 15. METODO DE LINEA DE RASTREO Repaso algoritmo para el rellenado de polígonos ET (Edge Table) 0 i Ymax. Xmin 1 / m X inter Ymax. 1 / m AET (Active Edge Table) A F E D C B
  16. 16. METODO DE LINEA DE RASTREO Estructuras de datos empleadas I G H A F E D C B info sombreado coef. ecn. plano bandera PT (Polygon Table) ET (Edge Table) Ymax. Xmin 1 / m id. polig. X inter Ymax. 1 / m AET (Active Edge Table) id. polig.
  17. 17. METODO DE LINEA DE RASTREO Algoritmo for ( cada línea de rastreo en la imagen ) { actualizar AET a partir de AET anterior (para las aristas que salen) y de ET (para las aristas que ingresan) for ( cada arista de AET ) { determinar si se trata de una arista izquierda o derecha y activar o desactivar la bandera del polígono correspondiente en PT ; for ( cada pixel en la línea de rastreo ) { if ( se existen más de dos polígonos activos ) { determinar el polígono menos profundo ( z ) de acuerdo a la línea de rastreo ( y ) y al pixel ( x ), empleando la ecn. del plano; } colorear el pixel de acuerdo al polígono menos profundo o al fondo; } } } Nota: si los polígonos no son interpenetrantes , las pruebas de profundidad se pueden realizar solo cada vez que el conjunto de polígonos activos cambie
  18. 18. METODO DE LINEA DE RASTREO Ejemplo 1 PT (Polygon Table) AET (Active Edge Table) I G H A F E D C B EF ED CD CB FALSE TRUE FALSE TRUE FALSE
  19. 19. METODO DE LINEA DE RASTREO Ejemplo 2 PT (Polygon Table) AET (Active Edge Table) I G H A F E D C B FA HI CB HG TRUE FALSE TRUE FALSE FALSE
  20. 20. METODO DE CLASIFICACION DE PROFUNDIDAD Algoritmo del Pintor Paso 1: Se “clasifican” las superficies en orden de profundidad decreciente Paso 2: Se convierten por rastreo las superficies en orden, iniciando con la de mayor proundidad Superficies sin traslapo X V Z V Z mín Z máx Z' máx Z' mín
  21. 21. METODO DE CLASIFICACION DE PROFUNDIDAD Determinación del orden de profundidad de los polígonos que se traslapan Superficies con traslapo Las pruebas se aplican en el orden presentado. Si alguna resulta verdadera entonces no es necesario intercambiar su orden. De lo contrario S oscurece a S' y es necesario intercambiar su orden. Prueba 1 Las superficies no se traslapan en la dirección de X , o , las superficies no se traslapan en la dirección de Y Prueba 2 La superficie S “está por completo detrás” de S' (la superficie que se sobrepone) Prueba 3 La superficie que se sobrepone ( S' ) “está por completo enfrente” de S Se clasifican todas las superficies de acuerdo a su coordenada Z mín . sean S y S' dos superficies tales que Z mín < Z' mín S S' X V Z V Z mín Z máx Z' máx Z' mín
  22. 22. METODO DE CLASIFICACION DE PROFUNDIDAD Determinación del orden de profundidad de los polígonos / ejemplo 1 Prueba 1 Prueba 2 Prueba 3 Prueba 1 Las superficies no se traslapan en la dirección de X , o , las superficies no se traslapan en la dirección de Y VERDADERA X V Z V S S' X mín X máx X' máx X' mín
  23. 23. METODO DE CLASIFICACION DE PROFUNDIDAD Determinación del orden de profundidad de los polígonos / ejemplo 2 Prueba 1 Las superficies no se traslapan en la dirección de X , o , las superficies no se traslapan en la dirección de Y Prueba 2 La superficie S “está por completo detrás” de S' (la superficie que se sobrepone) Prueba 1 Prueba 2 Prueba 3 FALSA VERDADERA X V Z V S S'
  24. 24. METODO DE CLASIFICACION DE PROFUNDIDAD Determinación del orden de profundidad de los polígonos / ejemplo 3 Prueba 1 Las superficies no se traslapan en la dirección de X , o , las superficies no se traslapan en la dirección de Y Prueba 2 La superficie S “está por completo detrás” de S' (la superficie que se sobrepone) Prueba 3 La superficie que se sobrepone ( S' ) “está por completo enfrente” de S Prueba 1 Prueba 2 Prueba 3 VERDADERA FALSA FALSA X V Z V S S'
  25. 25. METODO DE CLASIFICACION DE PROFUNDIDAD Determinación del orden de profundidad de los polígonos / ejemplo 4 Prueba 1 Las superficies no se traslapan en la dirección de X , o , las superficies no se traslapan en la dirección de Y Prueba 2 La superficie S “está por completo detrás” de S' (la superficie que se sobrepone) Prueba 3 La superficie que se sobrepone ( S' ) “está por completo enfrente” de S Prueba 1 Prueba 2 Prueba 3 FALSA FALSA FALSA X V Z V S S'
  26. 26. METODO DE CLASIFICACION DE PROFUNDIDAD Observación acerca de poligonos interpenetrantes Debido a que cuando existen polígonos interpenetrantes el algoritmo puede desembocar en un loop infinito , se debe efectuar un preprocesamiento en el que al subdividir los polígonos se evite que sean interpenetrantes
  27. 27. PARTICION BINARIA DE ESPACIO (BSP) Definición de BSP : B inary S pace P artition Ejemplo Partición jerárquica y recursiva del espacio n-dimensional en subespacios convexos. En su construcción tomamos un subespacio y lo particionamos con cualquier hiperplano que lo interseque en su interior . El resultado son 2 nuevos subespacios que pueden ser particionados por la aplicación recursiva de este método. x BSP x C B y D E B y C D E
  28. 28. PARTICION BINARIA DE ESPACIO (BSP) Algoritmo del pintor a partir de BSP Paso de preprocesamiento construir el BSP para la escena al tomar en cada avance como hiperplano cualquiera de los polígonos presentes ( iniciando por cualquiera), subdividiendo aquellos polígonos que sean cortados por el hiperplano (de modo que cada parte quede en el subespacio correspondiente), hasta que a cada rama no corresponda más de un polígono Paso General (Dibujo de la escena determinando las superficies visibles) draw (árbol){ draw (del subárbol más lejano al punto de vista ); dibuje el polígono en el nodo ; draw (del subárbol más cercano); } Observe que en el paso de preprocesamiento se están eliminando los polígonos interpenetrantes
  29. 29. PARTICION BINARIA DE ESPACIO (BSP) Ejemplo 1 A BSP orden de dibujo para el punto de vista E B, D D E B B C A D E punto de vista A D B
  30. 30. PARTICION BINARIA DE ESPACIO (BSP) Ejemplo 2 A BSP orden de dibujo para el punto de vista E B, D B E F B C A D E punto de vista A F B F G G G
  31. 31. METODO DE ARBOLES OCTALES Idea Convertir el octree (estructura 3-D) al quadtree (estructura 2-D) correspondiente 6 3 2 1 5 7 4 0 2 0 3 1 octrees quadtrees celda octree (quadtree) color Z V 0 1 2 3 4 5 6 7 atrás
  32. 32. METODO DE ARBOLES OCTALES Procesamiento de un Octal (ejemplo para el octal 0) / Caso 1 El octal oscurece al de atrás : solo se debe procesar el octal en cuestión Z V
  33. 33. METODO DE ARBOLES OCTALES Procesamiento de un Octal (ejemplo para el octal 0) / Caso 2 El octal está vacío, no oscurece al de atrás : solo se debe procesar el octal de atrás Z V
  34. 34. METODO DE ARBOLES OCTALES Procesamiento de un Octal (ejemplo para el octal 0) / Caso 3 El octal es más complejo: se debe procesar el octal en cuestión y el de atrás Z V
  35. 35. METODO DE ARBOLES OCTALES Algoritmo OcttoQuad ( oct ) //rutina recursiva que recibe un octree, y devuelve el quadtree //correspondiente { quad = new (quadtree) for ( k = 0 to 3) { case 1: quad ( k ). color = oct ( k ). color ; //el octal en cuestión oscurece al de atrás case 2: OcttoQuad ( oct ( k+4 ). child ) ; //el octal en cuestión no oscurece al de atrás case 3: OcttoQuad ( oct ( k ). child ) ; //el octal es más complejo OcttoQuad ( oct ( k+4 ). child ) ; //se procesan ambos octales } return quad ; }
  36. 36. METODO DE SUBDIVISION DE AREAS Idea Concretamente se trata de subdividir el área total de vista hasta que cada área de proyección pueda ser coloreada fácilmente , esto es, que cada área corresponda a la proyección de una superficie individual , o a ninguna en absoluto, o corresponda a un pixel individual Aplica la estrategia divide y vencerás : se trata de subdividir un problema grande en varios problemas pequeños más sencillos para los que se conoce una solución fácil y eficiente
  37. 37. METODO DE SUBDIVISION DE AREAS Pruebas para determinar si un área corresponde a un caso “simple” Primero se define, para las superficies que acupan un área , respecto de esta: superficie circundante superficie sobrepuesta superficie interior superficie exterior
  38. 38. METODO DE SUBDIVISION DE AREAS Pruebas para determinar si un área corresponde a un caso “simple” Prueba 1 Todas las superficies son superficies exteriores respecto del área Prueba 2 Solo una superficie interior , sobrepuesta o circundante se encuentra en el área Prueba 3 Existe una superficie circundante que oscurece a todas las demás en el área Las pruebas 1 y 2 se pueden aplicar sencillamente, a partir de los rectángulos limítrofes de las superficies , al compararlos respecto de las fronteras del área
  39. 39. METODO DE SUBDIVISION DE AREAS Prueba 3 Paso 1 Se calcula el Z mín de la superficie circundante dentro del área Paso 2 Se calcula el Z máx para el resto de superficies dentro del área Si Z mín > Z máx (para todas las superficies dentro del área entonces la prueba 3 es verdadera ( condición suficiente, más no necesaria ) X V Z V área Z mín Z máx Z máx

×