ACM SIGGRAPH Educator’s Slide Set...

25
1 Alberto Raposo – PUC-Rio INF 1366 – Computação Gráfica Interativa Anti-Aliasing; Eliminação de Superfícies Escondidas Alberto B. Raposo [email protected] http://www.tecgraf.puc-rio.br/~abraposo/INF1366/index.htm 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

Transcript of ACM SIGGRAPH Educator’s Slide Set...

1

Alberto Raposo – PUC-Rio

INF 1366 – Computação Gráfica Interativa

Anti-Aliasing; Eliminação de Superfícies Escondidas

Alberto B. [email protected]

http://www.tecgraf.puc-rio.br/~abraposo/INF1366/index.htm

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

2

Alberto Raposo – PUC-Rio

Efeitos de Aliasing

Jagged Edges(serrilhado)

Perda dedetalhes

ACM SIGGRAPH Educator’s Slide Set

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

3

Alberto Raposo – PUC-Rio

Anti-Aliasing

• Algoritmos e técnicas desenvolvidos para combater os efeitos de aliasing

Alberto Raposo – PUC-Rio

Anti-Aliasing

• Linhas desenahdas com algoritmo de Bresenham e polígonospreenchidos possuembordas serrilhadas

• Como consertar?

S. Chenney, Univ. of Wisconsin

4

Alberto Raposo – PUC-Rio

Anti-Aliasing• Duas abordagens gerais

– Amostragem por área (ou pré-filtragem): considera as primitivasamostradas 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

Alberto Raposo – PUC-Rio

Pré-filtragem

Sem Anti-aliasing

Pré-filtragem

ACM SIGGRAPH Educator’s Slide Set

5

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 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

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

6

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

7

Alberto Raposo – PUC-Rio

Exemplos de Anti-aliasing

ACM SIGGRAPH Educator’s Slide Set

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

8

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

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.

9

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?

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

10

Alberto Raposo – PUC-Rio

Algoritmo do Pintor

profundid

adez

M. Gattass, PUC-Rio

Alberto Raposo – PUC-Rio

Problemas na ordenação de faces

+ +

za zb

(a)

(b)

M. Gattass, PUC-Rio

11

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?

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 (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

12

Alberto Raposo – PUC-Rio

Z-Buffer: idéia básica

z

MATRIZ DEPROFUNDIDADES

M. Gattass, PUC-Rio

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

13

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

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

14

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

daregião, a corta, ou envolve a região

S. Chenney, Univ. of Wisconsin

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 lentosS. Chenney, Univ. of Wisconsin

15

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

33

1

1 1 11

S. Chenney, Univ. of Wisconsin

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

16

Alberto Raposo – PUC-Rio

Exemplo: BSP-TreeA

C

B

2

4

1

3

A

B C

3 2 4 1

-

- -

+

++

S. Chenney, Univ. of Wisconsin

Alberto Raposo – PUC-Rio

Exemplo: BSP-Tree

1

23

4

5a5b

3

125a

45b

atrásfrente

1

23

4

5a5b

3

45b

atrásfrente

2frente atrás

5a 1

1

23

4

5a5b

3

2

5a 1

4

5b

M. Gattass, PUC-Rio

17

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).

Alberto Raposo – PUC-Rio

Exemplo: Célula-Portal

View

S. Chenney, Univ. of Wisconsin

18

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

19

Alberto Raposo – PUC-Rio

Exemplo: Célula-Portal

View

S. Chenney, Univ. of Wisconsin

Alberto Raposo – PUC-Rio

Cell-Portal Example (5)

View

S. Chenney, Univ. of Wisconsin

20

Alberto Raposo – PUC-Rio

Exemplo: Célula-Portal

View

S. Chenney, Univ. of Wisconsin

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

21

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

Alberto Raposo – PUC-Rio

Grafo de Cena

22

Alberto Raposo – PUC-Rio

Resultados

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.

23

Alberto Raposo – PUC-Rio

Teste de Desempenho (2)

Quadros por Segundos/ Portais c/ Portais

39 112

Alberto Raposo – PUC-Rio

Teste de Desempenho (3)

Quadros por Segundos/ Portais c/ Portais

190 180

24

Alberto Raposo – PUC-Rio

Teste de Desempenho (4)

Quadros por Segundos/ Portais c/ Portais

30 94

Alberto Raposo – PUC-Rio

Propriedades: Células-Portais• Vantagens

– Extremamente eficiente – apenas olha para células queestã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)

25

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.