Técnicas de renderização com textura INF1339 Computação Gráfica Tridimensional Waldemar Celes celes@inf.puc-rio.br sala 505 RDC Tecgraf, DI/PUC-Rio 12 de Setembro de 2013 W. Celes Técnicas de renderização com textura 1
Visualização volumétrica Aplicações Visualização de dados da área médica (CT, MRI) Visualização de resultados de simulações numéricas Visualização foto-realista de dados volumétricos Projeção W. Celes Técnicas de renderização com textura 2
Visualização volumétrica Renderização direta de volume Dados escalares armazenados em voxels (grade uniforme) W. Celes Técnicas de renderização com textura 3
Visualização volumétrica Modelo de iluminação Absorção e emissão Discretizando o traçado do raio c = n i=1 α = 1 (1 α j ) c i i 1 j=1 n (1 α j ) j=1 W. Celes Técnicas de renderização com textura 4
Visualização volumétrica Geometria definida por fatias no volume (textura 3D) W. Celes Técnicas de renderização com textura 5
Visualização volumétrica Geometria definida por fatias no volume (textura 3D) Posicionamento das fatias Fatias fixas com ajuste das coordenadas de textura W. Celes Técnicas de renderização com textura 5
Visualização volumétrica Pipeline convencional Conversão de dados escalares em RGBA Volume escalar FT Textura RGBA Tabela de conversão definida com FT Desenha fatias Ordem back-to-front: operador over c i = c i + (1 α i ) c i+1 α i = α i + (1 α i ) α i+1 Ordem front-to-back: operador under c i = (1 α i 1 ) c i + c i 1 α i = (1 α i 1 ) α i + α i 1 W. Celes Técnicas de renderização com textura 6
Névoa vertical (layered fog) Como obter usando textura? W. Celes Técnicas de renderização com textura 7
Névoa vertical Efeito de fog do OpenGL: c = f c frag + (1 f ) c fog onde: f = f (z eye ) Efeito de névoa vertical: f = f (y world ) W. Celes Técnicas de renderização com textura 8
Névoa vertical Implementação Textura 1D RGBA RGB: cor da névoa A: intensidade da névoa Geração automática de coordenada de textura Espaço do olho (comum a toda a cena) s = ax + by + cz + d Função de textura: DECAL c = αtex c tex + (1 α t ) c frag α = αfrag W. Celes Técnicas de renderização com textura 9
Textura projetiva Considere o problema de instanciar um projetor de slide numa cena Projective texture mapping, Cass Everitt, nvidia W. Celes Técnicas de renderização com textura 10
Textura projetiva Como projetar textura na cena? Como gerar coordenada de textura apropriada? y x Camera t s Projetor W. Celes Técnicas de renderização com textura 11
Pipeline de transformações Para visualização Model: transforma vértices para espaço global View: transforma vértices para espaço da câmera Projection: transforma vértice para espaço de clip Clip space: -1 a 1 W. Celes Técnicas de renderização com textura 12
Pipeline de transformações Para visualização Model: transforma vértices para espaço global View: transforma vértices para espaço da câmera Projection: transforma vértice para espaço de clip Clip space: -1 a 1 Para projeção Model: transforma vértices para espaço global Projector view: transforma vértices para espaço do projetor Projector projection: transforma para espaço de textura Texture space: 0 a 1 W. Celes Técnicas de renderização com textura 12
Geração de coordenada projetiva Espaço do objeto s t r q = M o x y z w W. Celes Técnicas de renderização com textura 13
Geração de coordenada projetiva Espaço do objeto s t r q = M o x y z w M o = T 1/2 S 1/2 P p V p M M: matriz de modelagem (espaço local para global) V p : matriz de visualização do projetor P p : matriz de projeção do projetor T 1/2 S 1/2 : mapeia [ 1, 1] para [0, 1] W. Celes Técnicas de renderização com textura 13
Geração de coordenada projetiva Espaço do objeto s t r q = M o x y z w M o = T 1/2 S 1/2 P p V p M M: matriz de modelagem (espaço local para global) V p : matriz de visualização do projetor P p : matriz de projeção do projetor T 1/2 S 1/2 : mapeia [ 1, 1] para [0, 1] Desvantagem: Uma para cada objeto W. Celes Técnicas de renderização com textura 13
Geração de coordenada projetiva Espaço do olho s t r q = M e x e y e z e w e W. Celes Técnicas de renderização com textura 14
Geração de coordenada projetiva Espaço do olho s t r q = M e x e y e z e w e M e = T 1/2 S 1/2 P p V p V 1 V 1 : inversa da visualização (espaço do olho para global) V p : matriz de visualização do projetor P p : matriz de projeção do projetor T 1/2 S 1/2 : mapeia [ 1, 1] para [0, 1] W. Celes Técnicas de renderização com textura 14
Geração de coordenada projetiva Espaço do olho s t r q = M e x e y e z e w e M e = T 1/2 S 1/2 P p V p V 1 V 1 : inversa da visualização (espaço do olho para global) V p : matriz de visualização do projetor P p : matriz de projeção do projetor T 1/2 S 1/2 : mapeia [ 1, 1] para [0, 1] Única para toda a cena W. Celes Técnicas de renderização com textura 14
Geração automática Primeira estratégia: Uso da matriz de textura Geração automática igual a identidade no espaço do olho s = x p s = [ 1 0 0 0 ] t = y p t = [ 0 1 0 0 ] r = z p r = [ 0 0 1 0 ] q = w p q = [ 0 0 0 1 ] Matriz de textura codifica transformação M tex = M e W. Celes Técnicas de renderização com textura 15
Geração automática Primeira estratégia: Uso da matriz de textura Geração automática igual a identidade no espaço do olho s = x p s = [ 1 0 0 0 ] t = y p t = [ 0 1 0 0 ] r = z p r = [ 0 0 1 0 ] q = w p q = [ 0 0 0 1 ] Matriz de textura codifica transformação M tex = M e Requer cálculo da matriz de visualização inversa W. Celes Técnicas de renderização com textura 15
Geração automática Segunda estratégia: Codificação da matriz no gerador Codifica matriz Q no gerador M e = QV 1, Q = T 1/2 S 1/2 P p V p p s = [ Q 00 Q 01 Q 02 Q 03 ] p t = [ Q 10 Q 11 Q 12 Q 13 ] p r = [ Q 20 Q 21 Q 22 Q 23 ] p s = [ Q 30 Q 31 Q 32 Q 33 ] W. Celes Técnicas de renderização com textura 16
Geração automática Segunda estratégia: Codificação da matriz no gerador Codifica matriz Q no gerador M e = QV 1, Q = T 1/2 S 1/2 P p V p p s = [ Q 00 Q 01 Q 02 Q 03 ] p t = [ Q 10 Q 11 Q 12 Q 13 ] p r = [ Q 20 Q 21 Q 22 Q 23 ] p s = [ Q 30 Q 31 Q 32 Q 33 ] Carrega V no modelview na especificação dos planos Planos transformados para o espaço do olho p eye = V T p p T eye = p T V 1 W. Celes Técnicas de renderização com textura 16
Problemas com projeção de textura Projeção reversa Textura 1D pode eliminar contribuição Por exemplo, com teste de alpha Requer multi-textura Filtro anisotrópico é desejável Grande distorção devido à dupla projeção Redução e ampliação na mesma textura W. Celes Técnicas de renderização com textura 17
Aplicação Light mapping Mais apropriado, dark mapping W. Celes Técnicas de renderização com textura 18
Aplicação Light mapping Projeta textura sobre superfície Mapas, em geral, em baixa resolução W. Celes Técnicas de renderização com textura 19