• Nenhum resultado encontrado

Remoção de Superfícies Escondidas

N/A
N/A
Protected

Academic year: 2021

Share "Remoção de Superfícies Escondidas"

Copied!
35
0
0

Texto

(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

abraposo@tecgraf.puc-rio.br

http://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 primitivasPrecisão de imagem: computação opera no nível do pixel

• Pode-se operar em qualquer espaço do pipeline de visualização, pois todos eles mantêm a informação de profundidade

Sequência de transformações do 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 comportar corretamente 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 ponto do polígono)

– Renderize os polígonos nessa ordem, o mais distante primeiro

• Polígonos mais próximos são desenhados sobre os mais distantes

Alberto Raposo – PUC-Rio

Algoritmo do Pintor

profundidade z

M. Gattass, PUC-Rio

(4)

Alberto Raposo – PUC-Rio

Problemas na ordenação de faces

+ +

za

zb

(a)

(b)

M. Gattass, PUC-Rio

Alberto Raposo – PUC-Rio

Algoritmo do Pintor

• Dificuldade:

– Se usado dessa forma, não funciona bem na maioria das geometrias

• Precisa de melhores maneiras de fazer a ordenação dos polígonos

z

s

x

s

Situações em que não funciona

Que ponto

escolher

para 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 mais distante visível (Z

max

)

• À 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 guardar informaçã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, inserir na 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 apenas um polígono

• Três casos triviais para determinar o que está na frente em uma região:

1. Um polígono está completamente à frente de qualquer coisa na região

2. Não há superfícies projetadas na região

3. 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: Algoritmo de 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 à frente 2) Vazia

3) Um polígono dentro, ao redor ou cortando a área

2 2 2

2 2

2 2

2

2 3

3

3

3 3 3

3 3

3

3

3 3

3 3

3 3 1

1 1 1 1

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

C A

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

5b 3

1 2 5a

4 5b atrás frente

1 2

3 4 5a

5b

3 4 5b atrás frente

frente 2 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 P4 2.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 de detalhes

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ígonos preenchidos possuem bordas 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 em resoluçã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 pequenos quadrados

– Preencha os pixels de acordo com a proporção do seu quadrado coberto pela linha (intensidade de cor)

1/8

1/8 .914

.914 .914 1/8

1/8

1/4 1/4

1/4 1/4

0 0

0 0

0 0 0 0

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 depois filtre a imagem

– Típico: 4 a 16 amostras por pixel S – Amostras podem ser em grade

uniforme, ou randomicamente posicionadas

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 8 1 161

8 1 4 1 8 1

161 81 161 Exemplo de filtro:

S. Chenney, Univ. of Wisconsin

Alberto Raposo – PUC-Rio

Falando em filtros...

• Imagem: uma função do R 2 em C

(26)

Alberto Raposo – PUC-Rio

Imagem Colorida

R G

u

B

v

Alberto Raposo – PUC-Rio

Tons de cinza e negativo

Lx,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 eixox

x

função original f(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

amostra quantizada f(x)

××

××

×

×

×

×

×

×

×

× ××××

×

×

×

×

×

×

×

× ×××× ××××

×

×

×

×

××

×× ××××

×

××

×

×

×

×

×

partição do eixox

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

1

1 +

+ +

=

i i i

i

f

f

h f

(30)

Alberto Raposo – PUC-Rio

Mascara ou Filtro

4

2

1

1 +

+ +

=

i i i

i

f f

h f

=

= − 1

0

) ( n

k

i i k

i g f

h

 



+

>

+

=

=

=

<

=

1 0

1 4

/ 1

0 4

/ 2

1 4

/ 1

1 0

l se

l se

l se

l se

l se g

l

ou:

Alberto Raposo – PUC-Rio

Convolução

=

−∞

=

=

t

t

dt x f x t g x

h ( ) ( ) ( )

=

= − 1

0

) ( n

k

i i k

i g f

h

(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

e x

G

=

[ 1 2 1 ]

4

1 [ 1 4 6 4 1 ]

16 1

[ 1 6 15 20 15 6 1 ]

64 1

Alberto Raposo – PUC-Rio

Gaussiana

2 2 2

2

2 ) 1

,

(

σ

σ π

y x

e y

x G

− +

=

 

 

1 2 1

2 4 2

1 2 1 16

1













1 4 7 4 1

4 16 26 16 4

7 26 41 26 7

4 16 26 16 4

1 4 7 4 1

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

1 2 1

2 4 2

1 2 1 16

1

(33)

Alberto Raposo – PUC-Rio

Detecção de bordas

2 / )

(

1 1

'

+

=

i i

i

f f

f

 

<

− +

>

− +

− +

= −

+

+

+

0 ) 2

( 0

0 ) 2

( 2

1 1

1 1

1 '' 1

i i i

i i i

i i i

i

se f f f

f f f

se f

f f f

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

 

 

∂ ∂

=

y f

x f y

x f ( , ) Gradiente

Laplaciano

2

2 2 2

2

( , )

y f x

y f x

f

+ ∂

= ∂

(34)

Alberto Raposo – PUC-Rio

Filtros de realce de bordas

 

 

− 0 1 0

1 4 1

0 1 Laplaciano 0

 

 

 −

0 0 0

0 1 0

1 0 0

 

 

 −

0 0 0

0 1 0

0 0 1

 

 

− 1 0 1

2 0 2

1 0 1 4 1

 

 

 − − −

1 2 1

0 0 0

1 2 1 4 1

Vertical Horizontal

Roberts

Sobel Gradiente

Alberto Raposo – PUC-Rio

Exemplo de detecção de arestas

RGB cinza Laplaciano

(35)

Alberto Raposo – PUC-Rio

Filtragem

1 2 1

2 4 2

1 2 1 16

1

filtro gaussiano

0 1 0

1 4 1

0 1 0

filtro laplaciano

L

L← 255 −

B G R

L=0.30 +0.59 +0.11

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.

Referências

Documentos relacionados

O PREFEITO DO MUNICÍPIO DE MARACAÍ - Estado de São Paulo, no uso de suas atribuições legais, torna público que se encontra publicado o EDITAL DE HOMOLOGAÇÃO DO

A Comissão Permanente de Licitação – CPL 2 da prefeitura municipal de Mossoró, designada pela portaria n.º 0398/2014, publicado em17 de julho de 2015 no JORNAL OFICIAL DE

A iluminação é calculada para cada vértice do polígono; A iluminação de cada ponto na superfície do polígono é determinada por interpolação bilinear tomando como.

B sala 201, DENOMINADO SIMPLESMENTE CONVENENTE neste ato representado pelo seu Diretor Presidente Pedro Machado Barbosa, brasileiro, casado, servidor público, portador da RG

A história das relações entre sociedades humanas e grandes cetáceos ocorre na fronteira entre os mundos terrestres e marinhos, ao longo de milênios e, como nos lembra Brito (2011),

a) A quantidade de vértices de um polígono é necessariamente igual a sua quantidade de lados. A soma dos comprimentos dos lados de um polígono é chamada de perímetro. c)

Imerso nesse contexto da Educação Musical a Distância, descrito por meio da trajetória de formação do sujeito pesquisador, somado ao fato de ser tecladista/pianista,

4 – Realizar constantes reavaliações do objeto contratado, propondo medidas com vistas à redução dos gastos, bem como aquelas que visem melhor racionalização dos serviços