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

Documentos relacionados
Mapeamento de Texturas

Mapeamento de Texturas

Mapeamento de Texturas

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

Computação Gráfica - 13

Computação Gráfica - 13

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

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

REFINAMENTO DE MALHA

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

Fundamentos de Computação Gráfica. Texturas

Mapeamento de Texturas

Shading (sombreamento) & Smooth Shading

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

Shading (sombreamento) & Smooth Shading

Técnicas de Mapeamento

FCTUNIVERSIDADE NOVA DE LISBOA!

Computação Gráfica. Texturas

Computação Gráfica. Texturas

Geração de Geometria - Terrenos

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

Mapeamento de Textura

FCTUNIVERSIDADE NOVA DE LISBOA!

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

OpenGL #2: Brincando com Pixels

Geração de imagens com texturas utilizando OpenGL

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

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

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

Real-time High Dynamic Range Image-based Lighting

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

Geração Procedural de Terrenos em GPU

António Costa. Paulo Roma Cavalcanti

aula 22 Texturas IC/UFF 2017 Aura

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

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

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

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

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

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

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

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

Materiais e UVW Map Renderizar com Rhino parte #03

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

IntMu.Lab5. Importe os ficheiros disponibilizados em

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

Mapeamento de Texturas

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

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

INF2610 Renderização em Tempo Real. Waldemar Celes. 23 de Março de 2017

Renderização não fotorealista

Estudando para a P2-2018

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

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

Mapeamento de Materiais. Processo de Acabamento Virtual Professor: João Humberto Camelini /MSN:

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

Engenharia Informática Computação Gráfica

Instituto Tecnológico de Aeronáutica. Prof. Carlos Henrique Q. Forster Sala 121 IEC

COMPUTAÇÃO GRÁFICA - PROF. MSC. LEANDRO TONIETTO SELEÇÃO DE OBJETOS EM OPENGL - SELECT BUFFER

4 Técnicas de Renderização HDR

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

10 PROBLEMAS + COMUNS NO V-RAY E COMO CORRIGI-LOS. Problemas ou Erros?

Computação Gráfica - OpenGl 02

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

Sistemas Gráficos e Modelos

Os computadores processam dados digitais ou discretos. Os dados são informação representada num sistema digital de símbolos.

Revisão. Soraia Raupp Musse

Objetivos: Familiarizar-se com o interface do Maya. Criar modelos e cenários virtuais com forte vertente na animação tridimensional.

4 Impostores com Relevo

Resumo. Computação Gráfica: Uma Proposta de Plano Pedagógico. Áreas Correlatas. Definição. Uma Visão Integrada da C.G.

Textura e Iluminação

Iluminação e Sombreamento

Curso: Especializado Maya

CG 2013/2014 Segundo Teste LEIC Alameda/Taguspark

Nº Nome: Antes de começar: Identifique todas as folhas com o seu número.

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

Imagem e Gráficos. vetorial ou raster?

Modelo gráfico do VTK: fundamentos e aplicações

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

Iluminação e Sombreamento

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

Sumário. Bibliografia

Processing - Imagem 1. Processing. Imagem (PImage) Jorge Cardoso

aula 21 Tecnicas de Iluminação Global IC/UFF 2017 Aura

FUNDAMENTOS E APLICAÇÕES. Luis Valente

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA DEPARTAMENTO DE INFORMÁTICA APLICADA

Iluminação. Computação Gráfica LEI / LCC Departamento de Informática Universidade do Minho

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

Modelo gráfico do VTK: fundamentos e aplicações

Rendering Volumétrico Direto A versão resumida. Haim Levkowitz Maria Cristina F. de Oliveira Rosane Minghim

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

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

Tutorial 3ds Max Modelar e texturizar maçãs

Computaçã. Visão Geral. Sistema Gráfico. Computação Gráfica. Pixels. Sistema Gráfico e o Frame Buffer. Introdução à Computação Gráfica

Exercícios Práticos HTML5 + CSS3. Profa. Flávia Pereira de Carvalho

4 Processamento Paralelo

Fluxo de Trabalho Básico Modelar o ambiente Atribuir materiais aos objetos Adicionar luzes Posicionar câmeras Renderizar a cena Animar

Enquadramento e Conceitos Fundamentais

Transcrição:

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

Sumário : Objectivos Noção de textura Motivação Mapeamento de textura, padrões de textura e texels Mapeamento de texturas em polígonos, interpolação de texturas Modos de aplicação de texturas Mapeamento de texturas em objectos geométricos

Objectivos Introduzir métodos de mapeamento: Mapeamento de textura (texture mapping) Mapeamento ambiental (environmental mapping) Mapeamento rugoso (bump mapping) Mapeamento de luz (light mapping) Não serão ensinados! Considera-se duas estratégias básicas: Especificação manual de coordenadas Mapeamento automático em duas fases Não será ensinado!

Noção de textura Definição: É uma imagem com componentes RGB e alpha. Mapeamento de textura: É um método para criar complexidade numa imagem sem o ónus de construir grandes modelos geométricos.

Motivação I: aumentar realismo Contexto: A coloração interpolada de Gouraud/Phong parecem ter uma aparência um pouco plástica. Texturização: Os efeitos de textura podem ser adicionados para dar uma aparência mais realística à superfície. Técnicas de texturização: Mapeamento de textura (texture mapping) Utiliza um padrão que é colocado na superfície dum objecto. Mapeamento de luz (light maps) Light maps combinam textura e luz através de um processo de modulação Mapeamento de rugosidade (bump mapping) A superfície suave é distorcida para obter o efeito rugoso na superfície Mapeamento ambiental É mapeamento de reflexão que permite resultados semelhantes ao ray tracing texture map light map bump map reflection map

Motivação I: aumentar detalhe à superfície A solução óbvia não é a melhor: Dividir uma cena em polígonos cada vez mais pequenos aumenta o detalhe Mas é muito difícil de modelar e muito oneroso de renderizar em termos de tempo A solução preferida é usar mapeamento de textura: Tipicamente uma imagem 2D decalcada em objectos 1 Exemplos: Modelo de t-shirt com logo 1 não há necessidade de modelar as letras nem nenhum processamento de triângulos usa-se um polígono de dimensões grandes 2 2 colora-se o polígono com uma foto Iluminação súbtil da parede 3 não há necessidade de calculá-la em cada frame não há necessidade de modelá-la com vários triângulos de cor constante decalca-se a foto num polígono grande Também funciona em superfícies não complanares divide-se a superfície em partes 3 4 atribui-se uma região fotográfica a cada parte da superfície Exemplos de modulação de cor, rugosidade, brilho, e transparência com a mesma geometria esférica 4

Texturas e Realismo Em que ponto, os objectos e a cena começam a parecer reais? Superfícies de objectos do mundo selvagem são muito complexas. Não se pode modelar as variações mais subtis. Precisamos de encontrar formas de adicionar detalhe à superfície. Como? modelo geométrico modelo geométrico + coloração modelo geométrico + coloração + texturas

Mapeamento de textura, padrão de textura e texels História: Desenvolvido por Catmull (1974), Blinn e Newell (1976), e outros investigadore. Mapeamento de textura: Adiciona detalhe à superfície através de mapeamento de padrões de texturas sobre a superfície. Padrão de textura: Padrão é repetido. Por exemplo, o padrão de textura para o cubo ao lado é Texel: (abreviatura para texture element ) Um texel é um pixel da textura. Por exemplo, uma textura de resolução 128x128 tem 128x128 texels. No ecrâ, isto pode resultar em mais ou menos pixels, o que dependerá da distância a que o objecto se encontra na cena, ou seja, de como a textura é escalada para a superfície.

TÉCNICAS DE MAPEAMENTO Mapeamento de Texturas (texture mapping) Mapeamento Ambiental (environment mapping) Mapeamento de Rugosidade (bump mapping) Mapeamento de Luz (light mapping)

Mapeamento (manual) de textura Questão I: Que ponto da textura se usa para um dado ponto da superfície? Questão II: E no caso de se mapear a textura num polígono? Resposta I: A textura é simplesmente uma imagem com um sistema de coordenadas 2D (s,t) Parameteriza-se pontos da textura com coordenadas: (s,t) Define-se o mapeamento de (x,y,z) no domínio da cena para o domínio da textura (s,t). Para determinar a cor em (x,y,z) usa-se o correspondente (s,t) para determinar a cor da textura nesse ponto. Resposta II: Especifica-se (s,t) nos vértices Interpola-se (s,t) para os pontos intermédios entre os vértices e no interior do polígono. t s

Mapeamento automático de uma textura numa superfície Questão I: O problema básico está em encontrar a função (mapping) que mapeia a textura para a superfície? Ou seja: Dada uma posição (s,t) da textura, qual é a posição (x,y,z) na superfície? Formulação do problema: Este problema requer 3 funções paramétricas: x = X(s, t) (x,y,z) y = Y(s, t) t z = Z(s, t) No caso de a superfície já estar formulada parametricamente, então temos outros sistemas de coordenadas envolvidos: o da imagem (s,t) e o da própria superfície (u,v) s v u t (s,t) = (u,v) s

Como se define as coordenadas paramétricas (u,v)? n Manualmente: Atribui-se as coordenadas da textura a cada vértice da superfície n Automaticamente: Usa-se um algoritmo que atribui as coordenadas da textura

Especificação manual de coordenadas (1,1) (1,1) + = (0,0) (0,0) texture 2D polygon textured polygon (1,1) (1,0.5) + = (0,0) (0,0) texture 2D polygon textured polygon

Mapeamento de texturas em polígonos Procedimento: Especificamos explicitamente as coordenadas (u,v) nos vértices do polígono: gltexcoord2f(0.5, 0.5); glvertex3fv (10.2,3.4,4.5); Ou seja, afixamos a textura nos vértices Faz-se então a interpolação dentro do triângulo na altura da rasterização (scan conversion) no domínio de ecrã. v u

Interpolação de texturas (x 3, y 3 ), (u 3, v 3 ) Como é feita?: A interpolação é feita durante a fase de scan conversion, à semelhança do que é feito na coloração de Gouraud Mas e vez de interpolar os valores RGB, obtemos os valores (u,v) que permitem aceder à correspondente cor na textura. Isto é, o mapeamento da textura é feito no domínio canónico do ecrã quando o polígono é rasterizado No entanto, quando se descreve uma cena, assume-se muitas vezes que o mapeamento é feito no domínio da cena. (x 2, y 2 ), (u 2, v 2 ) (x 1, y 1 ), (u 1, v 1 )

Rasterização: modos de aplicação de texturas Após saber os valores de uma textura, podemos usá-los para modificar um ou mais atributos de um polígono/superfície através das chamadas funções de mistura (combine functions ou texture blending operations): Funções de mistura : replace: substitui cor da superfície pela cor da textura decal: substitui cor da superfície pela cor da textura, misturando então a cor com o valor alpha da textura, ainda que a componente alpha não seja modificado no framebuffer modulate: multiplica a cor da superfície pela cor da textura (shaded + textured surface). Precisa-se disto para a multitexturização (i.e., lightmaps). blend: semelhante à modulação mas com mistura alpha Textura Polígono Textura Mapeada operação REPLACE Textura Polígono Textura Mapeada operação MODULATE

Questões relevantes em mapeamento de texturas n O que acontece quando se faz zoom aumentativo e zoom diminuitivo? n Como geramos as coordenadas de texturas? n O que acontece quando usamos coordenadas de textura menores do que 0 e maiores do que 1? n Será que as aplicações (maps) de textura só servem para colorir objectos?

Aplicação de uma textura numa superfície Como se faz?: A aplicação de uma textura numa superfície tem lugar durante a renderização. É semelhante ao método de Gouraud: Triângulo rasterizado Cada pixel do triângulo é mapeado de volta à textura Usa-se valores conhecidos nos vértices para interpolar sobre a textura Cada pixel está associado a uma pequena região da superfície e a uma pequena área da textura. Há 3 possibilidades de associação: 1. um texel a um pixel (raramente) 2. magnificação: um texel a muitos pixels 3. minificação: muitos texels a um pixel Magnificação Minificação

Aplicação de uma textura numa superfície (cont.): zoom in: filtro de magnificação Um pixel é mapeado para uma pequena porção de um texel O resultado é que muitos pixels são mapeados para o mesmo texel Sem um método de filtragem surge o fenómeno de aliasing Filtro de magnificação: suaviza a transição entre pixels Magnificação muitos pixels correspondem a um texel à blockiness / jaggies / aliasing solução: aplicar média (magnification filter)

