Dissertação de Mestrado Departamento de Informática - PUC-Rio Abril de 2007 Geração de Sombras...

Preview:

Citation preview

Dissertação de Mestrado Dissertação de Mestrado

Departamento de Informática - PUC-RioAbril de 2007

Geração de Sombras emGeração de Sombras emTempo Real para Modelos CADTempo Real para Modelos CAD

Vitor Barata Ribeiro Blanco Barroso – 0511046-2Orientador: Professor Waldemar Celes

ProgramaPrograma

Introdução Chamuscamento

Técnicas de bias Alinhamento de amostras

Filtragem Mapas de variância Filtro PCF

Reparametrização perspectiva Caso ótimo Caso geral

Particionamento Por faces Em profundidade

Resultado final e conclusão

Não alteram aamostragem da cena

Alteram aamostragem da cena

Importância das SombrasImportância das Sombras

Esclarecimento das relações espaciais entre os objetos Realismo Beleza estética Jogos: Atmosfera e informações adicionais Visualização científica: Facilidade de compreensão do

modelo

Exemplo sem sombrasExemplo sem sombras

Exemplo com sombrasExemplo com sombras

Geração de SombrasGeração de Sombras

Problema de iluminação global Rasterização não captura relações espaciais

Requisitos básicos Sombras dinâmicas Superfícies arbitrárias Tempo Real

Algoritmos Volumes de sombras [Crow77] Mapeamento de sombras [Williams78]

Mapeamento de SombrasMapeamento de Sombras

Renderizar a cena vista pela fonte de luz

Armazenar z-buffer em uma textura (mapa de sombras)

Renderizar a cena vista pela câmera

Transformar pixels para o espaço da luz (s,t,p,q)

zmapa = acesso em s/q e t/q zpixel = p/q Fragmento iluminado se

zpixel <= zmapa

Mapeamento de SombrasMapeamento de Sombras

Vantagens Algoritmo simples Adequado a qualquer primitiva Não requer análise de geometria Bom suporte em hardware

Z-buffer e texturas de profundidadeTeste de sombraFiltro automático (NVidia)

Mapeamento de SombrasMapeamento de Sombras

Problemas Bordas com aparência serrilhada

(aliasing) Sombreamento falso, superfícies

“chamuscadas”

Volumes de visão conflitantes: Amostragem não-uniforme da

transformação perspectiva Baixa amostragem do mapa longe da

fonte de luz Necessária alta amostragem próximo

à câmera

Visã

o d

a câ

mera

Visã

o d

a

fon

te

Figura extraída de: C. Everitt, Shadow Mapping, NVidia Corporation

Sombras em modelos CADSombras em modelos CAD

Desafios Objetos estreitos e silhuetas complexas Objetos só com um lado (não-fechados) Elevado grau de complexidade em z Elevado custo de geometria

Cena totalmente visível para câmera e fonte de luz

ObjetivosObjetivos

Investigar técnicas recentes e sua adequação a modelos CAD

Propor aprimoramentos às técnicas Amostras virtuais em programas de fragmento Parâmetro generalizado para LiSPSM Particionamento em z adaptativo

Propor um conjunto de técnicas que permitam a visualização de modelos CAD com sombras de alta qualidade em tempo real

ProgramaPrograma

Introdução Chamuscamento

Técnicas de bias Alinhamento de amostras

Filtragem Mapas de variância Filtro PCF

Reparametrização perspectiva Caso ótimo Caso geral

Particionamento Por faces Em profundidade

Resultado final e conclusão

Não alteram aamostragem da cena

Alteram aamostragem da cena

ChamuscamentoChamuscamento

Chamuscamento e Chamuscamento e BiasBias

Origens do chamuscamento Precisão numérica Representação discreta e desalinhamento de

amostras Pior caso: dueling frusta

Chamuscamento e Chamuscamento e BiasBias

Acréscimo de deslocamento generalizado [Weiskopf03]

zmapa = z1 + zbias(z1,z2)

Bias constante: zbias = offset[Williams78]

Second-depth: zbias = z2-z1[Wang94]

Midpoint: zbias = (z2–z1) / 2 [Woo92]

Dual: zbias = min(zmid,zmax) [Weiskopf03]

Second-depth restrito a sólidos fechados Dual produz ótimos resultados, mas usa duas

passadas de geração Bias constante requer ajuste caso-a-caso, mas é

suficiente na maioria dos casos

Alinhamento de AmostrasAlinhamento de Amostras

Problema de reconstrução 2D Amostras do mapa de sombras? Amostras da câmera?

Alinhamento de AmostrasAlinhamento de Amostras

Interpolação do mapa de sombras não funciona bem

Alinhamento de AmostrasAlinhamento de Amostras

