Texturas. André Tavares da Silva. Baseado no material de Claudio Esperança e Paulo Roma Cavalcanti

Documentos relacionados
Introdução à Computação Gráfica Texturas

Detalhes de Superfícies. Introdução à Computação Gráfica Texturas. Propriedades Mapeáveis. Mapeamento de Textura

Mapeamento de Texturas 2D. Maria Cristina F. de Oliveira 2013

FCTUNIVERSIDADE NOVA DE LISBOA!

Computação Gráfica - 13

Mapeamento de Texturas

Tomás Antônio Costa Badan. Mapa de Textura: O Básico

Computação Gráfica - 13

Mapeamento de Texturas

Texturas. Aula 7. Sistemas Gráficos e Interactivos Instituto Superior de Engenharia do Porto. Paulo Gandra de Sousa

Mas essas alternativas podem ser inviáveis para superfícies imprevisíveis e muito. Podemos aumentar o nível de detalhes da

REFINAMENTO DE MALHA

Fundamentos de Computação Gráfica. Texturas

Computação Gráfica. Texturas

Computação Gráfica 5385: Licenciatura em Engenharia Informática. Chap. 10 Texturas. Texturas

Mapeamento de Texturas

Mapeamento de Texturas

Técnicas de Mapeamento

Geração de imagens com texturas utilizando OpenGL

Textura e Iluminação

FCTUNIVERSIDADE NOVA DE LISBOA!

Abstract Node Types. X3D Profiles. X3DChildNode. X3DChildNode X3DBoundedObject X3DGroupingNode X3DInfoNode X3DUrlObject (Interface)

Shading (sombreamento) & Smooth Shading

Shading (sombreamento) & Smooth Shading

Instituto Tecnológico de Aeronáutica. Prof. Carlos Henrique Q. Forster Sala 121 IEC. Luiz Felipe Simões Hoffmann

Capítulo 3 Primeiros Passos em OpenGL Função Desenha Função Teclado Função Inicializa Programa Principal...

Geração de Geometria - Terrenos

OpenGL #2: Brincando com Pixels

Mapeamento de Texturas

Computação Gráfica. Texturas

Computação Gráfica - 07

AdaptiveShadowMaps. Randima Fernando Sebastian Fernandez Kavita Bala Donald P. Greenberg Apresentado por Claudio Esperança

4 Técnicas de Renderização HDR

aula 22 Texturas IC/UFF 2017 Aura

Geração Procedural de Terrenos em GPU

Introdução à Computação Gráfica Ray Tracing. Claudio Esperança Paulo Roma Cavalcanti

Mapeamento de Textura

Computação Gráfica - 09

2º Exame de Animação e Visualização Tridimensional

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 6. Projeções

UNIVERSIDADE FEDERAL FLUMINENSE Pedro Martins Menezes. Um estudo dos estágios dos pipelines gráficos

Computação Gráfica - 09

Visualização por Computador: Teoria, Prática e Aplicações

CG 2013/2014 Segundo Teste LEIC Alameda/Taguspark

Técnicas de renderização com textura

Lista de exercícios. 4) Defina o conceito de função de eficiência luminosa. (Victor)

CG 2015/2016 Prova de Repescagem LEIC Alameda/Taguspark. 12 de Janeiro de 2016

FUNDAMENTOS E APLICAÇÕES. Luis Valente

Características Principais. Introdução à Computação Gráfica Ray Tracing. Ray Casting. Contexto Histórico. Claudio Esperança Paulo Roma Cavalcanti

Computação Gráfica. GLSL - Programação de Shaders Toon Mapping; Texturas

Rendering de Polígonos. Determinação de Superfícies Visíveis. Back Face Culling. Back Face Culling. Back Face Culling. Back Face Culling.

Introdução à Computação Gráfica. Claudio Esperança Paulo Roma Cavalcanti

Introdução à Computação Gráfica

TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICA

Computação Gráfica Conf. 6: Iluminação e materiais. ISUTIC Eng. Alexander Rodríguez Bonet

Processamento de Imagens CPS755

3D no OpenGL. Visualização e Transformações Perspectiva. Transformações do Modelview. Processo

INF1339 Computação Gráfica Tridimensional. Waldemar Celes. 10 de Agosto de 2010

Introdução. 1 Introdução

Iluminação em OpenGL. André Tavares da Silva.

Modelos Geométricos Transformações