Aplicação de uma textura numa superfície: zoom out: filtro de minificação Um pixel é mapeado para muitos texels É comum em perspectiva (foreshortening) Minificação Perspectiva (foreshortening) e mapeamento pobre de textura provoca a deformação visual do pavimento Mipmaps melhoram o mapeamento, restaurando a forma do pavimento

Aplicação de uma textura numa superfície: melhor filtro de minificação: Mipmaps mip significa multum in parvo, ou muitas coisas num pequeno lugar Ideia básica: criar muitas texturas de tamanho decrescente e usar uma delas quando for apropriado Texturas pré-filtradas = mipmaps

Aplicação de uma textura numa superfície: Mipmaps: otimização de armazenamento É obrigatório fornecer todos os tamanhos da textura em potências de 2 em relação à original em 1x1

Sumário: filtragem Zoom-in requer a utilização dum filtro de magnificação Zoom-out requer a utilização dum filtro de minificação Filtros mais avançados requerem mais tempo/computação, mas produzem melhores resultados Mipmapping é um filtro de minificação avançado Precaução: mipmapping sem pré-definir mipmaps desligará (turn off) a texturização (veja-se Filtering in OpenGL)

Modos de tesselação (wrapping modes) (3, 0) (3, 3) Ideia básica: Atribuir coordenadas de texturas fora da gama [0,1], repetindo (repeat) ou retendo (clamp) então a aplicação da textura. Modos de tesselação: REPEAT: repete a textura inteira sucessivamente ao longo de duas direções ortogonais. MIRROR: o mesmo que REPEAT, mas com reflexão relativamente a cada direção. CLAMP TO EDGE: repete os pixéis de fronteira da textura ao longo de cada direção. CLAMP TO BORDER: rodeia a cor da fronteira. (0, 0) (3, 0) REPEAT MIRROR CLAMP TO EDGE CLAMP TO BORDER courtesy of Microsoft

Tesselação repetitiva sem costuras Uma textura pode ser tesselada repetidamente sobre uma superfície através da repetição da parametrização (s,t) sobre aquela superfície. Mas, os melhores resultados são obtidos quando a textura é tesselada sem costuras. Isto significa que existe continuidade perfeita entre o lado direito (superior) duma tessela e o lado esquerdo (inferior) da próxima tessela, não se notando qualquer descontinuidade ou costura. As costuras surgem na maior parte das tesselações de texturas. Mas, é possível editar e re-sintetizar uma tesselação de texturas de molde a parecer perfeita e sem costuras (o que é um outro tópico em si mesmo).

TEXTURAS EM OpenGL Texture Mapping Transferir a textura para a memória de vídeo Configurar os parâmetros de texturização Activar a texturização Aplicar a textura à geometria

Texturização em OpenGL: 4 passos fundamentais 1. Cria textura e carrega-a em memória gráfica glteximage() Três métodos: Carrega-a a partir de uma imagem em ficheiro jpg, bmp,... Gera-a dentro do próprio programa gráfico em OpenGL Copia a imagem a partir de um buffer de cor 2. Define os parâmetros de aplicação da textura gltexparameter*() tesselação, filtragem, etc 3. Activa a texturização glenable(gl_texture_*d) 4. Atribui coordenadas da textura a vértices A função de mapeamento é da responsabilidade do programador gltexcoord*(s,t); glvertex*(x,y,z);

Passo 1: criação e transferência da textura para a memória gráfica Criação: Cria-se a textura como uma imagem ou array de texels (texture elements) na memória RAM do lado da CPU: Glubyte mytexture[width][height][3]; Cada valor RGB é especificado através de um unsigned byte, entre 0 e 255. Por exemplo, um azul puro será definido por (0,0,255). Transferência: Para isso, usa-se a função de OpenGL: void glteximage2d (target,level,components,w,h,border,format,type,texture); Parâmetros: target : type of texture, e.g. GL_TEXTURE_2D level : used for mipmapping = 0 (discussed later) components : elements per texel (for RGB) w, h : width and height of texture in pixels border : used for smoothing = 0 (don t worry about this) format : texel format e.g. GL_RGB type : rgb component format e.g. GL_UNSIGNED_BYTE texture : pointer to the texture array Exemplo: glteximage2d(gl_texture_2d, 0, 3, 512, 512, 0, GL_RGB, GL_UNSIGNED_BYTE, mytexture);