Reconstrução das amostras da câmera [Wang94] Considerar “amostras virtuais” da câmera sobre o plano tangente

à superfície Idéia original: obter a equação do plano com o ponto e a normal Problema: utiliza programa de vértice

Proposta: utilizar apenas um programa de fragmento

Fragmento atual: f0 = (s0,t0,p0,q0) Amostra virtual: fv = (sv,tv,pv,qv) Conhecemos (sv/qv) e (tv/qv) Queremos encontrar (pv/qv)

Variações entre fragmentos vizinhos: ddx(s,t,p,q) e ddy(s,t,p,q)

Alinhamento de AmostrasAlinhamento de Amostras

Amostra virtual (nx,ny) pixels distante do fragmento atual:

Variações (s,t) após a divisão de perspectiva:

Com: 0

0

0

0

q

s

qddxq

sddxs

dx

ds

tdydtndxdtn

sdydsndxdsn

yx

yx

qptsddynqptsddxnff yxv ,,,,,,0

Alinhamento de AmostrasAlinhamento de Amostras

Resolvendo o sistema para (nx,ny) e substituindo na equação inicial:

dydsdxdtdydtdxds

qptsddxdydsqptsddydxdsF

qptsddydxdtqptsddxdydtF

FtFsff

t

s

tsv

det

,,,,,,

,,,,,,

:onde

det0

Alinhamento de AmostrasAlinhamento de Amostras

Resultado: Redução do chamuscamento Ausência de artefatos

ProgramaPrograma

Introdução Chamuscamento

Técnicas de bias Alinhamento de amostras

Filtragem Mapas de variância Filtro PCF

Reparametrização perspectiva Caso ótimo Caso geral

Particionamento Por faces Em profundidade

Resultado final e conclusão

Não alteram aamostragem da cena

Alteram aamostragem da cena

Filtragem do SerrilhamentoFiltragem do Serrilhamento

Mapas de VariânciaMapas de Variância

• Propostos por Donnelly e Lauritzen (2006)

• Problemas sérios de vazamento de luz devido ao elevado grau de complexidade em profundidade

Filtragem PCFFiltragem PCF

Idéia: Utilizar diferentes amostras do mapa de sombras Realizar vários testes de sombra com resultado

binário (0,1) Filtrar os resultados dos testes

Núcleo no espaço da imagem ou do mapa de sombras?

Efeito de faixas (“banding”)

PCF 5x5 no espaço da imagemPCF 5x5 no espaço da imagem

PCF 5x5 no espaço do mapaPCF 5x5 no espaço do mapa

PCF 5x5 aprimorado com PCF 5x5 aprimorado com jitterjitter

Aprimoramentos ao PCFAprimoramentos ao PCF

Amostras com jitter Núcleo circular Amostragem adaptativa

maxmax

maxmax

2'

2cos'

xxsenyyRy

xxyyRx

PCF não-adaptativoPCF não-adaptativoem baixa resoluçãoem baixa resolução

PCF adaptativoPCF adaptativoem baixa resoluçãoem baixa resolução

Artefatos surgem em mapas de baixa resolução devido ao grande núcleo utilizado para o filtro

PCF não-adaptativoPCF não-adaptativoem boa resoluçãoem boa resolução

PCF adaptativoPCF adaptativoem boa resoluçãoem boa resolução

Artefatos menos perceptíveis

Combinando PCF e Combinando PCF e alinhamentoalinhamento

Alinhar todas as amostras com o centro de cada texel é um processo caro

O principal custo está associado à determinação do centro do texel, e não à amostra virtual em si

Proposta: Gerar várias amostras da câmera sobre o plano

tangente Alinhar com as amostras exatas do núcleo do

filtro, e não com o centro dos texels

PCF desativadoPCF desativado

PCF ativadoPCF ativado

PCF alinhadoPCF alinhado

ProgramaPrograma

Introdução Chamuscamento

Técnicas de bias Alinhamento de amostras

Filtragem Mapas de variância Filtro PCF

Reparametrização perspectiva Caso ótimo Caso geral

Particionamento Por faces Em profundidade

Resultado final e conclusão

Não alteram aamostragem da cena

Alteram aamostragem da cena

ReparametrizaçãoReparametrização

Métrica de SerrilhamentoMétrica de Serrilhamento

Consideramos o “erro de serrilhamento” como a razão entre as áreas de uma superfície vistas por um texel do mapa de sombras e por um pixel da imagem:

lc

cl

c

l

w

w

w

wm

cos

cos

'

'

Métrica de SerrilhamentoMétrica de Serrilhamento

Idealmente, queremos m=1 m > 1 serrilhamento m < 1 super-amostragem

