Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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
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
4 4
3 3
2 2
1 1
0 0
0 1 2 3 4 5 6 0 1 2 3 4 5 6
Solución correcta
Algoritmo DDA (Digital
Diferential Analyzer)
dx = xb - xa xIncrement = dx / steps
dy = yb - ya yIncrement = dy / steps
x = xa
Call Plot(x, y)
y = ya
1/2
• Se basa en:
– incrementar en el sentido mayor 0
e = 2 * dy - dx
Do While (x < xEnd)
x = x + 1
If (xa > xb) Then If (e > 0) Then
x = xb y = y + 1
y = yb
e = e - 2 * dx
xEnd = xa
Else End If
x = xa e = e + 2 * dy
y = ya Call Plot(x, y)
xEnd = xb
Loop
End If
Representación de polígonos
• Se procesa cada línea (scan line)
• Se rellena entre el inicio y final de cada
arista
10
9 4
8
3
7
6 2
5 1
4
0
3
2 0 1 2 3 4 5 6
1
0 Para el polígono sólo
0 1 2 3 4 5 6 7 8 9 10 son necesarios los pixels rojos
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 4
3
x = xa 2
increment = dx / dy 1
0
For y = ya To yb
0 1 2 3 4 5 6
Call Plot(x, y)
x = x + increment
Next y
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
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
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)
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
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
Creación de escenas
• Esquema (storyboard)
• Modelos de los objetos
• Posición
• Rendering inicial
• Modificaciones
• Rendering final
http://www.pixar.com/howwedoit/index.htm