Mapeamento de Texturas

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

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

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

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

Fundamentos de Computação Gráfica. Texturas

Computação Gráfica - 13

Computação Gráfica - 13

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

Computação Gráfica. Texturas

Computação Gráfica. Texturas

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

Visibilidade. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Edward Angel, Cap. 7 Apontamentos CG

Introdução Geral a Computação Gráfica. Universidade Católica de Pelotas Curso de Engenharia da Computação Disciplina de Computação Gráfica

Pipeline de Visualização 3D

Mapeamento de Textura

António Costa. Paulo Roma Cavalcanti

2º Exame. Computação Gráfica

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

Transformações 3D. Soraia Raupp Musse

Cap. 9 Texturas Engenharia Informática (5385) - 2º ano, 2º semestre

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

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

Computação Gráfica e Processamento de Imagens. - Sistemas 3D (conceitos básicos) Prof. Julio Arakaki

Pipeline de Visualização 2D

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

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

Implementação do algoritmo Marching Cubes usando shaders. Luiz Fernando Oliveira Corte Real

Transformações de Visualização 2D: Clipping. Antonio L. Bajuelos Departamento de Matemática Universidade de Aveiro

1º Teste Computação Gráfica

Sumário COMPUTAÇÃO GRÁFICA E INTERFACES. Modelos e modelagem. Modelos e modelagem. Transformações Geométricas e Visualização 2D

Geração Procedural de Terrenos em GPU

Reflexões e Sombras em Superfícies Planares Animação e Visualização Tridimensional Prof. João Madeiras Pereira Instituto Superior Técnico 2005/2006

Engenharia Informática Computação Gráfica

FUNDAMENTOS E APLICAÇÕES. Luis Valente

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

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

Algoritmos de Recorte em 2D

Exame de Época Especial Computação Gráfica

Transformações Geométricas

Exame de 1ª Época Computação Gráfica

Computação Gráfica - 09

Transformações (Cap 4.3, 4.4 e 4.6 a 4.10)

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

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

Materiais e UVW Map Renderizar com Rhino parte #03

Computação Gráfica. Exame de Época Especial de. Nº Nome:

Cosmo Worlds. truques & dicas. cosmo Worlds. José Carlos Miranda 1

Computação Gráfica 09

Pipeline de Visualização Câmara Virtual

Computação Gráfica II

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

Visibilidade. Apontamentos CG + Edward Angel, Sec Instituto Superior Técnico Computação Gráfica 2009/2010

Coloração (Shading)e Iluminação global

Computação Gráfica - 09

Triangulação Mapeamento em Viewport Modelação Geométrica

Exame de 2ª Época Computação Gráfica

Transcrição:

Licenciatura em Engenharia Informática e de Computadores Computação Gráfica Mapeamento de Texturas

Texturas Quando o resultado começa a parecer real Superfícies no mundo real são muito complexas Não se pode modelar todos os pequenos detalhes Como podemos então adicionar detalhe na superfície? Modelo Geométrico Modelo Geométrico + 2013 Corpo docente de Computação Gráfica Sombreamento / CG&M / DEI / IST / UTL Modelo Geométrico + Sombreamento + Texturas

Motivação Limites da Modelação Geométrica Placas gráficas pintam +100M polígonos / segundo Insuficiente para criar realismo em Nuvens Relva Terreno Pele

Exemplo Modelação de uma Laranja Queremos modelar uma laranja Começamos com uma esfera laranja Demasiado simples Substituir esfera por forma mais complexa Não trivial representar detalhes Demasiados polígonos necessários

Exemplo Modelação de uma Laranja Solução: Tirar foto de uma laranja Aplicar imagem na esfera Texture Mapping Não é suficiente porque esfera é lisa É necessário alterar a forma Usa-se bump-mapping Bump Mappping

Mapeamento de Texturas Três tipos diferentes de mapeamento Texture Mapping Usa imagens para preencher os polígonos Bump Mapping Altera as normais à superfície durante a visualização Environment (reflection) Mapping Usa um snapshot da cena para fazer texture mapping Permite simular superfícies altamente especulares sem traçado de raios

Modelo Sombreado

Texture Mapping

Environment Mapping

Bump Mapping

