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

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

Computação Gráfica - 13

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

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

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

Mapeamento de Texturas

REFINAMENTO DE MALHA

Mapeamento de Texturas

Fundamentos de Computação Gráfica. Texturas

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

Geração de Geometria - Terrenos

FCTUNIVERSIDADE NOVA DE LISBOA!

Técnicas de Mapeamento

Computação Gráfica. Texturas

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

Shading (sombreamento) & Smooth Shading

Shading (sombreamento) & Smooth Shading

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

Mapeamento de Texturas

Iluminação e Sombreamento

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

OpenGL #2: Brincando com Pixels

Mapeamento de Texturas

Mapeamento de Textura

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

O que é? Como funciona?

aula 22 Texturas IC/UFF 2017 Aura

Processamento de Malhas Poligonais

Pipeline de Visualização 3D

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

Introdução ao Processamento e Síntese de imagens - Projeções

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

Iluminação e Sombreamento

FCTUNIVERSIDADE NOVA DE LISBOA!

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

Segunda Prova 20 de junho de DURAÇÃO DA PROVA: 90m

Computação Gráfica II

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

Vectores e Geometria Analítica

Computação Gráfica. Texturas

Iluminação e Sombreamento

IntMu.Lab5. Importe os ficheiros disponibilizados em

Iluminação e Sombreamento

UNIVERSIDADE FEDERAL DE VIÇOSA DEPARTAMENTO DE MATEMÁTICA LISTA DE EXERCÍCIOS DE MAT243-CÁLCULO III

Assunto última aula. Flat Shading

ESPAÇOS VETORIAIS EUCLIDIANOS

PEF 5743 Computação Gráfica Aplicada à Engenharia de Estruturas

Universidade Federal do Pará Curso de Licenciatura em Matemática PARFOR Lista de Exercícios Referentes a Prova Substitutiva de Geometria Analítica

Iluminação e Sombreamento

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

Geração de imagens com texturas utilizando OpenGL

Survey de técnicas. detalhadas: Análise e Comparação

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

Questão Valor Nota Total 10.0

Motivação Por que estudar?

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

Iluminação (lighting) e Sombreamento (shading)

Álgebra Linear I - Aula 2. Roteiro

5. Técnicas de Iluminação

UNIVERSIDADE FEDERAL DE VIÇOSA CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS DEPARTAMENTO DE MATEMÁTICA

Fundamentos da Computação Gráfica Lista de Exercícios Marcelo Gattass TeCGraf/Departamento de Informática/PUC-Rio 19jun2003

Álgebra Linear I - Aula 3. Roteiro

3. Obter a equação do plano que contém os pontos A = (3, 0, 1), B = (2, 1, 1) e C = (3, 2, 2).

Rotações em 3D. Descrição dos problemas. Como mover entre 2 frames. Ângulos de Euler. Foley Notas do Dave (lecture 29)

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

Iluminação. André Tavares da Silva. baseado nos materiais de aula de Marcelo Walter, Claudio Esperança e Paulo Cavalcanti

SEGUNDA PROVA. Segunda prova: 11/maio, sábado, 08:00 ou 10:00 horas. Capítulo 4: Vetores, produto escalar, produto vetorial.

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

GAAL - Exame Especial - 12/julho/2013. Questão 1: Considere os pontos A = (1, 2, 3), B = (2, 3, 1), C = (3, 1, 2) e D = (2, 2, 1).

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

Técnicas de renderização com textura

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

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

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

INF2608 Fundamentos da Computação Gráfica Prova Final de

Algoritmos de Iluminação Global

Iluminação. André Tavares da Silva. Capítulo 14 de Foley Capítulo 7 de Azevedo e Conci

1º Teste Computação Gráfica

4 Iluminação de dados sísmicos

Cálculo Diferencial e Integral 2: Derivadas direcionais e o vetor gradiente

2 Representação de Imagens em Arquivos Texto

Introdução ao Processamento e Síntese de imagens Rendering 2016

CCI-22 FORMALIZAÇÃO CCI-22 MODOS DE SE OBTER P N (X) Prof. Paulo André CCI - 22 MATEMÁTICA COMPUTACIONAL INTERPOLAÇÃO

