Fundamentos de Computação Gráfica. Texturas

Documentos relacionados
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. Texturas

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

FCTUNIVERSIDADE NOVA DE LISBOA!

Geração de Geometria - Terrenos

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

Mapeamento de Texturas

Mapeamento de Texturas

Mapeamento de Texturas

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

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

Computação Gráfica - 13

IntMu.Lab5. Importe os ficheiros disponibilizados em

Computação Gráfica - 13

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

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

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

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

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

REFINAMENTO DE MALHA

OpenGL #2: Brincando com Pixels

FUNDAMENTOS E APLICAÇÕES. Luis Valente

Mapeamento de Texturas

Textura e Iluminação

Geração de imagens com texturas utilizando OpenGL

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

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

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

Shading (sombreamento) & Smooth Shading

Real-time High Dynamic Range Image-based Lighting

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

Shading (sombreamento) & Smooth Shading

OpenGL Conceitos Avançados

Técnicas de renderização com textura

FCTUNIVERSIDADE NOVA DE LISBOA!

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

Matriz de transformação

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

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

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

Transformações geométricas no plano e no espaço

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

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

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

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

Imagem ou Desenhos e Gráficos vetorial ou raster?

Computação Gráfica OpenGL 05 3D

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

António Costa. Paulo Roma Cavalcanti

CG 2013/2014 Primeiro Teste LEIC Alameda/Taguspark

CIV2802 Sistemas Gráficos para Engenharia Luiz Fernando Martha André Pereira

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

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

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

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

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

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

Transformações geométricas

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

Imagem e Gráficos. vetorial ou raster?

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

OpenGL. Conceitos Básicos. Waldemar Celes. Tecgraf/PUC-Rio. OpenGL: o que é? Interface para programador de aplicação. Aplicação API abstrata

Mapeamento de Textura

Sistemas Gráficos e Modelos

OpenGL. Conceitos Básicos. Waldemar Celes. Tecgraf/PUC-Rio

RECONSTRUÇÃO GRÁFICA TRIDIMENSIONAL DE CONSTRUÇÕES A PARTIR DE IMAGENS AÉREAS

Modelos Geométricos Transformações

Universidade de Aveiro Departamento de Electrónica, Telecomunicações e Informática. Transformações 2D

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

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

Introdução a Programação de Jogos

Computação Gráfica - 09

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

Técnicas de Mapeamento

Computação Gráfica - OpenGl 02

Transformações Geométricas

Computação Gráfica - 09

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

Sistemas de Referência

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

Enquadramento e Conceitos Fundamentais

Enquadramento e Conceitos Fundamentais

Operações sobre Fragmentos

Instituto de Computação Bacharelado em Ciência da Computação Disciplina: Computação Gráfica Primeira lista de exercícios

Visualização Científica Algoritmos de Visualização usando o VTK

2º ANO - FOTOGRAFIA. Rui Gonçalves

Computação Gráfica. Representação e Modelagem

Computação Gráfica. Iluminação

Visualização Científica Algoritmos de Visualização usando o VTK. ~tavares/ensino/visci/

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

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

2 Técnicas e Trabalhos Relacionados

OpenGL. Soraia Musse

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

Computação Gráfica. Iluminação

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

Seleção & feedback. Módulo 12. Sistemas Gráficos e Interação. Filipe Pacheco SGRAI 2017/18 DEI-ISEP 333. Instituto Superior de Engenharia do Porto

Transcrição:

Fundamentos de Computação Gráfica Texturas

Texturas Aplicar imagens 1D,2D ou 3D a primitivas geométricas Utilizações: Simular materiais: madeira, granito, tijolo Reduzir complexidade geométrica Simulação de fenómenos naturais (ou outros) (reflexões, refracção, luz, lens flare) 2

Texturas Texturas e Geometria seguem caminhos separados no pipeline gráfico, encontrandose na fase de raster. 3

Texturas Imagem: dimensões são potências de 2. Por exemplo: 256 x 128 Exemplos de Formatos: RGB, RGBA,... OpenGL não tem nenhuma função para carregar texturas de ficheiro 4

Texturas 1D: Linhas que podem ser utilizadas para a criação de imagens 2D: Textura normal 3D: Volumes. Permitem aplicar texturas como se tratasse de uma escultura 5

Texturas - Utilização Definição Carregar a imagem Criar uma textura em OpenGL Definir parâmetros da textura Aplicação Definir vértices Definir Transformações Geométricas 6

Texturas Aplicação Para aplicar uma textura a um polígono é necessário definir um mapeamento entre os pixels da textura e os vértices do polígono. As texturas 2D têm um sistema de coordenadas nos eixos s (=x),t (=y). gltexcoord2f(s,t). 7

Texturas - Aplicação Ao definir os vértices do polígono, definem-se anteriormente as coordenadas a aplicar da textura. glbindtexture(gl_texture_2d,texid); glbegin(gl_quads); gltexcoord2f(0,0);glvertex3f(-1.0f, -1.0f, 0.0f); gltexcoord2f(1,0);glvertex3f( 1.0f, -1.0f, 0.0f); gltexcoord2f(1,1);glvertex3f( 1.0f, 1.0f, 0.0f); gltexcoord2f(0,1);glvertex3f(-1.0f, 1.0f, 0.0f); glend(); 8