Dois tipos de serrilhamento Serrilhamento de perspectiva: wl/wc Serrilhamento de projeção: cos(θc)/cos(θl)

Potencialmente ilimitado Difícil computar Menos notável Não tratado por técnicas de reparametrização

Objetivo: minimizar o erro máximo em todo o campo de visão da câmera: L∞ = max( |wl/wc| )

Reparametrização PerspectivaReparametrização Perspectiva

Idéia: deformar a cena de modo que objetos mais próximos da câmera apareçam com maior área no mapa de sombras

Para a cena original, tudo se passa como se os texels do mapa tivessem seu tamanho alterado

Baixíssimo custo, apenas calcular e multiplicar uma transformação à matriz de visualização da cena

Reparametrização PerspectivaReparametrização PerspectivaCaso ÓtimoCaso Ótimo

Luz incidindo perpendicularmente à direção de visualização

PSM [Stamminger02]: LiSPSM [Wimmer04]: Tradicional:

nfnn '

nn '

'n

Reparametrização PerspectivaReparametrização PerspectivaEfeito da TransformaçãoEfeito da Transformação

Luz incidindo perpendicularmente à direção de visualização

PSM [Stamminger02]: LiSPSM [Wimmer04]: Tradicional:

nfnn '

nn '

'n

Reparametrização PerspectivaReparametrização PerspectivaErros de SerrilhamentoErros de Serrilhamento

PSM Erro mínimo em x, mas linear em z

LiSPSM Erro pequeno em x Erro mínimo em z, o máximo ocorre nos planos near e far

Reparametrização PerspectivaReparametrização PerspectivaErros de SerrilhamentoErros de Serrilhamento

Fator de Armazenamento (S): Medida combinada de erro Calculado como o produto dos

erros máximos nas direções x e z:

zx MMS

SM LiSPSM PSM

Reparametrização Reparametrização GeneralizadaGeneralizada

Luz e câmera não perpendiculares Redução do intervalo de influência

da transformação perspectiva em z No caso limite, luz e câmera

paralelas, todos os pontos do eixo z no centro do volume de visão da câmera são mapeados para o mesmo texel

Parametrizações convergem para o mapeamento tradicional

LiSPSM:

Queremos tentar manter o erro mínimo do LiSPSM quando γ < π/2.

sen

nfnn

'

γ = π/2

γ = 0

Visão da fonte de luz

Reparametrização Reparametrização GeneralizadaGeneralizada

y

y

fzb

nzanz

0,sencosn'

2,sencos''

y

y

bn

nfbanf

0cos2'

2,sencos''

xx '

Reparametrização Reparametrização GeneralizadaGeneralizada

Seguindo o procedimento de Wimmer et al.(LiSPSM, 2004), temos:

O valor n’2 acima torna-se negativo! Precisamos convergir para o mapeamento

tradicional:

y

y

LiSPSM

bnffn

anfnnn

0,cossen

2,cossen'

'2

'1

lim'1lim

'2

'2

0lim

nn

n

Reparametrização Reparametrização GeneralizadaGeneralizada

Fazemos a seguinte correção:

limlim

'1'

2

lim'1

0,

2,cossen

'

r

nn

anfnn

n LiSPSM

2

lim 21sen1

r

nf

baarctglim

LiSPSM normalLiSPSM normal

LiSPSM GeneralizadoLiSPSM Generalizado

ProgramaPrograma

Introdução Chamuscamento

Técnicas de bias Alinhamento de amostras

Filtragem Mapas de variância Filtro PCF

Reparametrização perspectiva Caso ótimo Caso geral

Particionamento Por faces Em profundidade

Resultado final e conclusão

Não alteram aamostragem da cena

Alteram aamostragem da cena

ParticionamentoParticionamento

Particionamento por FacesParticionamento por Faces

Com luz e câmera paralelas, nenhuma reparametrização perspectiva é boa simultaneamente para A e C

Idéia formalizada por Lloyd (2006): Gerar um mapa de sombras independente para cada face do

volume de visão da câmera visto pela fonte Aplicar uma transformação perspectiva diferente a cada face

Particionamento por FacesParticionamento por Faces

Dispensa a generalização do parâmetro LiSPSM

Ótimo resultado para luz e câmera paralelas

Custo elevado, multiplica por 4 o número de mapas de sombras e de passadas!

Amenizado por frustum culling adaptado a cada partição

Mesmo assim, segundo Lloyd, vale mais à pena particionar em profundidade

Particionamento em Particionamento em ProfundidadeProfundidade

Lloyd (2006) mostra que o Fator de Armazenamento é proporcional a (f/n)

Podemos reduzir o erro máximo utilizando várias partições ao longo do eixo z