Aula Exemplos e aplicações. Exemplo 1. Nesta aula apresentamos uma série de exemplos e aplicações dos conceitos vistos.

Funções Trigonométricas

7. Diferenciação Implícita

5.1 Visualização da curva silhueta em R 4 Alguns exemplos de superfícies em R 4

Real-time High Dynamic Range Image-based Lighting

Aula 2 Reflexão da luz e espelhos planos e esféricos

Aula 15. Derivadas Direcionais e Vetor Gradiente. Quando u = (1, 0) ou u = (0, 1), obtemos as derivadas parciais em relação a x ou y, respectivamente.

Área de uma Superfície de Revolução

4 Impostores com Relevo

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

Nº Nome: Relação de aspecto é o quociente entre a altura e a largura de uma janela ou um viewport.

Processamento de Imagens CPS755

Transcrição:

Mapeamento de Texturas Foley: Chapters 16.3 e 17.4 Mount: Lectures 9 e 10 O que fazer para superfícies mais complexas? Podemos aumentar o nível de detalhes da superfície ou definir uma função matemática como gradiente ou quadriculado Mas essas alternativas podem ser inviáveis para superfícies imprevisíveis e muito complexas Realismo: como implementar detalhes? Até agora vimos como iluminação e sombreamento podem produzir objetos mais realistas Modelo de Phong Essa técnica é boa para objetos lisos com cor uniforme. um copo de plástico uma tampa de metal Exemplo: como modelar a...

Exemplo: mapa para esfera Ideia: mapeamento de textura Vamos usar uma foto (imagem) como textura e mapear essa imagem sobre a superfície do objeto a ser renderizado Mapeamento de Texturas Mapeamento de texturas Processo de mapear (ou embrulhar) uma imagem ao redor de um objeto. exemplo: a partir de uma foto de um gramado, digitalizar a foto em algum formato e mapear essa imagem sobre um retângulo. Representação de imagens: formatos: gif, jpeg, tiff, bmp, ppm, etc. OpenGL: imagem é uma matriz NxN de pixels com valores de RGB (N é potência de 2). Texels: texture elements (ao invés de pixels) texel deve ser mapeado para

Espaço de texturas Ao invés de pensar que a imagem é uma matriz 2D, podemos considerá-la como sendo uma função que mapeia um ponto (s,t) no espaço de textura para um valor RGB. Dado um par (s,t), 0 <= s,t <= 1, a textura define um valor T(s,t), que é um valor de RGB (uma cor). Textura como função 2d Vamos ignorar o formato e considerar uma função: T(s, t) -> RGB 0 <= s, t <= 1

Como embrulhar a textura no objeto? devemos definir uma função de mapeamento Mas o objeto é 3D -> um ponto 2D (s, t) precisa ser mapeado para um ponto 3D (x, y, z) Isso é feito por meio da parametrização da superfície do objeto Exemplo: esfera Um ponto sobre a esfera de raio unitário pode ser representado por 2 ângulos θ e ϕ. coordenadas esféricas 0 <= ϕ <= π e 0 <= θ <= 2π Qual a coordenada (x,y,z) em função de (θ, ϕ)? Parametrizações Desejamos uma função que mapeie um ponto (s,t) da textura para um ponto (x,y,z) na superfície do objeto. Isso é tipicamente implementado através de uma função paramétrica cada ponto da superfície do objeto é associado a uma coordenada (u,v) local a superfície. obtemos assim 3 funções que mapeiam (u,v) para (x,y,z): x(u,v), y(u,v) e z(u,v). uma vez obtida uma função paramétrica (u,v) mapeamos cada (u, v) para um texel (s,t)

