Upload
internet
View
102
Download
0
Embed Size (px)
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