La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Rendering.

Presentaciones similares


Presentación del tema: "Rendering."— Transcripción de la presentación:

1 Rendering

2 Contenido Objetivo Representación de líneas
Algoritmo DDA Algoritmo de Bresenham Representación de polígonos Rellenado de polígonos Eliminación de superficies ocultas

3 Representación (Rasterization)
Se dispone de: Topología de la escena Coordenadas de los vértices proyectados Intensidades en los vértices o en cada punto Coordenada z de los vértices Se desea obtener: Color en cada pixel

4 Representación de una línea
Dadas las coordenadas de dos vértices Determinar los pixels que deben marcarse Produce efectos incorrectos marcar todos los pixels por los que pasa Solución correcta

5 Algoritmo DDA (Digital Diferential Analyzer)
dx = xb - xa dy = yb - ya x = xa y = ya If (Abs(dx) > Abs(dy)) Then steps = Abs(dx) Else steps = Abs(dy) End If xIncrement = dx / steps yIncrement = dy / steps Call Plot(x, y) For k = 0 To steps - 1 x = x + xIncrement y = y + yIncrement Next k

6 Algoritmo de Bresenham
DDA trabaja con números reales El algoritmo de Bresenham se desarrolló para plotters digitales Se basa en: incrementar en el sentido mayor la otra coordenada se incrementa 0 o 1 Se controla por el error entre la línea y el orígen del píxel más cercano 1/2 1

7 Algoritmo de Bresenham
El error se incrementa con el valor de la pendiente: e = e + dy/dx Cuando el error es superior a 1/2: se incrementa y se resta 1 al error Se comienza con e = -1/2 se controla e > 0

8 Algoritmo de Bresenham
Operaciones con e: Inicio: e = dy/dx - 1/2 Incremento: e = e + dy/dx Control: if (e>0) then e = e -1, x = x + 1 x e y son enteros e es real Para trabajar con enteros, se multiplica el error por 2 • dx

9 Algoritmo de Bresenham
dx = Abs(xa - xb) dy = Abs(ya - yb) e = 2 * dy - dx If (xa > xb) Then x = xb y = yb xEnd = xa Else x = xa y = ya xEnd = xb End If Call Plot(x, y) Do While (x < xEnd) x = x + 1 If (e > 0) Then y = y + 1 e = e - 2 * dx End If e = e + 2 * dy Loop

10 Representación de polígonos
Se procesa cada línea (scan line) Se rellena entre el inicio y final de cada arista Para el polígono sólo son necesarios los pixels rojos

11 Representación de aristas de polígonos
Se necesita un pixel por línea horizontal (scan line) Se basan en modificaciones de los algoritmos DDA o de Bresenham, ejemplo con DDA: dx = xb - xa dy = yb - ya x = xa increment = dx / dy For y = ya To yb Call Plot(x, y) x = x + increment Next y

12 Rellenado entre aristas
En cada línea hay un número par de aristas En polígonos convexos son siempre 2 Se realiza el sombreado y la coordenada z El modo de representación se puede realizar scan line polígono por polígono

13 Scan Line Se genera la imagen línea a línea Para cada línea
lista de aristas en la línea (añadir y eliminar) en cada pixel, obtener valores de los polígonos en el pixel a partir de sus aristas (incrementalmente) representar el pixel del polígono más cercano

14 Polígono por polígono Se genera la imagen polígono por polígono
Para cada polígono Para cada línea entre ymax e ymin del polígono obtener lista de aristas en la línea representar los pixels entre estas aristas si no hay representado otro polígono más cercano (se almacena también el valor de z)

15 Eliminación de superficies ocultas
Han existido históricamente distintos métodos Se puede comentar el algoritmo del pintor El utilizado habitualmente es el Z-buffer es el único posible en representación polígono por polígono implementado en hardware

16 Z buffer Una matriz con los valores de z en cada pixel
Permite representar los polígonos de forma independiente Al representar un polígono, se comparan sus pixels con los almacenados y si son visibles se representan y substituyen el valor de z

17 Creación de escenas Esquema (storyboard) Modelos de los objetos
Posición Rendering inicial Modificaciones Rendering final

18

19


Descargar ppt "Rendering."

Presentaciones similares


Anuncios Google