Texturas - Aplicação glbindtexture(gl_texture_2d,1); glbegin(gl_quads); gltexcoord2f(0,0);glvertex3f(-1.0f, -1.0f, 0.0f); gltexcoord2f(1,0);glvertex3f( 1.0f, -1.0f, 0.0f); gltexcoord2f(1,1);glvertex3f( 1.0f, 1.0f, 0.0f); gltexcoord2f(0,1);glvertex3f(-1.0f, 1.0f, 0.0f); glend(); 9

Texturas - Aplicação A escolha de coordenadas no espaço das texturas é "livre". 10

Texturas - Aplicação Matriz para Texturas Permite realizar transformações geométricas sobre a textura. glmatrixmode(gl_texture); gltranslatef(0.5,0,0); glrotatef(45,0,0,1); glmatrixmode(gl_modelview); glbegin(gl_quads);... glend(); 11

Texturas - Parâmetros Clamp & Repeat Imagem Original GL_CLAMP GL_REPEAT As várias hipóteses para CLAMP e REPEAT (2x2) 12

Texturas - Aplicação Demo Texturas Nate Robbins 13

Texturas - Filtros: Mag Utilizado quando a um pixel da textura (texel) corresponde mais que um pixel da imagem final, ou seja quando a textura é ampliada GL_LINEAR ou GL_NEAREST 14

Texturas - Filtros: Min Utilizado quando a um texel corresponde menos que um pixel da imagem final, ou seja quando a textura é comprimida visualmente. GL_LINEAR ou GL_NEAREST 15

Texturas - Filtros Mag:Nearest 16

Texturas - Filtros Mag: Linear pode parecer desfocado ao perto! 17

Texturas Demo Texturas - Filtros 18

Texturas - Definição glgentextures(1, texname); glbindtexture(gl_texture_2d, texname[0]); gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_S, GL_REPEAT); gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_T, GL_REPEAT); gltexparameteri(gl_texture_2d, GL_TEXTURE_MAG_FILTER, GL_LINEAR); gltexparameteri(gl_texture_2d, GL_TEXTURE_MIN_FILTER, GL_LINEAR); image = tgaload("casaco.tga"); glteximage2d(gl_texture_2d, 0, GL_RGB, image->width, image->height, border, GL_RGB, GL_UNSIGNED_BYTE, image->imagedata); 19

Texturas: Cor Final A cor da textura pode ser combinada com a cor do polígono. Modo RGBA GL_REPLACE C = Ct A = At GL_MODULATE C = Ct * Cf A = At * Af GL_BLEND C = Cf*(1-Ct) + Cc*Ct A = Af * At GL_DECAL C = Cf*(1-At) + Ct*At A = Af f = fragmento, t = textura, c = GL_TEXTURE_ENV_COLOR gltexenvi(gl_texture_env, GL_TEXTURE_ENV_MODE,param); gltexenvfv(gl_texture_env, GL_TEXTURE_ENV_COLOR,param); 20

Texturas: Transparência Para transparências parciais a ordem de desenho é importante Para transparências totais pode-se utilizar o teste do canal alpha Este teste é realizado antes da escrita no Z-buffer, e elimina todos os pixels que não passam no teste...... logo os pixels que são eliminados não alteram o Z- buffer. 21

Texturas: Transparência Na Prática glenable(gl_alpha_test); glalphafunc(gl_greater, 0); 22

Texturas 1D glteximage1d(gl_texture_1d,...) 3D glteximage3d(gl_texture_3d,...) 23

Texturas Em OpenGL é necessário activar a operação de aplicação de texturas: glenable(gl_texture_1d); glenable(gl_texture_2d); glenable(gl_texture_3d); 24

Geração de Coordenadas O OpenGL permite a geração de coordenadas para texturas automática. Note-se que a geração de coordenadas não pretende substituir a necessidade de definir coordenadas de texturas, mas sim permitir novas aplicações. 25

Geração de Coordenadas Três modos possíveis: GL_EYE_LINEAR Permite fixar as texturas no espaço, e o objecto movese na textura. GL_OBJECT_LINEAR Texturas fixas ao objecto, aplicação tradicional. GL_SPHERE_MAPPING, GL_CUBE_MAPPING Os objectos reflectem o ambiente, tal como no filme Exterminador, ou no Abismo. 26

Geração de Coordenadas Demo Geração Coordenadas (texgencoord) 27

Geração de Coordenadas GL_OBJECT_LINEAR s = s 0 * x + s 1 * y + s 2 * z + s 3 * w sendo v = (x,y,z,w) e S = (s 0,s 1,s 2,s 3 ) Os planos S,T,R,Q determinam o referencial a partir do qual são calculadas as coordenadas. 28

