Método Z-Buffer o Depth-Buffer

Al ver una imagen que contiene superficies y objetos no transparentes, no es posible ver aquellos objetos que están detrás de los objetos más cercanos al ojo. Para obtener una imagen de pantalla realista, es imprescindible eliminar estas superficies ocultas. La identificación y eliminación de estas superficies se conoce como el problema de la superficie oculta.

El búfer Z, también conocido como el método de búfer de profundidad, es uno de los métodos comúnmente utilizados para la detección de superficies ocultas. Es un método de espacio de imagen . Los métodos de espacio de imagen se basan en el píxel que se dibujará en 2D. Para estos métodos, la complejidad del tiempo de ejecución es el número de píxeles multiplicado por el número de objetos. Y la complejidad del espacio es dos veces el número de píxeles porque se requieren dos conjuntos de píxeles, uno para el búfer de fotogramas y otro para el búfer de profundidad.

El método Z-buffer compara las profundidades de la superficie en cada posición de píxel en el plano de proyección. Normalmente, el eje z se representa como la profundidad. El algoritmo para el método Z-buffer se proporciona a continuación:

Algoritmo:

First of all, initialize the depth of each pixel.
i.e,  d(i, j) = infinite (max length)
Initialize the color value for each pixel 
as c(i, j) = background color
for each polygon, do the following steps :

for (each pixel in polygon's projection)
{
    find depth i.e, z of polygon
    at (x, y) corresponding to pixel (i, j)
    
    if (z < d(i, j))
    {
        d(i, j) = z;
        c(i, j) = color;
    }
}

Consideremos un ejemplo para comprender mejor el algoritmo. Suponga que el polígono dado es el siguiente:

Para empezar, suponga que la profundidad de cada píxel es infinita.

Como el valor z, es decir, el valor de profundidad en cada lugar del polígono dado es 3, al aplicar el algoritmo, el resultado es:

Ahora, cambiemos los valores z. En la figura que se muestra a continuación, los valores de z van de 0 a 3.

Al principio, la profundidad de cada píxel será infinita como:

Ahora, los valores z generados en el píxel serán diferentes, como se muestra a continuación:

Por lo tanto, en el método del búfer Z, cada superficie se procesa por separado una posición a la vez en toda la superficie. Después de eso, los valores de profundidad, es decir, los valores z para un píxel, se comparan y la superficie más cercana, es decir (z más pequeña), determina el color que se mostrará en el búfer de cuadro. Los valores z, es decir, los valores de profundidad, normalmente se normalizan en el rango [0, 1]. Cuando z = 0, se conoce como Panel de recorte posterior y cuando z = 1, se denomina Panel de recorte frontal .

En este método, se utilizan 2 tampones:

  1. Búfer de fotogramas
  2. Búfer de profundidad

Cálculo de la profundidad:
Como sabemos que la ecuación del plano es:

ax + by + cz + d = 0, this implies 

z = -(ax + by + d)/c, c!=0

El cálculo de cada profundidad puede ser muy costoso, pero el cálculo se puede reducir a una sola adición por píxel utilizando un método de incremento como se muestra en la figura a continuación:

Denotemos la profundidad en el punto A como Z y en el punto B como Z’. Por lo tanto :

AX + BY + CZ + D = 0 implies

Z = (-AX - BY - D)/C  ------------(1)

Similarly, Z' = (-A(X + 1) - BY -D)/C   ----------(2)

Hence from (1) and (2), we conclude :

Z' = Z - A/C  ------------(3)

Por lo tanto, el cálculo de la profundidad se puede realizar registrando la ecuación plana de cada polígono en el sistema de coordenadas de visualización (normalizado) y luego usando el método incremental para encontrar la profundidad Z.
Entonces, para resumir, se puede decir que este enfoque compara la superficie profundidades en cada posición de píxel en el plano de proyección. La profundidad del objeto generalmente se mide desde el plano de vista a lo largo del eje z de un sistema de visualización.
Ejemplo :

Sean S1, S2, S3 las superficies. La superficie más cercana al plano de proyección se llama superficie visible. La computadora comenzaría (arbitrariamente) con la superficie 1 y pondría su valor en el búfer. Haría lo mismo para la siguiente superficie. Luego verificaría cada píxel superpuesto y verificaría cuál está más cerca del espectador y luego mostraría el color apropiado. Como en la posición del plano de vista (x, y), la superficie S1 tiene la menor profundidad desde el plano de vista, por lo que es visible en esa posición.

Puntos para recordar:
1) El método de búfer Z no requiere una clasificación previa de los polígonos.
2) Este método se puede ejecutar rápidamente incluso con muchos polígonos.
3) Esto se puede implementar en hardware para superar el problema de la velocidad.
4) No se requiere comparación de objeto a objeto.
5) Este método se puede aplicar a objetos no poligonales.
6) La implementación de hardware de este algoritmo está disponible en algunas estaciones de trabajo de gráficos.
7) El método es simple de usar y no requiere una estructura de datos adicional.
8) El valor z de un polígono se puede calcular de forma incremental.
9)No se puede aplicar sobre superficies transparentes, es decir, sólo trata sobre superficies opacas. Por ejemplo:

10) Si solo se renderizarán unos pocos objetos en la escena, entonces este método es menos atractivo debido al búfer adicional y la sobrecarga involucrada en la actualización del búfer.
11) Puede ocurrir una pérdida de tiempo debido al dibujo de objetos ocultos.

Publicación traducida automáticamente

Artículo escrito por Sahil_Bansall y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *