Computao Grfica Textura Profa Mercedes Gonzales Mrquez Textura

  • Slides: 18
Download presentation
Computação Gráfica – Textura Profa. Mercedes Gonzales Márquez

Computação Gráfica – Textura Profa. Mercedes Gonzales Márquez

Textura l Modelos de iluminação não suficientes para descrever todas as características observáveis em

Textura l Modelos de iluminação não suficientes para descrever todas as características observáveis em uma superfície – Superfícies pintadas com padrões ou imagens l – Superfícies com padrões regulares l l l A capa ou uma página de um livro Tecidos ou uma parede de tijolos Esses detalhes podem ser modelados usando uma técnica chamada mapeamento de textura Textura consiste de um conjunto de valores que afetam os atributos de cada pixel de uma imagem, com a finalidade de aumentar realismo.

Textura l l l Estes valores pré-computados são tipicamente organizados em um arranjo multidimensional

Textura l l l Estes valores pré-computados são tipicamente organizados em um arranjo multidimensional de texels (texture elements em um espaço próprio, denominado espaço de textura. A ideia básica é reproduzir sobre a superfície do objeto as propriedades de alguma função ou mapeamento bidimensional. Na Figura ilustra-se o mapeamento de uma textura bidimensional (s, t) sobre a superfície de um objeto, proporcionando sensação de um tampo de mármore.

Textura

Textura

Aplicando textura em Open. GL l Três passos Especificar textura l l Ler ou

Aplicando textura em Open. GL l Três passos Especificar textura l l Ler ou gerar a imagem Carregar a textura Mapear coordenadas da textura a coordenadas de vértices Especificar parâmetros de textura l 5 Embrulhamento e filtragem

Aplicando texturas (detalhe) – – – 6 Especificar texturas em objetos de textura Setar

Aplicando texturas (detalhe) – – – 6 Especificar texturas em objetos de textura Setar filtros de textura Setar o modo de embrulhamento da textura Criar/Ligar objeto de textura Habilitar textura Especificar coordenadas de textura

Objetos de Textura l l Uma imagem por objeto de textura Gera nomes de

Objetos de Textura l l Uma imagem por objeto de textura Gera nomes de textura gl. Gen. Textures( n, *tex. Ids ); l Cria objetos de textura com dados de textura gl. Bind. Texture( target, id ); l 7 Liga texturas antes de usá-las gl. Bind. Texture( target, id );

Especificando Imagem de Textura l Define uma imagem de textura a partir de um

Especificando Imagem de Textura l Define uma imagem de textura a partir de um arranjo de texels gl. Tex. Image 2 D( target, level, components, w, h, border, format, type, *texels ); – 8 Dimensão da imagem deve ser potência de 2

Mapeando a Textura l l t Baseado em coordenadas paramétricas de textura Chamar gl.

Mapeando a Textura l l t Baseado em coordenadas paramétricas de textura Chamar gl. Tex. Coord*() para cada vértice Espaço de Textura 0, 1 Espaço do Objeto 1, 1 (s, t) = (0. 2, 0. 8) A a c (0. 4, 0. 2) b 0, 0 B 1, 0 s C (0. 8, 0. 4)

Modos de aplicação de texturas l Modo de filtro – – – l minificação

Modos de aplicação de texturas l Modo de filtro – – – l minificação ou magnificação Filtros especiais para Mipmap Modos de embrulhamento (clamp ou repeat) Funções de textura – Como misturar a cor primitiva com a cor da textura l 1 0 blend, modulate ou replace texels

Filtragem GL_TEXTURE_2 D GL_TEXTURE_1 D GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_FILTER GL_NEAREST GL_LINEAR GL_NEAREST_MIPMAP_NEAREST GL_NEAREST_MIPMAP_LINEAR GL_LINEAR_MIPMAP_NEAREST GL_LINEAR_MIPMAP_LINEAR Exemplo:

Filtragem GL_TEXTURE_2 D GL_TEXTURE_1 D GL_TEXTURE_MAG_FILTER GL_TEXTURE_MIN_FILTER GL_NEAREST GL_LINEAR GL_NEAREST_MIPMAP_NEAREST GL_NEAREST_MIPMAP_LINEAR GL_LINEAR_MIPMAP_NEAREST GL_LINEAR_MIPMAP_LINEAR Exemplo: gl. Tex. Parameteri( target, type, mode ); Textura Polígono Magnificação Textura Polígono Minificação

Texturas Mipmap Textura original Imagens minificadas pré-filtradas

Texturas Mipmap Textura original Imagens minificadas pré-filtradas

Texturas Mipmap l l l Permite que texturas de diferentes níveis de resolução sejam

Texturas Mipmap l l l 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 gl. Tex. Image*D( GL_TEXTURE_*D, level, … )

Modos de Repetição l Exemplo: gl. Tex. Parameteri( GL_TEXTURE_2 D, GL_TEXTURE_WRAP_S, GL_CLAMP ) gl.

Modos de Repetição l Exemplo: gl. Tex. Parameteri( GL_TEXTURE_2 D, GL_TEXTURE_WRAP_S, GL_CLAMP ) gl. Tex. Parameteri( GL_TEXTURE_2 D, GL_TEXTURE_WRAP_T, GL_REPEAT ) t s textura GL_REPEAT GL_CLAMP

Funções de Textura l Controla como a cor da textura afeta a cor do

Funções de Textura l Controla como a cor da textura afeta a cor do pixel gl. Tex. Env{fi}[v](GL_TEXTURE_ENV, prop, param ) l Modos (prop = TEXTURE_ENV_MODE) – – – l GL_MODULATE GL_BLEND GL_REPLACE Cor a ser misturada (GL_BLEND) – Especificada com prop = GL_TEXTURE_ENV_COLOR

Exercícios l Open. GL permite carregar texturas externas e também construir texturas sintéticas (ou

Exercícios l Open. GL permite carregar texturas externas e também construir texturas sintéticas (ou procedurais). O programa load. Textures. cpp (pasta Code) carrega uma textura externa de um lançamento de nave espacial e gera internamente uma imagem xadrez. Então aplica alternadamente as duas em um retângulo, ao apertar a barra espaçadora. .

Exercícios Observações: l A pasta Textures deve estar no mesmo local que o programa

Exercícios Observações: l A pasta Textures deve estar no mesmo local que o programa l O programa usa a rotina get. BMPData() para ler arquivos de imagens, portanto as texturas aplicadas devem estar no formato bmp 24 -bits. Arquivos em outros formatos devem ser convertidos a este. Use por exemplo o Paint do Windows para fazer esta conversão. l Open. GL requer que as dimensões das texturas sejam potências de 2. Arquivos de dimensões diferentes

Exercícios l O programa textured. Cylinder. cpp (site) apresenta três opções de textura (2

Exercícios l O programa textured. Cylinder. cpp (site) apresenta três opções de textura (2 procedurais e uma textura externa) as quais podem ser aplicadas em um cilindro construído por quadricas.