Por favor, notar que o PRO100 V5 exige uma placa gráfica do tipo: NVidia GeForce 9600, ATI Radeon X 1700 ou mais recentes

Pipeline de Visualização 3D

PROGRAMAÇÃO OPENGL LIVRO: TEORIA DA COMPUTAÇÃO GRÁFICA

CG com OpenGL. Paulo Gandra de Sousa Sistemas Gráficos e Interactivos Instituto Superior de Engenharia do Porto

Aula Prática Laboratorial n.º 8, nº 9 e nº 10

Introdução à Computação Gráfica Iluminação. Claudio Esperança Paulo Roma Cavalcanti

Transformações 3D. Soraia Raupp Musse

Ray-Tracing. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Edward Angel, Cap. 13 Apontamentos CG

Engenharia Informática Computação Gráfica

Um Estudo das Técnicas de Obtenção de Forma a partir de Estéreo e Luz Estruturada para Engenharia

Computação Gráfica. Prof. André Yoshimi Kusumoto

António Costa. Paulo Roma Cavalcanti

IntMu.Lab5. Importe os ficheiros disponibilizados em

Visualização Interativa de Modelos Massivos de Engenharia na Indústria de Petróleo com o Algoritmo de Voxels Distantes

Operações sobre Fragmentos

3 Fundamentos. 3.1 Pipeline de renderização em OpenGL

Transformações 3D. Soraia Raupp Musse

vértices dessas células. Exemplos de malhas estruturadas e não-estruturadas são apresentados na Figura 2.

Bruno Pereira Evangelista. Pontifícia Universidade Católica de Minas Gerais

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark. Terceiro Teste 19 de Maio de 2012

Resumo. Ray Tracing. Introdução. Ray Casting Básico. Idéia

Processamento de Malhas Poligonais

Introdução ao Processamento e Síntese de imagens -Linhas e superfícies escondidas

Computação Gráfica - 13

Tópicos Especiais em Engenharia de Software (Jogos II)

5 Implementação Visão Geral do Mob3D

Computação Gráfica. Desempenho

Programa Anual MATEMÁTICA EXTENSIVO

Computação Gráfica. Engenharia de Computação. CEFET/RJ campus Petrópolis. Prof. Luis Retondaro. Aula 2. Introdução a OpenGL

Raytracing. 35T56 Sala 3E3 Bruno Motta de Carvalho DIMAp Sala 15 Ramal 227 DIM102

Desenvolvimento de jogos tridimensionais com OpenGL. Bruno Pereira Evangelista

2º Exame de Animação e Visualização Tridimensional

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda / Taguspark. 1º Exame 6 de Junho de 2011

CG 2015/2016 Segundo Teste LEIC Alameda/Taguspark. Segundo Teste. 18 de Novembro de 2015

Computação Gráfica LEI / LCC Departamento de Informática Universidade do Minho. Desempenho. Display Lists e Vertex Bufer Objects

Prof. Fernando V. Paulovich 3 de agosto de SCC Computação Gráca

Capítulo 3. Descrição e visualização do modelo 25

Transcrição:

Texturas André Tavares da Silva andre.silva@udesc.br Baseado no material de Claudio Esperança e Paulo Roma Cavalcanti

Detalhes de Superfícies Modelos de iluminação não são apropriados para descrever todas as diferenças de cor observáveis em uma superfície Superfícies pintadas com padrões ou imagens A capa ou uma página de um livro Superfícies com padrões de rugosidade Tecidos ou uma parede de tijolos Em princípio é possível modelar esses detalhes com geometria e usando materiais de propriedades óticas distintas

Modelar cada detalhe?

Detalhes de Superfícies Modelos de iluminação não são apropriados para descrever todas as diferenças de cor observáveis em uma superfície Superfícies pintadas com padrões ou imagens A capa ou uma página de um livro Superfícies com padrões de rugosidade Tecidos ou uma parede de tijolos Em princípio é possível modelar esses detalhes com geometria e usando materiais de propriedades óticas distintas Na prática, esses efeitos são modelados usando uma técnica chamada mapeamento de textura

Mapeamento de Textura A ideia é reproduzir sobre a superfície de algum objeto da cena as propriedades de alguma função ou mapa - bidimensional (cor, por exemplo)

Mapeamento de Textura

