Remoção de Superfícies...
Transcript of Remoção de Superfícies...
1
Alberto Raposo – PUC-Rio
INF 1366 – Computação Gráfica Interativa
Eliminação de Superfícies Escondidas;Anti-Aliasing e Imagens Digitais
Alberto B. Raposo
[email protected]://www.tecgraf.puc-rio.br/~abraposo/INF1366/index.htm
Alberto Raposo – PUC-Rio
Remoção de Superfícies Escondidas
• Dado conjunto de polígonos, qual é visível em cada pixel (quem estána frente, etc.)?
• Há muitos algoritmos diferentes para isso. 2 grandes classes:– Precisão de objeto: computação opera nas primitivas
– Precisão de imagem: computação opera no nível do pixel
• Pode-se operar em qualquer espaço do pipeline de visualização, poistodos eles mantêm a informação de profundidade
Sequência de transformaçõesdo OpenGL
2
Alberto Raposo – PUC-Rio
Remoção de Superfícies Escondidas (Visibilidade)
• Determinar a visibilidade dos polígonos antes de enviá-los para placa gráfica (culling):– Back face culling;
– View frustum culling;
– Occlusion Culling;
– Célula / Portal.
Alberto Raposo – PUC-Rio
Desafios• Eficiência – perde-se tempo sobrescrevendo pixels ou
rasterizando coisas que não podem ser visualizadas
• Precisão – resultado precisa ser correto e se comportarcorretamente quando a câmera se move
• Em ambientes complexos, poucas coisas são visíveis– Quanto do mundo real é visto a cada instante?
3
Alberto Raposo – PUC-Rio
Algoritmo do Pintor (Precisão de Imagem)
• Algoritmo:– Escolha uma ordenação para os polígonos baseada
em algum critério (e.g. profundidade de um pontodo polígono)
– Renderize os polígonos nessa ordem, o maisdistante primeiro
• Polígonos mais próximos são desenhados sobreos mais distantes
Alberto Raposo – PUC-Rio
Algoritmo do Pintor
prof
undida
de
z
M. Gattass, PUC-Rio
4
Alberto Raposo – PUC-Rio
Problemas na ordenação de faces
+ +
zazb
(a)
(b)
M. Gattass, PUC-Rio
Alberto Raposo – PUC-Rio
Algoritmo do Pintor• Dificuldade:
– Se usado dessa forma, nãofunciona bem na maioria das geometrias
• Precisa de melhores maneirasde fazer a ordenação dos polígonos
zs
xs
Situações em quenão funciona
Que pontoescolherpara a ordenação?
5
Alberto Raposo – PUC-Rio
Algoritmo Z-buffer (Precisão de Imagem)
• Para cada pixel do display, tenha pelo menos 2 buffers– Color buffer: Armazena a cor atual de cada pixel (o que será realmente
mostrado)
– Z-Buffer (ou depth buffer): armazena, para cada pixel, a profundidade do objeto mais próximo até então, a ser desenhado naquele pixel
• Inicialize o Z-buffer com um valor correspondente ao valor de Z maisdistante visível (Zmax)
• À medida que um polígono é preenchido, compute a profundidade de cada pixel a ser preenchido– If: profundidade < profundidade armazenada no z-buffer, preencha o
pixel e armazene essa profundidade no z-buffer
– Else: desconsidere o pixel (está atrás de algo que já foi desenhado).
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Z-Buffer: idéia básica
z
MATRIZ DE
PROFUNDIDADES
M. Gattass, PUC-Rio
6
Alberto Raposo – PUC-Rio
Z-buffer
• Vantagens:– Simples e hoje em dia implementado em hardware
• O z-buffer é parte do que faz uma placa gráfica ser “3D”
– Computar as profundidades necessárias é simples
• Desvantagens:– Over-renders – pouco eficiente quando há grande
número de polígonos
– Não trata transparência facilmente (precisaria guardarinformação sobre polígonos parcialmente cobertos)
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Algoritmo A-buffer (Precisão de Imagem)
• Lida com superfícies transparentes e faz anti-aliasing
• Em cada pixel, mantenha um ponteiro para lista de polígonos ordenado por profundidade e uma máscara de cobertura de sub-pixels para cada polígono– Matriz de bits dizendo que partes do pixel está coberta
• Algoritmo: ao desenhar um pixel:– If: polígono é opaco e cobre o pixel, inserir na lista, removendo
todos os polígonos mais distantes
– If: polígono é transparente ou cobre apenas parte do pixel, inserirna lista, mas sem remover polígonos mais distantes
S. Chenney, Univ. of Wisconsin
7
Alberto Raposo – PUC-Rio
Algoritmo A-buffer• Algoritmo: etapa de rendering
– A cada pixel, percorra o buffer usando as cores dos polígonos e as máscaras de cobertura para fazer a composição:
• Vantagem:– Pode fazer mais que o Z-buffer
– Conceito de máscara de visibilidade pode ser usado em outros algoritmos
• Desvantagens:– Não está em hardware, e é lento em software
– No fundo, é z-buffer: mesmo problema de over-rendering
• Porém: usado em ferramentas de renderização de alta qualidade
sobre =
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Subdivisão de Áreas
• Explora a coerência de área: pequenas áreas de uma imagem tendem a ser cobertas por apenasum polígono
• Três casos triviais para determinar o que está nafrente em uma região:
1. Um polígono está completamente à frente de qualquercoisa na região
2. Não há superfícies projetadas na região3. Apenas uma superfície está completamente dentro da
região, a corta, ou envolve a região
S. Chenney, Univ. of Wisconsin
8
Alberto Raposo – PUC-Rio
Subdivisão de Áreas: Algoritmode Warnock (Precisão de Imagem)
• Comece com imagem completa• Se um dos 3 casos triviais ocorre, desenhe o que está na
frente• Caso contrário, subdivida a região recursivamente• Se região chegou ao tamanho do pixel, escolha superfície
com menor profundidade• Vantagens:
– Não ocorre over-rendering– Bom anti-aliasing: basta fazer mais uma subdivisão para obter
informação de sub-pixel
• Desvantagem:– Testes são complexos e lentos
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Algoritmo de Warnock
• Casos na imagem ao lado:1) Um polígono à frente2) Vazia3) Um polígono dentro, ao
redor ou cortando a área
2 2 2
2222
2
2
3
3
3
3 33
3
3
3
3
3
333
3
3
1
1 1 11
S. Chenney, Univ. of Wisconsin
9
Alberto Raposo – PUC-Rio
BSP-Trees: Binary Space Partion Trees(Precisão de Objeto)
• Construção da bsp tree
– Árvore fornece ordem de renderização
– Árvore “quebra” o mundo 3D com planos• Mundo é quebrado em células convexas
• Cada célula é a interseção de todos os “meio-espaços” dos planos de quebra na árvore
• Também usada em modelagem:– Nem sempre quando se fala em BSP se refere a este algoritmo
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Exemplo: BSP-Tree
AC
B
2
4
1
3
A
B C
3 2 4 1
-
- -
+
++
S. Chenney, Univ. of Wisconsin
10
Alberto Raposo – PUC-Rio
Exemplo: BSP-Tree
1
2
3
4
5a
5b3
1
2
5a
4
5b
atrásfrente
1
2
3
4
5a
5b
3
4
5b
atrásfrente
2frente atrás
5a 1
1
2
3
4
5a
5b
3
2
5a 1
4
5b
M. Gattass, PUC-Rio
Alberto Raposo – PUC-Rio
Célula / Portal - Conceito
• Em um ambiente fechado, objetos presentes em quartos (células) distantes não podem ser vistos através das paredes (oclusores) e os objetos nos quartos adjacentes são vistos somente através das portas ou janelas (portais).
11
Alberto Raposo – PUC-Rio
Exemplo: Célula-Portal
View
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Exemplo: Célula-Portal
View
S. Chenney, Univ. of Wisconsin
12
Alberto Raposo – PUC-Rio
Exemplo: Célula-Portal
View
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Exemplo: Célula-Portal
View
S. Chenney, Univ. of Wisconsin
13
Alberto Raposo – PUC-Rio
Cell-Portal Example (5)
View
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Exemplo: Célula-Portal
View
S. Chenney, Univ. of Wisconsin
14
Alberto Raposo – PUC-Rio
Célula / Portal – Pré-processamento
• O ambiente deve ser pré-processado para se obter as células e os portais:– Uma forma de se obter essa divisão é através do cálculo
de uma BSP-Tree ou uma k-d Tree;
• Cálculo da Visibilidade:– Calcular o conjunto de objetos potencialmente visíveis
(PVS): Teller / Séquin, Quake;
– Não calcular o PVS: a determinação é feita
dinamicamente - Luebke
Alberto Raposo – PUC-Rio
Portais
• Determinar o conjunto potencialmente visível:– A célula onde está o observador mais todas as células adjacentes.
• Luebke e Georges:– Montar o grafo de cena a partir da informação de conectividade;– Percorrendo o grafo, determinar quais células estão visíveis;– Adequado para implementação em grafos de cena: Performer /
OpenSceneGraph
15
Alberto Raposo – PUC-Rio
Grafo de Cena
Alberto Raposo – PUC-Rio
Resultados
16
Alberto Raposo – PUC-Rio
Teste de Desempenho (1)
• O desempenho foi amostrado durante um percurso por vários cômodos do modelo 3-D de um apartamento;
• Testes realizados em um P42.54 GHz com 3 GB de RAM e uma placa gráfica NVIDIA Quadro FX 1000 128 MB.
Alberto Raposo – PUC-Rio
Teste de Desempenho (2)
Quadros por Segundo
s/ Portais c/ Portais
39 112
17
Alberto Raposo – PUC-Rio
Teste de Desempenho (3)
Quadros por Segundo
s/ Portais c/ Portais
190 180
Alberto Raposo – PUC-Rio
Teste de Desempenho (4)
Quadros por Segundo
s/ Portais c/ Portais
30 94
18
Alberto Raposo – PUC-Rio
Propriedades: Células-Portais
• Vantagens– Extremamente eficiente – apenas olha para células que
estão realmente visíveis: visibility culling
– Facilmente modificável para visibilidade parcial: renderiza células parcialmente visíveis e deixa z-buffer fazer o resto
– Faz espelhos: crie “célula imaginária” espelhada e considere o espelho como portal
• Desvantagens– Restrito a ambientes com boa estrutura para
células/portais (ambientes fechados)
Alberto Raposo – PUC-Rio
Anti-Aliasing
19
Alberto Raposo – PUC-Rio
Aliasing• Ocorre quando a amostragem inerente à renderização não tem
informação suficiente para uma imagem precisa.
Cena original
Luminosidade
Amostragem do centro dos pixels
Sinal amostrado Luminosidade reconstruída
Imagem renderizada
ACM SIGGRAPH Educator’s Slide Set
Alberto Raposo – PUC-Rio
Efeitos de Aliasing
Jagged Edges(serrilhado)
Perda dedetalhes
ACM SIGGRAPH Educator’s Slide Set
20
Alberto Raposo – PUC-Rio
Desintegração de Textura
– O xadrez deveria ficar menor com a distância
– Aliasing os torna maiores ou irregulares
ACM SIGGRAPH Educator’s Slide Set
Alberto Raposo – PUC-Rio
Anti-Aliasing
• Algoritmos e técnicas desenvolvidos para combater os efeitos de aliasing
21
Alberto Raposo – PUC-Rio
Anti-Aliasing
• Linhas desenahdas com algoritmo de Bresenham e polígonospreenchidos possuembordas serrilhadas
• Como consertar?
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Anti-Aliasing
• Duas abordagens gerais– Amostragem por área (ou pré-filtragem): considera as primitivas
amostradas como “caixa”(região) (ou Gaussiana, ou…) ao invés de linhas
• Requer primitivas com área (linhas com largura)
• Super-amostragem (ou pós-filtragem): amostra emresolução maior, filtrando depois a imagem resultante– Este é o anti-aliasing mais usado em hardware
S. Chenney, Univ. of Wisconsin
22
Alberto Raposo – PUC-Rio
Pré-filtragem
Sem Anti-aliasing
Pré-filtragem
ACM SIGGRAPH Educator’s Slide Set
Alberto Raposo – PUC-Rio
Unweighted Area Sampling
• Técnica de pós-filtragem– Considere uma linha como tendo
largura
– Considere pixels como pequenosquadrados
– Preencha os pixels de acordo com a proporção do seu quadradocoberto pela linha (intensidade de cor)
1/8
1/8
.914
.914
.914
1/8
1/8
1/4
1/4
1/41/40 0
00
0000
0
0
0
0 0 0
S. Chenney, Univ. of Wisconsin
23
Alberto Raposo – PUC-Rio
Super-amostragem (pós-filtragem)
• Amostre em resolução maior que a necessária para o display e depoisfiltre a imagem– Típico: 4 a 16 amostras por pixel S
– Amostras podem ser em grade uniforme, ou randomicamenteposicionadas
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Exemplos de Anti-aliasing
ACM SIGGRAPH Educator’s Slide Set
24
Alberto Raposo – PUC-Rio
Exemplos de Anti-aliasing
ACM SIGGRAPH Educator’s Slide Set
Alberto Raposo – PUC-Rio
Exemplos de Anti-aliasing
ACM SIGGRAPH Educator’s Slide Set
25
Alberto Raposo – PUC-Rio
Weighted Sampling
• Ao invés de usar a proporção daárea coberta pela linha, use convolução para fazer a amostragem– Equivalente a pré-filtrar a linha e
amostrar o resultado
• Coloque o “filtro” em cada pixel e integre o produto do pixel com a linha
161
81
161
81
41
81
161
81
161
Exemplo de filtro:
S. Chenney, Univ. of Wisconsin
Alberto Raposo – PUC-Rio
Falando em filtros...
• Imagem: uma função do R2 em C
26
Alberto Raposo – PUC-Rio
Imagem Colorida
R
G
Bu
v
Alberto Raposo – PUC-Rio
Tons de cinza e negativoLx,y = 0.299Rx,y + 0.587Gx,y + 0.114Bx,y
tons de cinza
Lx,y = 255 - Lx,y
27
Alberto Raposo – PUC-Rio
Aquisição de imagem digital
• Amostragem
• Quantização
• Codificação
Alberto Raposo – PUC-Rio
Amostragem, quantização e codificação de f(x)
partição do eixo x
x
função originalf(x)
amostra
0
1
2
3
4
5
6
28
Alberto Raposo – PUC-Rio
codificação = (3, 4, 5, 5, 4, 2, 2, 3, 5, 5, 4, 2)
Amostragem, quantização e codificação de f(x)
0
1
2
3
4
5
6
x
função original
amostraquantizada
f(x)
××××
××××
×××× ××××
××××
×××× ×××× ××××
××××
×××× ××××
××××
××××
partição do eixo x
Alberto Raposo – PUC-Rio
Digitalização de Imagens
amostragem
Imagem de tons
contínuos
55 55 55 55 55 55 55
55 20 22 23 45 55 55
55 55 10 09 11 55 55
55 55 43 42 70 55 55
55 55 28 76 22 55 55
55 55 55 55 55 55 55
64x54
64x54 - 16 cores
codificação
Imagem amostrada
Imagem amostrada e
quantizada
5*55, 1*55, 1*20, 1*22, ….
quantização
Imagem amostrada,
quantizada e codificada
29
Alberto Raposo – PUC-Rio
Filtros espaciais
Melhoras na distribuição espacial
Alberto Raposo – PUC-Rio
Suavização
f
h
4
2 11 +− ++= iii
i
fffh
30
Alberto Raposo – PUC-Rio
Mascara ou Filtro
4
2 11 +− ++= iii
i
fffh
∑−
=
−=1
0)(
n
k
iiki fgh
+>
+=
=
−=
−<
=
10
14/1
04/2
14/1
10
lse
lse
lse
lse
lse
g l
ou:
Alberto Raposo – PUC-Rio
Convolução
∫∞=
−∞=
−=t
t
dtxfxtgxh )()()(
∑−
=
−=1
0)(
n
k
iiki fgh
31
Alberto Raposo – PUC-Rio
Gaussiana
0.1
0.2
0.3
-4 -3 -2 -1 0 1 2 3 4
2
2
2
2
1)( σ
σπ
x
exG−
=
[ ]1214
1[ ]14641
16
1
[ ]161520156164
1
Alberto Raposo – PUC-Rio
Gaussiana2
22
2
2
1),( σ
σπ
yx
eyxG
+−
=
121
242
121
16
1
14741
41626164
72641267
41626164
14741
273
1
0 . 1
0 . 2
0 . 3
0 . 4
0 . 1
0 . 2
0 . 3
0 . 4
32
Alberto Raposo – PUC-Rio
Filtragem gaussiana
Alberto Raposo – PUC-Rio
Filtro Gaussiano
121
242
121
16
1
33
Alberto Raposo – PUC-Rio
Detecção de bordas
2/)( 11'
−+ −= iii fff
<−+−
>−+−−+−=
+−
+−+−
0)2(0
0)2(2
11
1111''
iii
iiiiiii
fffse
fffseffff
f(x)
|f '(x)|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|f ''(x)|
Alberto Raposo – PUC-Rio
Detecção de bordas
∂∂
∂∂
=∇
yf
xf
yxf ),(GradienteLaplaciano
2
2
2
22 ),(
y
f
x
fyxf
∂
∂+
∂
∂=∇
34
Alberto Raposo – PUC-Rio
Filtros de realce de bordas
−
−−
−
010
141
010Laplaciano
−
000
010
100
−
000
010
001
−
−
−
101
202
101
4
1
−−−
121
000
121
4
1
Vertical HorizontalRobertsSobelGradiente
Alberto Raposo – PUC-Rio
Exemplo de detecção de arestas
RGB cinza Laplaciano
35
Alberto Raposo – PUC-Rio
Filtragem
121
242
121
16
1
filtrogaussiano
−
−−
−
010
141
010
filtro laplaciano
LL −← 255BGRL 11.059.030.0 ++=
Alberto Raposo – PUC-Rio
Informações Adicionais
• Peter Shirley. Fundamentals of Computer Graphics, A K Peters, Ltd., Natick, MA, USA, 2002.
• Foley, J. D., Van Dam, A., Feiner, S. K., e Huhes, J. F., Phlips, L. R., Introduction to Computer Graphics, Addison-Wesley, 1995.
• D. F. Rogers, Procedural Elements for Computer Graphics, McGraw-Hill, 1988.
• Marcelo Gattass: notas de aula. http://www.tecgraf.puc-rio.br/~mgattass/cg.html
• Portais: Silva, R. J. M., Wagner, G. N., Raposo, A. B., Gattass, M. Experiência de Portais em Ambientes Arquitetônicos Virtuais. VI Symposium on Virtual Reality - SVR 2003, p.117-128. Ribeirão Preto, SP, Brazil. 2003.