Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código...
Transcript of Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código...
![Page 1: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/1.jpg)
Introdução à Computação Gráfica
Visibilidade e Recorte
Adaptação: João Paulo Pereira
António Costa
Autoria: Claudio Esperança
Paulo Roma Cavalcanti
![Page 2: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/2.jpg)
05/06/2007 2
O Problema de Visibilidade
• Numa cena tridimensional, normalmente não é possível ver todas as superfícies de todos os objectos
• Não queremos que objectos ou partes de objectos não visíveis apareçam na imagem
• Problema importante que tem diversas ramificações Descartar objectos que não podem ser vistos (culling) Recortar objectos de forma a manter apenas as partes
que podem ser vistas (clipping) Desenhar apenas partes visíveis dos objectos
• Em malha de arame (hidden-line algorithms)• Em superfícies (hidden-surface algorithms)
Sombras (visibilidade a partir de fontes luminosas)
![Page 3: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/3.jpg)
05/06/2007 3
Espaço do Objecto x Espaço da
Imagem
• Métodos que trabalham no espaço do objecto Entrada e saída são dados geométricos Independente da resolução da imagem Menos vulnerabilidade a aliasing Rasterização ocorre depois Exemplos:
• Maioria dos algoritmos de recorte e culling– Recorte de segmentos de rectas – Recorte de polígonos
• Algoritmos de visibilidade que utilizam recorte– Algoritmo do pintor– BSP-trees– Algoritmo de recorte sucessivo– Volumes de sombra
![Page 4: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/4.jpg)
05/06/2007 4
Espaço do Objecto x Espaço da
Imagem
• Métodos que trabalham no espaço da imagem
Entrada é vectorial e saída é matricial
Dependente da resolução da imagem
Visibilidade determinada apenas em pontos (pixels)
Podem aproveitar aceleração por hardware
Exemplos:• Z-buffer
• Algoritmo de Warnock
• Mapas de sombra
![Page 5: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/5.jpg)
05/06/2007 5
Recorte (Clipping)
• Problema definido por
Geometria a ser recortada• Pontos, rectas, planos, curvas, superfícies
Restrições de recorte• Janela (2D)
• Volume de visibilidade– Frustum (tronco de pirâmide)
– Paralelipípedo
• Polígonos– Convexos
– Genéricos (côncavos, com buracos, etc)
• Resultado depende da geometria
Pontos: valor booleano (visível / não visível)
Rectas: segmento de recta ou colecção de segmentos de recta
Planos: polígono ou colecção de polígonos
![Page 6: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/6.jpg)
05/06/2007 6
Recorte de Segmento de Recta x
Rectângulo
• Problema clássico 2D
• Entrada:
Segmento de recta P1 - P2
Janela alinhada com eixos (xmin, ymin) - (xmax, ymax)
• Saída: Segmento recortado (possivelmente nulo)
• Variantes
Cohen-Sutherland
Liang-Barksy / Cyrus-Beck
Nicholl-Lee-Nicholl
![Page 7: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/7.jpg)
05/06/2007 7
Cohen-Sutherland
• Vértices do segmento são classificados com relação a cada semi-espaço plano que delimita a janela
x ≥ xmin e x ≤ xmax e y ≥ ymin e y ≤ ymax
• Se ambos os vértices classificados como fora, descartar o segmento (totalmente invisível)
• Se ambos classificados como dentro, testar o próximo semi-espaço
• Se um vértice dentro e outro fora, computar o ponto de intersecção Q e continuar o algoritmo com o segmento recortado (P1-Q ou P2-Q)
![Page 8: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/8.jpg)
05/06/2007 8
Cohen-Sutherland
xmin xmax
ymax
ymin
![Page 9: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/9.jpg)
05/06/2007 9
Cohen-Sutherland
xmin xmax
ymax
ymin
![Page 10: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/10.jpg)
05/06/2007 10
Cohen-Sutherland
xmin xmax
ymax
ymin
![Page 11: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/11.jpg)
05/06/2007 11
Cohen-Sutherland
xmin xmax
ymax
ymin
![Page 12: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/12.jpg)
05/06/2007 12
Cohen-Sutherland
xmin xmax
ymax
ymin
![Page 13: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/13.jpg)
05/06/2007 13
Cohen-Sutherland - Detalhes
• Recorte só é necessário se um vértice dentro e outro fora
• Classificação de cada vértice pode ser codificada em 4 bits, um para cada semi-espaço Dentro = 0 e Fora = 1
• Rejeição trivial: Classif(P1) & Classif(P2) ≠ 0
• Aceitação trivial: Classif(P1) | Classif(P2) = 0
• Intersecção com quais semi-espaços? Classif(P1) ^ Classif(P2)
1 2
3
4
0010
0101
![Page 14: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/14.jpg)
05/06/2007 14
Algoritmo de Liang-Barsky
• Refinamento que consiste em representar a recta na forma paramétrica
• É mais eficiente visto que não é preciso computar pontos de intersecção irrelevantes
• Porção da recta não recortada deve satisfazer
12max1min
12max1min
y Δ
xΔ
yyyytyy
xxxxtxx
![Page 15: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/15.jpg)
05/06/2007 15
Algoritmo de Liang-Barsky
• Linha infinita intercepta semi-espaços planos para os seguintes valores do parâmetro t:
k
kk
p
qt p1 x q1 x1 x min
p2 x q2 x max x1
p3 y q3 y1 ymin
p4 y q4 ymax y1
onde
![Page 16: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/16.jpg)
05/06/2007 16
Algoritmo de Liang-Barsky
• Se pk < 0, à medida que t aumenta, recta entra no semi-espaço plano
• Se pk > 0, à medida que t aumenta, recta saido semi-espaço plano
• Se pk = 0, recta é paralela ao semi-espaço plano (recorte é trivial)
• Se existe um segmento da recta dentro do retângulo, classificação dos pontos de intersecção deve ser entra, entra, sai, sai
![Page 17: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/17.jpg)
05/06/2007 17
Algoritmo de Liang-Barsky
Entra Entra
Entra
EntraSai
Sai SaiSai
![Page 18: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/18.jpg)
05/06/2007 18
Liang-Barsky – Pseudo-código
• Computar valores de t para os pontos de intersecção
• Classificar pontos em entra ou sai• Vértices do segmento recortado devem
corresponder a dois valores de t: tmin= max (0, t’s do tipo entra) tmax= min (1, t’s do tipo sai)
• Se tmin<tmax , segmento recortado é não nulo Computar vértices substituindo os valores de t
• Na verdade, o algoritmo calcula e classifica valores de t um a um Rejeição precoce
• Ponto é do tipo entra mas t > 1• Ponto é do tipo sai mas t < 0
![Page 19: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/19.jpg)
05/06/2007 19
Recorte de Polígono contra
Rectângulo
• Inclui o problema de recorte de segmentos de recta
Polígono resultante tem vértices que são• Vértices da janela,
• Vértices do polígono original, ou
• Pontos de intersecção aresta do polígono/aresta da janela
• Dois algoritmos clássicos
Sutherland-Hodgman• Figura de recorte pode ser qualquer polígono convexo
Weiler-Atherton• Figura de recorte pode ser qualquer polígono
![Page 20: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/20.jpg)
05/06/2007 20
Recorte de Polígono contra
Retângulo
• Casos Simples
• Casos Complicados
![Page 21: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/21.jpg)
05/06/2007 21
Algoritmo de Sutherland-
Hodgman
• Ideia é semelhante à do algoritmo de Sutherland-Cohen
Recortar o polígono sucessivamente contra todos os semi-espaços planos da figura de recorte
![Page 22: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/22.jpg)
05/06/2007 22
• Polígono é dado como uma lista circular de vértices
• Vértices e arestas são processados em sequência e classificados contra o semi-espaço plano corrente
Vértice:• Dentro: copiar para a saída
• Fora: ignorar
Aresta• Intercepta semi-espaço plano (vértice anterior e posterior têm
classificações diferentes) : Copiar ponto de intersecção para a saída
• Não intercepta: ignorar
Algoritmo de Sutherland-
Hodgman
![Page 23: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/23.jpg)
05/06/2007 23
Algoritmo de Sutherland-
Hodgman
Fora
s
p
Copiar p
Dentro Fora
sp
Copiar i
Dentro Fora
s
p
Ignorar
Dentro Fora
sp
Copiar i,p
i
i
![Page 24: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/24.jpg)
05/06/2007 24
Sutherland-Hodgman – Exemplo
![Page 25: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/25.jpg)
05/06/2007 25
Sutherland-Hodgman – Exemplo
![Page 26: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/26.jpg)
05/06/2007 26
Sutherland-Hodgman – Exemplo
![Page 27: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/27.jpg)
05/06/2007 27
Sutherland Hodgman –
Eliminando Arestas Fantasmas
• Distinguir os pontos de intersecção gerados
De dentro para fora: rotular como do tipo
De fora para dentro: rotular como do tipo β
• Iniciar o percurso de algum vértice “fora”
• Ao encontrar um ponto de intersecção , ligar com o último β visto
• Resultado pode ter mais de uma componente conexa
ForaDentro
β
![Page 28: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/28.jpg)
05/06/2007 28
Sutherland Hodgman –
Eliminando Arestas Fantasmas –
Exemplo
![Page 29: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/29.jpg)
05/06/2007 29
Sutherland Hodgman –
Eliminando Arestas Fantasmas –
Exemplo
![Page 30: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/30.jpg)
05/06/2007 30
Sutherland Hodgman –
Eliminando Arestas Fantasmas –
Exemplo
![Page 31: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/31.jpg)
05/06/2007 31
Sutherland-Hodgman - Resumo
• Facilmente generalizável para 3D
• Pode ser adaptado para implementação em hardware Cada vértice gerado pode ser passado pelo
pipeline para o recorte contra o próximosemi-espaço plano
• Pode gerar arestas “fantasma” Irrelevante para fins de desenho
Podem ser eliminadas com um pouco mais de trabalho
![Page 32: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/32.jpg)
05/06/2007 32
Algoritmo de Weiler-Atherton
• Recorta qualquer polígono contra qualquer outro polígono
• Pode ser usado para computar operações de conjunto com polígonos
União, Intersecção, Diferença
• Mais complexo que o algoritmo de Sutherland-Hodgman
• Idéia:
Cada polígono divide o espaço em 3 conjuntos• Dentro, fora, borda
Borda de cada polígono é “duplicada”• Uma circulação corresponde ao lado de dentro e outra ao lado de
fora
Nos pontos de intersecção, é preciso “costurar” as 4 circulações de forma coerente
![Page 33: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/33.jpg)
05/06/2007 33
Algoritmo de Weiler-Atherton
Interior do polígono à esquerda da seta
(circulação anti-horária)
A
B
![Page 34: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/34.jpg)
05/06/2007 34
Algoritmo de Weiler-Atherton
Exterior do polígono à direita da seta
(circulação horária)
A
B
![Page 35: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/35.jpg)
05/06/2007 35
Algoritmo de Weiler-Atherton
Pontos de intersecção são calculados
A
B
![Page 36: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/36.jpg)
05/06/2007 36
Algoritmo de Weiler-Atherton
Circulações são costuradas
![Page 37: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/37.jpg)
05/06/2007 37
Algoritmo de Weiler-Atherton
Circulações são classificadas
– (AB)
B–A
A–B
AB
A
B
![Page 38: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/38.jpg)
05/06/2007 38
Algoritmos de Visibilidade
• Visibilidade é um problema complexo que não tem uma solução “óptima”
O que é óptima?• Pintar apenas as superfícies visíveis?
• Pintar a cena em tempo mínimo?
Coerência no tempo?• Cena muda?
• Objectos movem-se?
Qualidade é importante?• Antialiasing
Aceleração por Hardware?
![Page 39: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/39.jpg)
05/06/2007 39
Complexidade do Problema
• Factores que influenciam o problemaNúmero de pixels
• Em geral procura-se minimizar o número total de pixels pintados
• Resolução da imagem / depth buffer
• Menos importante se rasterização é feita por hardware
Número de objectos• Técnicas de “culling”
• Células e portais
• Recorte pode aumentar o número de objectos
![Page 40: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/40.jpg)
05/06/2007 40
Backface Culling
• Hipótese: cena é composta de objectos poliédricos fechados• Podemos reduzir o número de faces aproximadamente a metade
Faces de trás não precisam ser pintadas• Como determinar se a face é de trás?
N· E > O → Face da frente N· E < O → Face de trás
• OpenGL glEnable (GL_CULLING);
E
![Page 41: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/41.jpg)
05/06/2007 41
Z-Buffer
• Método que opera no espaço da imagem
• Manter para cada pixel um valor de profundidade(z-buffer ou depth buffer)
• Início da renderização
Buffer de cor = cor de fundo
z-buffer = profundidade máxima
• Durante a rasterização de cada polígono, cada pixel passa por um teste de profundidade
Se a profundidade do pixel for menor que a registrada no z-buffer
• Pintar o pixel (atualizar o buffer de cor)
• Actualizar o buffer de profundidade
Caso contrário, ignorar
![Page 42: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/42.jpg)
05/06/2007 42
Z-Buffer
• OpenGL:
Habilitar o z-buffer:glEnable (GL_DEPTH_TEST);
Não esquecer de alocar o z-buffer → GLUT• Número de bits por pixel depende de implementação /
disponibilidade de memória
Ao gerar um novo quadro, limpar também o z-buffer:glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
Ordem imposta pelo teste de profundidade pode ser alterada
glDepthFunc(…)
![Page 43: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/43.jpg)
05/06/2007 43
Z-Buffer
• Vantagens:
Simples e comunmente implementado em Hardware
Objectos podem ser desenhados em qualquer ordem
• Desvantagens:
Rasterização independente de visibilidade• Lento se o número de polígonos é grande
Erros na quantização de valores de profundidade podem resultar em imagens inaceitáveis
Dificulta o uso de transparência ou técnicas deanti-aliasing
• É preciso ter informações sobre os vários polígonos que cobrem cada pixel
![Page 44: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/44.jpg)
05/06/2007 44
Z-Buffer e Transparência
• Se há objectos semi-transparentes, a ordem de renderização é importante
• Após a renderização de um objecto transparente, actualiza-se o z-buffer?
Sim → novo objecto por trás não pode mais ser renderizado
Não → z-buffer fica incorreto
• Soluções
Extender o z-buffer → A-buffer
Pintar de trás para frente → Algoritmo do pintor
• Necessário de qualquer maneira, para realizar transparência com blending(canal alfa)
![Page 45: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/45.jpg)
05/06/2007 45
A-Buffer
• Melhoramento da ideia do z-buffer
• Permite implementação de transparência e de filtragem (anti-aliasing)
• Para cada pixel manter lista ordenada por z onde cada nó contém
• Máscara de subpixels ocupados
• Cor ou ponteiro para o polígono
• Valor de z (profundidade)
Z
![Page 46: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/46.jpg)
05/06/2007 46
A-Buffer
• Fase 1: Polígonos são rasterizados
Se pixel completamente coberto por polígono e polígono é opaco
• Inserir na lista removendo polígonos mais profundos
Se o polígono é transparente ou não cobre totalmente o pixel
• Inserir na lista
• Fase 2: Geração da imagem
Máscaras de subpixels são misturadas para obter cor final do pixel
![Page 47: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/47.jpg)
05/06/2007 47
A-Buffer
• Vantagens
Faz mais do que o z-buffer
Ideia da máscara de subpixels pode ser usada com outros algoritmos de visibilidade
• Desvantagens
Implementação (lenta) por software
Problemas do z-buffer permanecem
• Erros de quantização em z
• Todos os polígonos são rasterizados
![Page 48: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/48.jpg)
05/06/2007 48
Algoritmo Scan-Line
• Idéia é aplicar o algoritmo de rasterização de polígonos a todos os polígonos da cena simultaneamente
• Explora coerência de visibilidade
• Em sua concepção original requer que polígonos se interceptem apenas em vértices ou arestas
Pode ser adaptado para lidar com faces que se interceptam
Pode mesmo ser estendido para rasterizar sólidos CSG
![Page 49: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/49.jpg)
05/06/2007 49
Algoritmo Scan-Line
• Ordenam-se todas as arestas de todos os polígonos por ymin
• Para cada plano de varrimento y
Para cada polígono• Determinar intervalos xi de intersecção com plano de
varredura
Ordenar intervalos de intersecção por zmin
Para cada linha de varriento z • Inserir arestas na linha de varrimento respeitando inclinação
z/x
Renderizar resultado da linha de varrimento
![Page 50: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/50.jpg)
05/06/2007 50
Algoritmo Scan-Line
z
x Intervalos
Onde projecções
dos polígonos se
interceptam,
desenhar o da
frente
z
x
z
x
![Page 51: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/51.jpg)
05/06/2007 51
Algoritmo Scan-Line
z
x
Ponto
descoberto
durante a
varredura
![Page 52: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/52.jpg)
05/06/2007 52
Algoritmo Scan-Line
• Vantagens
Algoritmo flexível que explora a coerência entre pixels de uma mesma linha de varrimento
Razoável independência da resolução da imagem
Filtragem e anti-aliasing podem ser incorporados com um pouco de trabalho
Pinta cada pixel apenas uma vez
Razoavelmente imune a erros de quantização em z
• Desvantagens
Coerência entre linhas de varrimento não é explorada• Polígonos invisíveis são descartados múltiplas vezes
Relativa complexidade
Não muito próprio para implementação em hardware
![Page 53: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/53.jpg)
05/06/2007 53
Algoritmo de Warnock
• Usa subdivisão do espaço da imagem para explorar coerência de área
• Sabemos como pintar uma determinada sub-região da imagem se:1. Um polígono cobre a região totalmente e em toda
região é mais próximo que os demais2. Nenhum polígono a intercepta3. Apenas um polígono a intercepta
• Se a sub-região não satisfaz nenhum desses critérios, é subdividida recursivamente à maneira de uma quadtree Se sub-região se reduz a um pixel, pintar o polígono
com menor profundidade
![Page 54: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/54.jpg)
05/06/2007 54
Algoritmo de Warnock
2 2 2
2222
2
2
3
3
3
3 33
3
3
3
3
3
333
3
3
1
1 1 1
1
![Page 55: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/55.jpg)
05/06/2007 55
Algoritmo de Warnock
• Vantagens Explora coerência de área
• Apenas áreas que contêm arestas precisam ser subdivididas até o nível de pixel
Pode ser adaptado para suportar transparência
Levando a recursão até tamanho de subpixel, pode-se fazer filtragem de forma elegante
Pinta cada pixel apenas uma vez
• Desvantagens Testes são lentos
Aceleração por hardware improvável
![Page 56: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/56.jpg)
05/06/2007 56
Algoritmo do Pintor
• Também conhecido como algoritmo de prioridade em Z (depth priority)
• Ideia é pintar objectos mais distantes (background) antes de pintar objectos próximos (foreground)
• Requer que objectos sejam ordenados em Z
Complexidade O (N log N)
Pode ser complicado em alguns casos
Na verdade, a ordem não precisa ser total se projecções dos objectos não se interceptam
Z
Não há ordem possível
Que ponto usar para
determinar ordem?
![Page 57: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/57.jpg)
05/06/2007 57
Algoritmo do Pintor
• Ordenação requer que se determine, para cada par de polígonos A e B:
A precisa ser pintado antes de B
B precisa ser pintado antes de A
A ordem de pintura é irrelevante
• Pode-se usar um algoritmo simples baseado em troca. Ex.: Bubble Sort
• Como a ordem a ser determinada não é total,pode-se usar um algoritmo de ordenação parcialEx.: Union-Find (Tarjan)
![Page 58: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/58.jpg)
05/06/2007 58
Algoritmo do Pintor
• Ordem de pintura entre A e Bdeterminada por testes com níveis crescentes de complexidade
1. Caixas limitantes de A e B não se interceptam
2. A atrás ou na frente do plano de B
3. B atrás ou na frente do plano de A
4. Projecções de A e B não se interceptam
• Se nenhum teste for conclusivo, A é substituído pelas partes obtidas recortando A pelo plano de B(ou vice-versa)
![Page 59: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/59.jpg)
05/06/2007 59
Algoritmo de Recorte Sucessivo
• Pode ser pensado como um algoritmo do pintor ao contrário
• Polígonos são pintados de frente para trás
• É mantida uma máscara que delimita quais porções do plano já foram pintadas
Máscara é um polígono genérico (pode ter diversas componentes conexas e vários “buracos”)
• Ao considerar cada um novo polígono P
Recortar contra a máscara M e pintar apenas P – M
Máscara agora é M + P
![Page 60: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/60.jpg)
05/06/2007 60
Algoritmo de Recorte Sucessivo
• Vantagens
Trabalha no espaço do objecto
• Independente da resolução da imagem
• Não tem problemas de quantização em z
Pinta cada pixel uma vez apenas
• Desvantagem
Máscara pode-se tornar arbitrariamente complexa
Excessivamente lento
![Page 61: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/61.jpg)
05/06/2007 61
BSP-Trees
• São estruturas de dados que representam uma partição recursiva do espaço
• Muitas aplicações em computação gráfica
• Estrutura multi-dimensional
• Cada célula (começando com o espaço inteiro) é dividida em duas por um plano
Binary Space Partition Tree
• Partição resultante é composta de células convexas (politopos)
![Page 62: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/62.jpg)
05/06/2007 62
BSP-Tree
1
2
34
5
1
2 3
45
A
B
CD
E
F
A
B C
D
E F
+ –
+–
+–
+
–
+
–
![Page 63: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/63.jpg)
05/06/2007 63
BSP-Trees
• A orientação dos planos de partição depende da aplicação e é um dos pontos mais delicados do algoritmo de construção Ao partir colecções de objectos visa-se uma divisão
aproximadamente equitativa
Se estamos partindo polígonos • 2D - normalmente usa-se a direcção de alguma aresta como
suporte para o plano
• 3D - normalmente usa-se a orientação do plano de suporte do de algum polígono
Se os objectos têm extensão, é importante escolher planos que interceptem o menor número possível de objectos
![Page 64: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/64.jpg)
05/06/2007 64
BSP-Trees e Visibilidade
• BSP-trees permitem obter uma ordem de desenho baseada em profundidade Vantagem: se o observador se move, não é preciso
reordenar os polígonos
Bastante usada em aplicações de caminhada em ambientes virtuais (arquitectura, museus, jogos)
• Diversas variantes Desenhar de trás para frente (algoritmo do pintor)
Desenhar de frente para trás (algoritmo de recorte recursivo)
Outras...
![Page 65: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/65.jpg)
05/06/2007 65
BSP-Trees - Construção
• Escolhe-se um dos polígonos da colecção presente na célula (ao acaso?) Não existe algoritmo ótimo
Algumas heurísticas (ex.: minimum stabbing number)
• Divide-se a colecção em duas sub-colecções (além do próprio polígono usado como suporte) Polígonos na frente do plano
Polígonos atrás do plano
• Divisão pode requerer o uso de recorte
• Partição prossegue recursivamente até termos apenas um polígono por célula
![Page 66: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/66.jpg)
05/06/2007 66
BSP-Trees - Desenho
• Se observador está de um lado do plano de partição, desenha-se (recursivamente)
Os polígonos do lado oposto
O próprio polígono de partição
Os polígonos do mesmo lado
• Pode-se ainda fazer culling das células fora do volume de visão
![Page 67: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/67.jpg)
05/06/2007 67
BSP-Tree
1
2
34
5
1
2 3
45
A
BC
D
E
F
A
B C
D
E F
+ –
+–
+–
+
–
+
–
Ordem de desenho: D E F A B C
![Page 68: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/68.jpg)
05/06/2007 68
BSP-Trees
• Vantagens
Pode ser usado para caminhadas
Filtragem e anti-aliasing suportados com facilidade (desenho de trás para a frente)
Algoritmo de frente para trás usado em jogos
• Desvantagens
Desenha mesmo pixel várias vezes
Número de polígonos pode crescer muito
![Page 69: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/69.jpg)
05/06/2007 69
Células e Portais
• Ideia usada em aplicações de caminhada (walkthrough) por ambientes virtuais do tipo arquitectônico Cena composta de diversos compartimentos (quartos,
salas, etc)
• Visibilidade é determinada convencionalmente dentro de cada compartimento (célula)
• Visibilidade entre células requer que luz atravesse partes vasadas das paredes tais como janelas, portas, etc (portais)
• Modelo de células e portais pode ser entendido como um grafo Células = vértices
Portais = arestas
![Page 70: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/70.jpg)
05/06/2007 70
Células e Portais
![Page 71: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/71.jpg)
05/06/2007 71
Células e Portais - Algoritmo
• Desenhar célula C (paredes, objectos) onde o observador está
• Para cada célula Vi vizinha à célula do observador por um portal, recortar o volume de visão pelo portal
• Se volume recortado não for nulo, Desenhar célula vizinha restrita à região não
recortada do volume de visão
Repetir o procedimento recursivamente para as células vizinhas de Vi
![Page 72: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/72.jpg)
05/06/2007 72
Células e Portais - Exemplo
![Page 73: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/73.jpg)
05/06/2007 73
Células e Portais – Visibilidade
Pré-Computada
• Operações de recorte são complexas Volume recortado pode ter um grande número de
faces
• Ideia: Pré-computar dados de visibilidade
• Conceito de observador genérico Observador que tem liberdade para se deslocar para
qualquer ponto da célula e olhar em qualquer direcção
• Informação de visibilidade Célula a Região (estimativa exata)
Célula a Célula (estimativa grosseira)
Célula a Objecto (estimativa fina)
![Page 74: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/74.jpg)
05/06/2007 74
Visibilidade Célula a Região
![Page 75: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/75.jpg)
05/06/2007 75
Visibilidade Célula a Célula
A
BC
D
E
1 Portal
AB,BC,CD,DE
2 Portais
AC,BD,CE
3 Portais
AD
![Page 76: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/76.jpg)
05/06/2007 76
Visibilidade Célula a Objecto
![Page 77: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/77.jpg)
05/06/2007 77
Células e Portais
• Uma vez computada a visibilidade célula-a-região, os demais dados de visibilidade são obtidos trivialmente
• Em 3D, o cálculo exato dos volumes de visão pode ser bastante complexo (faces quádricas)
Na prática, usa-se aproximações conservadoras desses volumes (faces planas)
Paper Eurographics 2000: “Efficient Algorithms for Computing Conservative Portal Visibility Information” Jiménez, Esperança, Oliveira
![Page 78: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/78.jpg)
05/06/2007 78
Estimativa Conservadora de
Volumes de Visão
![Page 79: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/79.jpg)
05/06/2007 79
Células e Portais – Algoritmo
com Visibilidade Pré-Computada
• Desenhar célula C do observador
• Desenhar todas as células no Conjunto de Visibilidade de C
Células com visibilidade não nula através de uma sequência de portais
Usar z-buffer
Se dados de visibilidade célula-a-objecto estiverem disponíveis, desenhar apenas os objectos visíveis
![Page 80: Visibilidade e Recortejpp/sgrai/Visibilidade e...05/06/2007 18 Liang-Barsky –Pseudo-código •Computar valores de t para os pontos de intersecção •Classificar pontos em entra](https://reader033.fdocumentos.tips/reader033/viewer/2022060810/608efd98f3565d2f0e2f26d9/html5/thumbnails/80.jpg)
05/06/2007 80
Células e Portais - Resumo
• Versão mais utilizada requer que se pré-compute dados de visibilidade Antecede a fase de caminhada Visibilidade é aproximada Requer método auxiliar para determinação de visibilidade
• Vantagens Bastante eficiente em ambientes complexos com alta
probabilidade de oclusão Reduz o número de objectos a serem desenhados em algumas
ordens de grandeza• Desvantagens
Pré-processamento Não tem grande utilidade em alguns tipos de cena
• Ex. ambientes ao ar livre