Propriedades Mapeáveis Quais parâmetros ou propriedades pode-se reproduzir a partir de mapas: Cor (coeficientes de reflexão difusa) Coeficientes de reflexão especular e difusa Mapeamento de ambiente Perturbação do vetor normal Bump Mapping Perturbação da superfície na direção da normal Displacement Mapping Transparência / opacidade

Espaço de Textura Texturas 2D são funções T (s, t) cujo domínio é um espaço bidimensional e o contradomínio pode ser cor, opacidade, etc É comum ajustar a escala da imagem de tal forma que a imagem toda se enquadre no intervalo 0 s, t 1 Normalmente a função em si é derivada de alguma imagem capturada Se a imagem está armazenada numa matriz Im [0..N 1, 0..M 1] Então T (s, t) = Im [ (1 t) N, s M ] t 1 0 0 1 s

Pode ser vantajoso assumir que o padrão da imagem se repete fora desse intervalo T (s, t) = Im [ (1 t) N mod N, s M mod M ] A função de textura pode ser também definida algebricamente: T 2 ( s, t) ( s 0.5) ( t Espaço de Textura 0.5) 2

Função de Mapeamento Retorna o ponto do objeto correspondente a cada ponto do espaço de textura (x, y, z) = F (s, t) Corresponde à forma com que a textura é usada para embrulhar (wrap) o objeto Na verdade, na maioria dos casos, precisamos de uma função que nos permita desembrulhar (unwrap) a textura do objeto, isto é, a inversa da função de mapeamento Se a superfície do objeto pode ser descrita em forma paramétrica esta pode servir como base para a função de mapeamento

