Upload
iago-maza
View
214
Download
0
Embed Size (px)
Citation preview
HS/HL Removal 1
FUNDAMENTOS DE ELIMINACIÓN DE
SUPERFICIES OCULTAS
Graficación FCC
HS/HL Removal 2
HL / HSAlgorithms
Hybrid ObjectSpace
ImageSpace
HiddenLine
Hidden Surface
Taxonomy of Algorithms
HS/HL Removal 3
ALGORITMOS DE ESTUDIO
El método de la normal al plano
El Algoritmo del Pintor
El algoritmo de Z-Buffer
El algoritmo Árboles de Partición del Espacio Binario (BSP Trees) (Tarea 5: investigar)
HS/HL Removal 4
1. Introducción¿Por qué eliminar HL/HS ?
¿Cuál ?
HS/HL Removal 5
Introducción
Para producir una visión realista de un cuerpo hemos de determinar qué curvas y superficies pueden ser observadas desde un punto de vista dado y cuáles no. El problema general que consiste en hacer que los objetos se vuelvan opacos en el mundo de los gráficos tridimensionales se denomina eliminación de las superficies ocultas o eliminación de líneas ocultas, puesto que implica eliminar aquellas superficies o líneas del dibujo que habitualmente permanecerían ocultas.A continuación ser verán algunos algoritmos que se dedican al tratamiento de dicho problema.
HS/HL Removal 6
El Método de la normal al plano (Back-Face Culling)
0 dczbyax
01,,,
d
c
b
a
zyx
0 dczbyax
),,( cba
back-face
normal pointing inside
HS/HL Removal 7
),Int()ˆ,ˆ,ˆ( Vzyx
0ˆˆˆ dzcybxa
01,ˆ,ˆ,ˆ
d
c
b
a
zyx
0
0
0 dczbyax
),,( cba
Inside a polygon V
Assuming, i.e.,
Furthermore,boundaryoutside
Back-Face Culling (Cont’)
HS/HL Removal 8
Back-Face Culling (Cont’)
Summary
Calculate a surface normal, N = (A,B,C).
N = ( P2 - P1 ) x ( P3 - P2 )
Compute D in plane equation by substituting any polygon vertex into the plane equation.
Plane(P) = Ax + By + Cz + D = 0
Calculate Plane(eyept) to determine if eye is above or below.
This corresponds to checking the sign of D.
HS/HL Removal 9
Back-face culling (Another way)
Take a vector V from the eye to any point within the polygon (for example, from the eye to a vertex)
Let A be the normal of the polygon
Then, compute V*A.
If it is positive then do not display.
If it is negative, the face is facing the camera and might be seen.
The back-face culling can be determined easily with dot product.
HS/HL Removal 10
In other words.
1. V=(x1-ex, y1-ey, z1-ez)
2. A= ( P2 - P1 ) x ( P3 - P2 )
3. Calculate V · A
If V · A > 0 then display
If V · A < 0 then not display
HS/HL Removal 11
ALGORITMO DEL PINTOR
Se procede a dibujar todos los polígonos que aparecen en la escena de atrás hacia adelante, de manera que los polígonos situados en primer plano se dibujan sobre los polígonos situados en el fondo. De esta manera, los polígonos más cercanos obstaculizan la visión de los polígonos más lejanos.
Los objetos que aparecen en primer plano (en este caso, las personas, pintados sobre los objetos del fondo)
HS/HL Removal 12
ALGORITMO DEL PINTOR:Problema del solapamiento mutuo
La clasificación se realiza sobre la coordenada z máxima de cada polígono.
Existe una situación en la cual el algoritmo del pintor no es capaz de realizar una clasificación correcta de los polígonos que se pretenden dibujar.
Se trata del denominado solapamiento mutuo que tiene lugar cuando tres o más polígonos se solapan entre sí de manera circular.
Si dichos polígonos fuesen clasificados mediante el algoritmo del pintor, no habría un orden correcto en el cual clasificarlos. La única solución totalmente satisfactoria consistiría en dividir cada uno de los polígonos en dos.
HS/HL Removal 13
6. Depth Sorting Algorithm(List Priority Algorithms)
C
B
A
y
x
z
CBA
z
x
sorting
painting
Painter’s Algorithm !!!
(A,B,C)
HS/HL Removal 14
Depth comparison
minz
maxz
A
B
Z
XY-plane
min(z-coord of A)> max(z-coord of B) A behind B min(z-coord of B)> max(z-coord of A) B behind A
HS/HL Removal 15
Establishing Depth Order
List: lists those triangles that are in front of itCounter: how many triangle are behind itTriangle: list of object triangles
triangle counter list1 0 3 5 22 33 2 2 5 64 0 3 55 4 26 1 5
HS/HL Removal 16
EL ALGORITMO Z-BUFFER I
El único sistema realmente exhaustivo para llevar a cabo una clasificación de profundidades implicaría determinar la profundidad de cada punto sobre la superficie de cada polígono en la pantalla y proceder a dibujar sólo los puntos que estén más cercanos con respecto al espectador. Afortunadamente, sólo es preciso clasificar aquellos puntos que van a ser dibujados, es decir, aquellos que corresponden a los pixels situados en el puerto de visualización. El algoritmo Z-buffer determina qué puntos situados sobre determinados polígonos están más cerca del espectador para cada píxel en el puerto de visualización.En cada posición del píxel x,y sobre el plano de visión, la superficie con la menor coordenada z en esa posición es visible.
HS/HL Removal 17
EL ALGORITMO Z-BUFFER II
Cada vez que un punto de la superficie de un polígono se dibuje, la coordenada z del punto es comparada con el valor actual de dicha posición en el buffer.Si la coordenada z en el buffer es menor que la del nuevo punto, el nuevo píxel no se dibuja, ya que dicho punto estaría más lejos que el punto anterior y formaría parte de una superficie oculta, en caso contrario el nuevo píxel se dibuja sobre la anterior y la coordenada z del nuevo píxel se coloca, reemplazando al anterior.
HS/HL Removal 18
5. Depth-Buffer Algorithms
),( yx
(z-buffer algorithms)
Frame buffer intensity
Depth buffer depth
zx
y
HS/HL Removal 19
HS/HL Removal 20
Summary of Z-buffer algorithm:
for all i,j { Depth[i,j] = MAX_DEPTH Image[i,j] = BACKGROUND_COLOUR}for all polygons P { for all pixels in P { if (Z_pixel < Depth[i,j]) { Image[i,j] = C_pixel Depth[i,j] = Z_pixel } }}