Mapeamento inverso Em geral é mais útil considerar o mapeamento inverso, da textura para a superfície Seja IW(u,v) = Inverse Wrapping function mapeia um ponto (u,v) para um ponto (s, t) A partir das funções x(u,v), y(u,v), e z(u,v) sabemos que: ϕ = arccos (z) e θ = arctan(y / x) Normalizando para (0, 1): u = 1 - arccos(z)/π e v = arctan(y/x) / (2π) podemos usar (u, v) diretamente como (s,t) O processo de mapeamento Suponha que conhecemos IW(u,v) e a parametrização. O mapeamento se faz da seguinte forma: projetar os cantos do pixel a ser renderizado para a superfície do objeto, pontos Pi calcular os parâmetros (u,v) p/ cada Pi Desembrulhar: aplicar o mapemento inverso dos Pi's Tirar uma média local dos texels que "cobrem" o pixel Textura no OpenGL O OpenGL modela os objetos por polígonos isso simplifica o processo de mapeamento. exemplo: suponha um triângulo. Quando os vértices são especificados, o usuário também define os pontos (s,t) no espaço de textura, o que define um mapeamento linear entre a textura e a superfície. glbegin(gl_polygon) glnormal3f(nx, ny, nz) gltextcoord2f(tx, ty) glvertex3f(vx, vy, vy)... gleng(); Observe que a textura é definida antes do vértice

Como interpolar as coordenadas da textura no interior do polígono? Implementação Um pixel P do triângulo pode ser definido por: P = α0p0 + α1p1 + α2p2 onde α0 + α1 + α2 = 1 Uma vez calculados os coeficientes α, para determinar a textura de P basta calcular: Q = α0.q0 + α1.q1 + α2.q2 Como tratar a textura: Quick and Dirty Implementação simples (rápida e eficiente): Sejam P0, P1, P2 os vértices de um triângulo Sejam Q0, Q1, Q2 as 3 coordenadas de textura correspondentes

Problemas Não considera perspectiva glhint(gl_perspective_correction_hint, GL_NICEST) Mipmapping Cria uma série de texturas, com resoluções menores Problemas Aliasing Texture mapping in OpenGL glenable(gl_texture_2d) # gera n texturas, em geral de 1 a n texid = glgentextures(n) # torna a textura texid ativa glbindtexture(gl_texture_2d, texid)

Gerando a textura glteximage2d(gl_texture_2d, level, internalformat, width, height, border, format, type, image) level mipmap (em geral 0) format GL_RGB ou GL_RGBA width, height: dimensão border = 0 type = GL_UNSIGNED_BYTE Veja os exemplos Filtro e mipmapping par_name = GL_TEXTURE_MAG_FILTER par_name = GL_TEXTURE_MIN_FILTER par_value = GL_NEAREST ou GL_LINEAR Outras opções gltexparameteri(target, par_name, par_value) gltexparameterf(target, par_name, par_value) O que fazer quando s (ou t) é < 0 ou > 1? target = GL_TEXTURE_2D par_name = GL_TEXTURE_WRAP_S par_value = GL_CLAMP ou GL_REPEAT Textura e iluminação A cor pode ser combinada com a textura gltexenvi(gl_texture_env, GL_TEXTURE_ENV_MODE, GL_MODULATE) - defaul: multiplica as cores gltexenvi(gl_texture_env, GL_TEXTURE_ENV_MODE, GL_REPLACE) - a cor do pixel é a cor da textura

Mapeamento da cena Em superfícies altamente polidas, é comum observarmos outros objetos da cena sendo refletidos. o modelo de Phong, por ser local, não modela esse fenômeno pode ser gerado de forma precisa através de "raytracing" pode ser feita de forma rápida (porém não muito precisa) através de uma técnica chamada de environment mapping (EM) ou reflection mapping. QuickTime and a decompressor are needed to see this picture. Cálculo de reflexões QuickTime and a decompressor are needed to see this picture. O que o observador vê, depende da posição do observador de um ponto P sobre a superfície e a normal em P Ray-tracing: rastreia o caminho inverso do raio refletido em P, para determinar a cor do objeto que o originou. computacionalmente caro Simplificação para EM: cena distante a superfície refletora é pequena em relação às distâncias dos objetos sendo refletidos nela. simplifica o cálculo da direção do vetor de reflexão. Reflexão x Textura Quando observamos uma superfície com textura, e movemos a cabeça, a textura permanece constante sobre a superfície. Porém, reflexões dependem da posição e orientação da superfície do objeto e do observador, e portanto os padrões de reflexões variam com o movimento da cabeça. Em que condições podemos aproximar reflexões como padrões de textura? Exemplo Chaleira na cozinha A chaleira é pequena em relação as paredes. A mesa e os objetos da mesa no entanto estão muito pertos e...