Parametrização da Esfera cos ), ( sin sin ), ( cos sin ), ( z y x x y z φ s t 2π π x y z arctan arccos 2 arctan arccos x y s z t Função de mapeamento Função de mapeamento inversa

Parametrização do Cilindro z Função de mapeamento x y z cos sin z 2π z t s y x Função de mapeamento inversa arctan z z y x s t 2π z

Parametrizando Objetos Genéricos O que fazer quando o objeto não comporta uma parametrização natural? Uma sugestão é usar um mapeamento em 2 estágios [Bier e Sloan]: Mapear textura sobre uma superfície simples como cilindro, esfera, etc aproximadamente englobando o objeto Mapear superfície simples sobre a superfície do objeto. Pode ser feito de diversas maneiras Raios passando pelo centróide do objeto Raios normais à superfície do objeto Raios normais à superfície simples Raios refletidos (environment mapping)

Exemplos Parametrização cúbica Projetada em uma esfera Projetada em um cilindro

Exemplos Parametrização cilíndrica Projetada em uma esfera Projetada em um cubo

Exemplos Parametrização esférica Projetada em um cubo Projetada em um cilindro

Processo de Mapeamento de Texturas Projeção do pixel sobre a superfície Pontos da superfície correspondentes aos vértices do pixel Parametrização Coordenadas paramétricas dos vértices do pixel projetados Mapeamento inverso Coordenadas dos vértices no espaço de textura Média Cor média dos Texels proporcional à àrea coberta pelo quadrilátero v u j i t s

Mapeamento de Texturas em Polígonos Polígonos são freqüentemente usados para representar fronteiras de objetos Em OpenGL, além das coordenadas dos vértices e do vetor normal, é possível também especificar coordenadas de textura: glbegin (GL_POLYGON); glnormal3fv (N); gltexcoord2fv (T); glvertex3fv (V);... glend ();

Mapeamento de Texturas em Polígonos A maneira mais simples e rápida: Projetar os vértices do polígono na imagem A cada vértice projetado P i corresponde um ponto Q i no espaço de textura Um pixel P do polígono na imagem é dado por uma combinação afim. Ex.: P = 1 P 1 + 2 P 2 + 3 P 3 Pixel P é pintado com a cor do texel obtido com a mesma combinação afim. Ex.: Q = 1 Q 1 + 2 Q 2 + 3 Q 3

Mapeamento de Texturas em Polígonos Problemas da abordagem simples: Aliasing Pixel < > Texel Soluções: Interpolação Mip-mapping Deformação Combinações afim não são preservadas em projeções perspectivas Soluções: Mais vértices Coordenadas homogêneas

Mapeamento de Texturas em OpenGL 1. Ligar o mapeamento de texturas glenable(gl_texture_2d); 2. Especificar a textura Usar glteximage2d que tem o formato void glteximage2d (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); Exemplo: glteximage2d (GL_TEXTURE_2D, 0, GL_RGBA, 128, 128, 0, GL_RGBA, GL_UNSIGNED_BYTE, img);

Mapeamento de Texturas em OpenGL 3. Configurar diversos parâmetros Modos de filtragem Magnificação ou minificação Filtros mipmap de minificação Modos de repetição de padrões Cortar ou repetir Funções de aplicação de textura Como misturar a cor do objeto com a da textura Misturar, modular ou substituir texels 4. Especificar coordenadas de textura Por vértice gltexcoord* Coordenadas computadas autometicamente gltexgen*

Especificando imagem de textura Imagem de textura normalmente carregada a partir de um array de texels na memória principal glteximage2d( target, level, components, w, h, border, format, type, *texels ); antigamente: tamanho da imagem em potência de 2 Cores dos texels são processadas pela parte do pipeline que processa pixels Boa parte do repertório de operações sobre bitmaps pode ser usada

Outros métodos para especificar texturas Usar o frame buffer como fonte da imagem de textura glcopyteximage1d(...) glcopyteximage2d(...) Modificar parte de uma textura pré-definida gltexsubimage1d(...) gltexsubimage2d(...) gltexsubimage3d(...)

Mapeando a Textura Baseado em coordenadas paramétricas de textura Chamar gltexcoord*() para cada vértice t 0, 1 Espaço de Textura a 1, 1 Espaço do Objeto (s, t) = (0.2, 0.8) A b c 0, 0 1, 0 s (0.4, 0.2) B C (0.8, 0.4)

Gerando Coordenadas de Texturas Automaticamente Habilitar a geração automatica de coordenadas de textura glenable (GL_TEXTURE_GEN_{STRQ}); Especificar parâmetros void gltexgen{ifd} (GLenum coord, GLenum pname, TYPE param); void gltexgen{ifd}v (GLenum coord, GLenum pname, TYPE *param); Qual coordenada de textura? Coord = GL_S / GL_T / GL_R / GL_Q Plano de referência Pname = GL_OBJECT_PLANE / GL_EYE_PLANE Param = coeficientes A/B/C/D do plano Modos de geração de coordenadas Pname = GL_TEXTURE_GEN_MODE Param = GL_OBJECT_LINEAR / GL_EYE_LINEAR / GL_SPHERE_MAP

Geração Automática de Coordenadas de Textura GL_EYE_LINEAR

Geração Automática de Coordenadas de Textura GL_OBJECT_LINEAR

Texturas Mipmap Textura original Imagens minificadas pré-filtradas

Texturas Mipmap Permite que texturas de diferentes níveis de resolução sejam aplicadas de forma adaptativa Reduz aliasing devido a problemas de interpolação O nível da textura na hierarquia mipmap é especificada durante a definição da textura glteximage*d( GL_TEXTURE_*D, level, ) GLU possui rotinas auxiliares para construir texturas mipmap com filtragem adequada glubuild*dmipmaps( ) OpenGL 1.2 suporta facilidades mais sofisticadas para níveis de detalhe (LOD)

Modos de Repetição Exemplo: gltexparameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ) gltexparameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ) t textura s GL_REPEAT GL_CLAMP

Modos de Aplicação de Textura Controla como a cor da textura afeta a cor do pixel gltexenv{fi}[v](gl_texture_env, prop, param ) Modos (prop = TEXTURE_ENV_MODE) GL_MODULATE GL_BLEND GL_REPLACE Cor a ser misturada (GL_BLEND) Especificada com prop = GL_TEXTURE_ENV_COLOR

Correção Perspectiva Mapeamento de texturas em polígonos pode ser feito: Da forma simples e rápida (interpolação linear) Usando interpolação em coordenadas homogêneas Comportamento do OpenGL é influenciado por dicas ( hints ) glhint( GL_PERSPECTIVE_CORRECTION_HINT, hint ) onde hint pode ser GL_DONT_CARE GL_NICEST GL_FASTEST O OpenGL não necessariamente obedece!

Outras Facilidades Objetos de Textura (Texture Objects) Permite mudar rapidamente de texturas durante a renderização de diversos objetos Controle de espaço na memória de texturas Texturas residentes na placa são mais rápidas Multitexturas (Extensões OpenGL) Placas + modernas (NVidia GeForce /ATI Radeon) Mais de uma textura mapeada no mesmo objeto Permite uma série de efeitos interessantes Shadow mapping Bump mapping