O erro é mínimo com partições semelhantes, ou seja, que tenham a mesma razão (f/n)

Particionamento em Particionamento em ProfundidadeProfundidade

Aumentando o número de partições (k), o erro converge para uma situação de erro mínimo

k equivale a um mapeamento logarítmico, ótimo segundo Wimmer et. al. (2004) e Lloyd et. al. (2006)

Um pequeno valor de k (2 a 4) é suficiente para proporcionar uma grande redução do erro. Usamos k=2

CosturasCosturas

Com luz e câmera paralelas: O erro máximo, em ambas direções, ocorre no

plano near de cada partição Aparecem “costuras” nas interfaces entre as

partições Nessa situação, a razão α=f/n deve ser mantida

pequena (recomendamos 2 a 4)

O problema é amenizado conforme a luz passa a incidir perpendicularmente

Na situação limite, o problema ainda existe mas geralmente é imperceptível.

Particionamento AdaptativoParticionamento Adaptativo

Proposta: Usar o ângulo γ como interpolador linear

γ = π/2 usar (f/n) do particionamento normal γ = 0 usar (f/n) = α

Deve-se proceder de forma iterativa a partir do plano far mais distante:

Sem ZPSem ZP

ZPZP22 normal normal

ZPZP22 adaptativo adaptativo

ProgramaPrograma

Introdução Chamuscamento

Técnicas de bias Alinhamento de amostras

Filtragem Mapas de variância Filtro PCF

Reparametrização perspectiva Caso ótimo Caso geral

Particionamento Por faces Em profundidade

Resultado final e conclusão

Não alteram aamostragem da cena

Alteram aamostragem da cena

Resultado FinalResultado Final

Técnicas recomendadas para a visualização de modelos CAD:

Geração com bias constante ou dual-depth Reparametrização LiSPSM generalizado Particionamento adaptativo em profundidade ZP2 a ZP4

Filtro PCF 3x3 a 5x5 Baseado em texels Núcleo circular com jitter Amostras virtuais Amostragem adaptativa opcional

Resultado FinalResultado FinalIncidência PerpendicularIncidência Perpendicular

Mapeamento Tradicional

Resultado FinalResultado FinalIncidência PerpendicularIncidência Perpendicular

Reparametrização LiSPSM Generalizada

Resultado FinalResultado FinalIncidência PerpendicularIncidência Perpendicular

ReparametrizaçãoParticionamento ZP2

Resultado FinalResultado FinalIncidência PerpendicularIncidência Perpendicular

ReparametrizaçãoParticionamento ZP2

PCF 5x5

Resultado FinalResultado FinalIncidência ParalelaIncidência Paralela

Mapeamento Tradicional

Resultado FinalResultado FinalIncidência ParalelaIncidência Paralela

ReparametrizaçãoLiSPSM Generalizada

Resultado FinalResultado FinalIncidência ParalelaIncidência Paralela

ReparametrizaçãoParticionamento ZP2

Resultado FinalResultado FinalIncidência ParalelaIncidência Paralela

ReparametrizaçãoParticionamento ZP2

PCF 5x5

Resultado FinalResultado Final

Eficiência: Máquinas:

Core 2 Duo 2.4GHz, GeForce 8800 GTS Pentium 4 3.0GHz, GeForce 6800 GT

Resolução 800x600, mapas de 2048x2048 Passadas:

1 por luz para gerar o mapa 1 de iluminação ambiente 1 por luz para renderização com sombras

Ponto-de-vista restrito, ~20% da geometria da cena

Resultado FinalResultado Final

GeForce 8800

GeForce 6800 Técnica

LuzesMapeamento Tradicional Técnicas Recomendadas

1 luz dinâmica 33 9 a 12

2 luzes dinâmicas 18 5 a 7

TécnicaLuzes

Mapeamento Tradicional Técnicas Recomendadas

1 luz dinâmica 45 29 a 59

2 luzes dinâmicas 25 18 a 30

ConclusãoConclusão

Visualização de modelos CAD com mapeamento de sombras em tempo real:

Geração com bias constante ou dual-depth Reparametrização LiSPSM generalizado Particionamento adaptativo em profundidade ZP2 a ZP4 Filtro PCF 3x3 a 5x5

Baseado em texels Núcleo circular com jitter Amostras virtuais Amostragem adaptativa opcional

Idéias propostas: Amostras virtuais em programas de fragmento Parâmetro generalizado para LiSPSM Particionamento em z adaptativo

Trabalhos FuturosTrabalhos Futuros

Verificação da parametrização logarítmica de Lloyd et al.

Com LogSM, verificar o particionamento por faces

Técnicas para tratamento do vazamento de luz em VSMs

Geração de sombras suaves com penumbra realista em tempo real