Onde acontece o mapeamento? No final do pipeline Eficiente porque poucos polígonos passam o recorte

Mapeamento de texturas: é simples? Apesar de ser simples mapear imagem na superfície Há 3 ou 4 sistemas de coordenadas envolvidos 2D image 3D surface

Sistemas de Coordenadas Coordenadas da Textura (s, t) Parameteriza pontos na textura com 2 coordenadas: (s,t) Coordenadas do Mundo (x, y, z) Conceptualmente, onde o mapeamento tem lugar Coordenadas do Dispositivo Onde a imagem final é realmente reproduzida (viewport coord + depth info)

Mapeamento Texturas parametric coordinates texture coordinates world coordinates device coordinates

Mapeamento de coordenadas Textura Superfície n Considere o mapeamento das coordenadas da textura para um ponto na superfície: dada uma posição (s,t) na textura, qual é a posição (x,y,z) na superfície? n Aparentemente precisamos de: n x = X(s, t) n y = Y(s, t) t (x,y,z) n z = Z(s, t) s n Mas na realidade queremos fazer exactamente o inverso The image cannot be displaye t s

Backward Mapping Na realidade queremos andar para trás Dado um fragmento, queremos saber a que ponto do objecto corresponde Dado um ponto no objecto, queremos saber a que ponto na textura ele corresponde Precisamos de ter um mapeamento s = s(x,y,z) t = t(x,y,z) Estas funções difíceis de determinar genericamente Com polígonos: Especificam-se as coordenadas (s,t) nos vértices Interpola-se (s,t) para os restantes pontos

Mapeamento de Texturas Mapeamento de Textura adiciona detalhe na superficie ao mapear padrões de textura na superfície. O padrão pode ser repetido. Por examplo, o padrão de textura (texture pattern) para o cubo à direita é: Texel = texture element. Um texel é um pixel numa textura. Por examplo, uma textura 128x128 tem 128x128 texels. No ecrã isto podem resultar em mais ou menos pixeis dependendo da distância a que está o objecto e como está escalado.

Como definir coordenadas de textura (s,t)? Defnir as coordenadas manualmente Definirmos nós as coordenadas para cada vértice Calcular as coordenadas automaticamente Usar um algoritmo que define as coordenadas da textura para nós

Especificação Manual Podemos especificar manualmente as coordenadas para cada vértice:

Mapeando Textura em Polígonos. gltexcoord2f(0.5, 0.5); glvertex3fv (10.2,3.4,4.5);.

Texturas em OpenGL Passos básicos Criar um objecto textura e espeficar a textura para esse objecto (glgentextures() and glbindtexture()); Definir os parâmetros da textura (gltexparameter(), glteximage() and gltexenv()); Activar o uso de texturas Desenhar a cena, fornecendo as coordenadas da geométricas e da textura

Criar um Objecto Textura

Especificar uma textura imagem Definir a textura imagem a partir de um array de texels em memória Glubyte my_texels[512][512][4]; Activar mapeamento de texturas glenable(gl_texture_2d)

Definir Imagem como Textura Chamar glteximage2d. Carrega a textura da memória do CPU para a memória vídeo do OpenGL, onde fica pronta a usar. glteximage2d(target, level, components, w, h, border, format, type, texels ); target: tipo textura, e.g. GL_TEXTURE_2D level: usado para mipmapping (não estudado em CG) components: elementos por texel na memória vídeo w, h: largura e altura border: usado para suavizar o repeat (não estudado em CG) format and type: descreve os texels na memória do CPU texels: ponteiro para o array de texels Example: set the current image texture: glteximage2d(gl_texture_2d, 0, GL_RGBA, 512, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, my_texels);

Convertendo uma imagem em textura OpenGL requer que as dimensões das texturas sejam potências de 2 Dimensões não inferiores a 64x64 Se as dimensões da image não são uma potência de 2 gluscaleimage( format, w_in, h_in, type_in, *data_in, w_out, h_out, type_out, *data_out ); data_in is source image data_out is for destination image A imagem é interpolada e filtrada durante a escala