Geração de Coordenadas GL_EYE_LINEAR s = s' 0 * xe + s' 1 * ye + s' 2 * ze + s' 3 * we sendo ve = (xe,ye,ze,we), as coordenadas do vértice no espaço da câmara... e S' = (s' 0,s' 1,s' 2,s' 3 ) = (s 0,s 1,s 2,s 3 ) * M -1 sendo M a matriz MODELVIEW Os planos S,T,R,Q determinam o referencial a partir do qual são calculadas as coordenadas no espaço câmara. 29

Geração de Coordenadas Terreno: utiliza textura 2D Calculo automático: Distância aos planos x=0 (s) e z=0 (t) Escala da textura de forma a que 1 unidade de textura corresponda ao terreno inteiro 30

Geração na prática Activar Geração de Coordenadas glenable(gl_texture_gen_s); glenable(gl_texture_gen_t); Modo: GL_OBJECT_LINEAR gltexgeni(gl_s, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); gltexgeni(gl_t, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); Os Planos S e T: GLfloat planes[] = {1.0, 0.0, 0.0, 0.0}; GLfloat planet[] = {0.0, 0.0, 1.0, 0.0}; gltexgenfv(gl_s, GL_OBJECT_PLANE, planes); gltexgenfv(gl_t, GL_OBJECT_PLANE, planet); Escala da Textura glmatrixmode(gl_texture); glscalef(1.0/(image->width),1.0/(image->height),1); glmatrixmode(gl_modelview); 31

Geração de Texturas Demo Terreno com Geração de Texturas 32

Geração de Coordenadas Curvas de nível: utiliza textura 1D Calculo automático: Distância ao plano y=0 (s) Escala da textura de forma a que 1 unidade de textura corresponda a n metros. Textura repetida permite visualizar múltiplas curvas de nível. 33

Geração na prática Activar Geração de Coordenadas glenable(gl_texture_gen_s); Modo: GL_OBJECT_LINEAR gltexgeni(gl_s, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); O Plano S : GLfloat planes[] = {0.0, 1.0, 0.0, 0.0}; gltexgenfv(gl_s, GL_OBJECT_PLANE, planes); Escala da Textura glmatrixmode(gl_texture); glscalef(1.0/n,1,1); glmatrixmode(gl_modelview); 34

Geração de Texturas Demo Curvas de Nível com Geração de Texturas 35

Texturas - Mipmapping Do Latim multum in parvo. Problema: alterações inesperadas ao encolher texturas à medida que a camera se afasta. Causa: O processo de aplicação de filtros a uma imagem muito encolhida pode implicar alterações abruptas à imagem projectada. 36

Texturas - Mipmapping Solução: Utilizar múltiplas texturas de diferentes resoluções para utilizar a escalas diferentes. Por exemplo: textura original 32 x 16 Fornecer texturas: 32x16, 16x8, 8x4, 4x2, 2x1, 1x1. É necessário fornecer uma sequência de níveis consecutivos (potências de 2). 37

Texturas - Mipmapping Figura do Red Book: 38

Texturas - Mipmapping Que textura escolher para cada pixel? a mais próxima da actual resolução, ou uma combinação linear das duas mais próximas. Imagens do Red Book 39

Texturas - Mipmapping 4 combinações disponíveis para filtrar uma textura: GL_NEAREST_MIPMAP_NEAREST GL_LINEAR_MIPMAP_NEAREST GL_NEAREST_MIPMAP_LINEAR GL_LINEAR_MIPMAP_LINEAR O primeiro filtro diz respeito à textura, o segundo ao mipmapping. 40

Texturas - Mipmapping GLU permite a criação automática dos níveis necessários para o mipmapping. Todos: glubuild2dmipmaps(gl_texture_2d, GL_RGBA, image->width, image->height, GL_RGBA, GL_UNSIGNED_BYTE, image->imagedata); Do nívelbase ao nívelmax: glubuild2dmipmaplevels(gl_texture_2d, GL_RGBA, image->width, image->height, GL_RGBA, GL_UNSIGNED_BYTE, level, base, max, image->imagedata); Pode-se também especificar quais os níveis a utilizar: gltexparameteri(gl_texture_2d,gl_texture_base_level,2); gltexparameteri(gl_texture_2d,gl_texture_max_level,5); 41

Texturas - Mipmapping glbindtexture(gl_texture_2d,texname[1]); gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_S, GL_REPEAT); gltexparameteri(gl_texture_2d, GL_TEXTURE_WRAP_T, GL_REPEAT); gltexparameteri(gl_texture_2d, GL_TEXTURE_MAG_FILTER, GL_NEAREST_MIPMAP_NEAREST); gltexparameteri(gl_texture_2d, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); image = tgaload("ground.tga"); glubuild2dmipmaps(gl_texture_2d, GL_RGB, image->width, image->height, GL_RGB, GL_UNSIGNED_BYTE, image->imagedata); // especificar quais os níveis a utilizar gltexparameteri(gl_texture_2d,gl_texture_base_level,2); gltexparameteri(gl_texture_2d,gl_texture_max_level,5); 42

Texturas - Performance Texturas Residentes glaretexturesresident residentes é um array de booleanos que indica se cada uma das texturas alocadas está residente Prioridades glprioritizetextures 43

Referências OpenGL Programming Guide, aka Red Book, OpenGL ARB 44