Processo de mapeamento 1) criação do mapa do ambiente: coloque uma pequena esfera ou cubo ao redor do objeto assuma que não há intersecção com outros objetos da cena projete a cena sobre as faces desse objeto (6 faces do cubo), usando o seu centro como centro de projeção. todas as imagens são armazenadas para permitir reflexões de qualquer posição. Obs: Precisão pode não ser necessária cromados espelhos precisam de mais precisão Processo de mapeamento 2) cálculo do vetor de reflexão r, a partir da normal n e do vetor de observação v de forma semelhante ao cálculo utilizado no método de Phong. usando esse vetor, podemos traçar um raio do centro do cubo e determinar o ponto sobre o cubo que é interceptado pelo raio. Esse ponto determina a cor a ser desenhada. Bump Mapping QuickTime and a decompressor are needed to see this picture. QuickTime and a decompressor are needed to see this picture. Uma imagem pode não ser suficiente para dar idéia de textura devido a rugosidades da superfície

Rugosidades Rugosidades podem ser muito pequenas para se notar à grande distância Porém elas afetam a normal da superfície Bump mapping procura reproduzir esse efeito Espaço de rugosidades Similar ao espaço de textura. Precisamos definir uma função 2D b(s,t) b(s,t) = bump displacement function mapeia um ponto (s,t) para o bump space (uma altura h) vamos considerar também a função inversa IW(u,v), que mapeia um ponto sobre a superfície do objeto para (s,t) Alternativas 1) uma forma seria armazenar um "mapa de normais" necessário utilizar 3 canais: n = (nx, ny, nz) 2) ou o valor de cada "pixel" representa a altura do "monte". basta utilizar um canal: h mais fácil de armazenar e calcular que um mapa de normais Basicamente, é uma imagem em nível de cinza ou Bump Image Perturbação dos vetores normais Superfície do objeto é representada por uma função paramétrica em (u,v) x(u,v), y(u,v), z(u,v) seja P um ponto sobre a superfície em (u,v) n o vetor normal em (u,v) Problema: dado n, como calcular o vetor perturbado n' em P? uma vez conhecido n', basta utilizar esse valor no modelo de Phong

Descrição do método derivada dp = (Pu, Pv) vertor normal n (veja a figura) n = normalize( Pu x Pv ) Ponto perturbado por b = b(u,v) P' = P + b n a normal perturbada pode ser então calculada como: n' = normalize( P'u x P'v ) Vetor n' P'u = δ(p + b n)/δu = Pu + bu n + b nu onde bu e nu são as derivadas de b e n na direção u P'v é calculado de forma semelhante Assumindo valores pequenos de altura mas grandes variações, o último termo (b nu) pode ser ignorado e portanto: P'u ~ Pu + bu n P'v ~ Pv + bv n

Vetor n' n' ~ (P u + b u n) x (P v + b v n) ~ (P u x P v ) + b v (P u x n) + b u (n x P v ) + b u b v (n x n) 0 -(n x Pu) e assim temos: n' ~ n + b s (n x P v ) - b t (n x P u ) Mapa de normais (normal map) As equações diferenciais apresentadas anteriormente podem ser difíceis de serem realizadas pela GPU Ao invés de usar apenas a altura, podemos utilizar as 3 componentes RGB de uma imagem colorida para representar a perturbação da normal diretamente. Como calcular as derivadas A partir das funções de P(u,v) e b(s,t) Use cálculo caso tenha as funções Se P estiver sobre um polígono então Pu e Pv são constantes bs e bt podem ser por diferenças finitas Método Um método possível é utilizar a tripla RGB para representar um vetor da origem ao topo de um cubo unitário Cada valor RGB pode ser normalizado para o intervalo [0, 1) (dividindo por 256) B representa z => B = 1 R representa x => x = 2 R - 1 G representa y => y = 2 G -1 onde 0 <= R, G <= 1 e um vetor normal (x, y, z) = (2R-1, 2G-1, B)

O que você deve saber Mapeamento de texturas superfícies paramétricas espaço de texturas função de mapeamento (embrulho x desembrulho) diferença entre textura e reflexão Mapeamento da cena ou de reflexões Mapeamento de regusidades bump maps normal maps