Mapeando a Textura Baseado nas coordenadas parametricas da textura gltexcoord*() especificado em cada vértice t 0, 1 Texture Space a 1, 1 Object Space (s, t) = (0.2, 0.8) A c b 0, 0 1, 0 s (0.4, 0.2) B C (0.8, 0.4)

Código Típico

Wrapping Modes Atribuir coordenadas de textura fora do intervalo [0,1]: cortar ou repetir a textura Clamping: if s,t > 1 use color at 1, if s,t < 0 use color at 0 gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_S, GL_CLAMP); Repeating : use s,t modulo 1 gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_T, GL_REPEAT);

Tiling Repetitivo de Texturas Uma textura pode ser repetida através da superfície repetindo a parametrização (s,t) ao longo da superfície Os melhores efeitos obtém quando a textura facilmente composta em azulejos Isto significa que o lado direito da textura se junta suavemente com o lado esquerdo (o mesmo para o topo e fundo)

Magnification and Minification Mais de um texel para um pixel (minification) Mais de um pixel para um texel (magnification) point sampling (nearest texel) ou filtro linear (filtro 2 x 2) para obter valor da textura Textura Magnification Polígono Textura Minification Polígono

Modos de Filtragem Modos determinados por gltexparameteri( target, type, mode ) gltexparameteri(gl_texture_2d, GL_TEXURE_MAG_FILTER, GL_NEAREST); gltexparameteri(gl_texture_2d, GL_TEXURE_MIN_FILTER, GL_LINEAR); Nota: Filtro linear requer a margem com extra texel para filtrar nas arestas (border = 1) 31

Filtro de Minification Um pixel mapeia a vários texels Comum em vistas perspectivas Mau mapeamento de texturas deforma o tabuleiro Usando Mipmaps melhora-se o mapeamento, reduzindo a deformação do tabuleiro

Mipmaps Ideia base: criar texturas de tamanho decrescente usar a subtextura apropriada Pre-filtrar as texturas (mipmaps)

Mipmaps: Optimização no Armazenamento Lados da textura devem ser potências de 2

Sumário sobre Flitragem Zoom-in => filtro Magnification Zoom-out => filtro Minification Filtros mais avançados necessitam mais tempo de computação mas produzem melhores resultados Mipmapping é um filtro Minification avançado

Texturas em Mipmap Mipmapping permite o uso de texturas pre-filtradas de resoluções decrescentes Reduz erros de interpolação para pequenos objectos texturados Declara-se o nível do mipmap durante a definição da textura glteximage2d( GL_TEXTURE_*D, level, ) Nota: Não têm de usar mipmaps nos laboratórios!

Exemplo point sampling linear filtering mipmapped point sampling mipmapped linear filtering

Função de Textura Controla como a textura é aplicada gltexenv{fi}[v](gl_texture_env, prop, param ) prop pode ser: GL_TEXTURE_ENV_MODE GL_TEXTURE_ENV_COLOR Modos GL_TEXTURE_ENV_MODE modes GL_MODULATE: modula com o sombreamento calculado GL_BLEND: mistura com uma cor ambiente GL_REPLACE: usa só a cor da textura Example: gltexenvi(gl_texture_env, GL_TEXTURE_ENV_MODE, GL_MODULATE); Definir cor de blending com GL_TEXTURE_ENV_COLOR e usar em conjunto com GL_BLEND

GL_TEXTURE_ENV_MODE modes RGBA MODE f = fragmento, t = textura, c = GL_TEXTURE_ENV_COLOR

Correcção de Perspectiva Coordenadas da textura e interpolação da cor Podem ser lineares no espaço do dispositivo Ou pode-se usar valores de profundidade/perspectiva (+lento) Especialmente para polígonos on edge glhint( GL_PERSPECTIVE_CORRECTION_HINT, hint ) Em que hint pode ser: GL_DONT_CARE GL_NICEST GL_FASTEST

Aplicar Texturas 1. Especificar texturas dos objectos 2. Definir o filtro de textura 3. Definir o Wrapping Mode 4. Definir a função de textura 5. Fazer o bind ao objecto textura 6. Activar o uso de texturas 7. Indicar coordenadas de textura para cada vértice

Exemplo do uso de Texturas A textura é imagem de 256 x 256 mapeada num polígono rectangular visualizado em perspectiva