Passo 1 (em alternativa): criação aleatória da textura GLubyte texture[64][64][3]; int u, v; for(u=0; u<64; u++) { for(v=0; v<64; v++) { texture[u][v][0] = (GLubyte)(255 * rand()/rand_max); texture[u][v][1] = (GLubyte)(255 * rand()/rand_max); texture[u][v][2] = (GLubyte)(255 * rand()/rand_max); } }

Passo 2: especificação dos parâmetros da textura É feita através da função gltexparameter(), a qual determina o comportamento e a aparência das texturas quando são renderizadas. A OpenGL tem uma variedade de parâmetros que determinam como as texturas são aplicadas: Parâmetros de tesselação (wrapping parameters) determinam o que acontece quando s e t têm valores fora da gama [0,1] Modos de filtragem (filter modes) permitem-nos usar ponderação de área em vez de amostras de pontos. Mipmapping permite-nos usar textures com múltiplas resoluções. Note-se que cada textura tem as suas próprias propriedades; estas propriedades nõ são globais.

Passo 2 (cont.): gltexparameter()

Passo 2 (cont.): modos de tesselação (wrapping modes) n 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); n Repeating : use s,t modulo 1 gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_T, GL_REPEAT); t texture s Wrap S : GL_REPEAT Wrap T : GL_REPEAT Wrap S : GL_REPEAT Wrap T : GL_CLAMP Wrap S : GL_CLAMP Wrap T : GL_REPEAT Wrap S : GL_CLAMP Wrap T : GL_CLAMP

Passo 2 (cont.): modos de filtragem (filter modes) n Minification and magnification

Passo 2 (cont.): mipmapping

Passo 3: activar texturização Para ativar/desativar a texturização: glenable(gl_texture_2d) gldisable(gl_texture_2d); Qual é o efeito da texturização (texture mapping)? A cor atual de um pixel (após a iluminação/coloração) é multiplicada pela cor correspondente da textura. Ou seja, se um objecto tiver uma cor próxima da cor branca (0.8, 0.8, 0.8) nalgum ponto e a cor da textura nesse ponto for vermelha (1, 0, 0), então obtém-se a cor (0.8, 0, 0) após multiplicação daquelas.

Passo 4: aplicar a textura Como texturizar um quandrângulo? No código que se segue assume-se que a texturização foi ativada e que já existia uma textura carregada em memória gráfica com o id 13. glbindtexture (GL_TEXTURE_2D, 13); glbegin (GL_QUADS); gltexcoord2f (0.0, 0.0); glvertex3f (0.0, 0.0, 0.0); gltexcoord2f (1.0, 0.0); glvertex3f (10.0, 0.0, 0.0); gltexcoord2f (1.0, 1.0); glvertex3f (10.0, 10.0, 0.0); gltexcoord2f (0.0, 1.0); glvertex3f (0.0, 10.0, 0.0); glend (); (0.0f,1.0f) (1.0f,1.0f) texture coordinates (0.0f,0.0f) (1.0f,0.0f)

Texture mapping em OpenGL: sumário n Vimos como uma textura pode ser mapeada num objecto: No caso de de um polígono, afixamos a textura aos vértices e interpolamos (corretamente!) durante a rasterização (ou scan conversion). n O valor da textura num dado ponto é usado para modificar a cor que seria desenhada se não houvesse texturização: As opções incluem substituição completa da cor ou modulação (ou seja, multiplicação da cor produzida pela iluminação pela cor da textura)

Review Shading: Determine a color for each filled pixel. Scan conversion: Figuring out which pixels to turn on. Rendering an image of a geometric primitive by setting pixel colors. Example: Filling the inside of a triangle.

Sumário: : Objectivos Noção de textura Motivação Mapeamento de textura, padrões de textura e texels Mapeamento de texturas em polígonos, interpolação de texturas Modos de aplicação de texturas Mapeamento de texturas em objectos geométricos Texturas em OpenGL