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

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

Computação Gráfica - 13

Mapeamento de Texturas

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

Computação Gráfica - 13

Fundamentos de Computação Gráfica. Texturas

Mapeamento de Texturas

Computação Gráfica. Texturas

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

FCTUNIVERSIDADE NOVA DE LISBOA!

Mapeamento de Texturas

Textura e Iluminação

REFINAMENTO DE MALHA

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

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

Mapeamento de Textura

Computação Gráfica. Texturas

Geração de Geometria - Terrenos

Geração de imagens com texturas utilizando OpenGL

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

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

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

Mapeamento de Texturas

FUNDAMENTOS E APLICAÇÕES. Luis Valente

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

OpenGL #2: Brincando com Pixels

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

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

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

IntMu.Lab5. Importe os ficheiros disponibilizados em

Shading (sombreamento) & Smooth Shading

Aplicação de Tags em Objetos de Sistemas de Visualização em Tempo Real

Técnicas de Mapeamento

Shading (sombreamento) & Smooth Shading

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

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

Mapeamento de Texturas

FCTUNIVERSIDADE NOVA DE LISBOA!

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

OpenGL Conceitos Avançados

Geração Procedural de Terrenos em GPU

Introdução. 1 Introdução

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

Materiais e UVW Map Renderizar com Rhino parte #03

Real-time High Dynamic Range Image-based Lighting

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

Aprenda como renderizar uma maquete eletrônica no 3ds Max 7

Modelagem Geométrica

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

Operações sobre Fragmentos

CG 2013/2014 Segundo Teste LEIC Alameda/Taguspark

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

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

Computação Gráfica - 13

4 Técnicas de Renderização HDR

Computação Gráfica OpenGl 01

INF1339 Computação Gráfica Tridimensional. Waldemar Celes. 2 de Agosto de 2010

aula 22 Texturas IC/UFF 2017 Aura

Computação Gráfica Conf. 6: Iluminação e materiais. ISUTIC Eng. Alexander Rodríguez Bonet

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

4 Impostores com Relevo

PROGRAMAÇÃO OPENGL LIVRO: TEORIA DA COMPUTAÇÃO GRÁFICA

Os testes foram efetuados em um processador Intel i7 de 2.8 GHz com 12Gb de memória RAM utilizando uma Nvidia GeForce GTX 480.

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

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

Computação Gráfica - 07

Técnicas de renderização com textura

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

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

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

Visão Computacional. Alessandro L. Koerich. Programa de Pós-Graduação em Engenharia Elétrica Universidade Federal do Paraná (UFPR)

Visualização de Rótulos em Objetos de Modelos Massivos em Tempo Real

Arquitetura de Computadores. Ciclo de Busca e Execução

Engenharia Informática Computação Gráfica

Computação Gráfica. Desempenho

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

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

1 Introdução. I know because I must know. It's my purpose. It's the reason I'm here. (The Matrix) 1.1 Objetivos do trabalho

Reconstrução de cenas a partir de imagens através de Escultura do Espaço por Refinamento Adaptativo

António Costa. Paulo Roma Cavalcanti

VisEdu-MAT: Visualizador de material educacional, módulo de matemática

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.

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

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

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

Processamento Digital de Imagens Aula 04

Renderização não fotorealista

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

Introdução ao Processamento Gráfico

A terceira dimensão. A terceira dimensão. Modelagem tridimensional. A terceira dimensão Wilson de Pádua Paula Filho

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

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

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

Preenchimento de Polígonos

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

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

Utilizaremos o caminho File > File Link Manager (Figura 02) para referenciar o arquivo DWG no 3ds max 8.

Pino de Bowling. 0. Inicie uma nova sessão no modelador Blender Selecione a vista de frente: Ctrl N. View / Front ou NumPad 1

Transcrição:

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

Introdução De acordo com o www.thefreedictionary.com: Textura Aparência e impressão de uma superfície Superfície de uma material, principalmente sentida pelo toque Mapa de textura: Método de adicionar detalhes, textura ou cor para um modelo 3D Mapeia-se uma imagem (textura) para a superfície de um polígono ou forma Multitextura aplicar mais de uma textura para um polígono, ao mesmo tempo

Definições Pixel elemento de pintura. Menor elemento que pode ser representado em uma imagem ou em um monitor Normalmente existe uma correspondência de 1:1 entre o pixel de uma imagem e o pixel de um monitor Texel Elemento de textura Raramente existe uma correspondência de 1:1 entre um texel e um pixel no monitor

Exemplo

Tipos de Textura Mapa de Textura (Texture Map) Aplicar uma imagem a um objeto Mapas Procedurais Criação de imagens por algoritmo. Ruído em imagens, por exemplo Textura de Deslocamento (displacement) Altera a malha de um modelo, através da influência de uma imagem

Tipos de Textura (2) Mapa de Reflexão (Environment Mapping) Mapeamento Bump Altera a componente normal de uma textura para dar mais realismos nas imagens Mapeamento UV Fazer a renderização de objetos reflexivos Como criar uma textura, dado um objeto modelado Light Map Criar mapas de iluminação. Aplicá-los como textura

Mapa de textura

Mapas Procedurais Aplicando a textura para afetar a normal na renderização

Textura de Deslocamento

Environment Map Mapas Reflexivos

Bump Maps

Mapeamento UV

Light Maps

Texture Map no OpenGL 1º Carregar a textura para a memória do dispositivo gráfico void glteximage1d(glenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, void *data); void glteximage2d(glenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, void *data); void glteximage3d(glenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, void *data);

Parâmetros Relativos à Representação Interna Target normalmente GL_TEXTURE_?D Level 0 se não usar mipmaps Internalformat normalmente GL_RGB ou GL_RGBA Width, height, depth dimensão da textura Idealmente deve ser em potência de 2 Border Influência no filtro de textura, por enquanto colocar 0

Parâmetros Relativos à Imagem Format como está os dados na imagem a ser lida (GL_RGB, GL_RGBA, GL_BGR, etc) Type como os bytes estão organizados para guardar os valores de dados (GL_UNSIGNED_BYTE, GL_BYTE, GL_UNSIGNED_INT_8_8_8_8, etc); Data ponteiro para um buffer em memória, onde os valores da imagem estão guardados

Mapeando as Texturas para a Geometria Creator:inkscape 0.46 Coordenadas da textura: s, t, r e q Valor de 'q' corresponde à coordenada homogênea do sistema homogêneo Valor real: s/q, t/q, r/q (default: q = 1)

Mapeando as Texturas para a Geometria (2) Para especificar as texturas: void gltexcoord1f(glfloat s); void gltexcoord2f(glfloat s, GLfloat t); void gltexcoord3f(glfloat s, GLfloat t, GLfloat r); Devem ser especificados antes de especificar os vértices Funcionamento da máquina de estado

Exemplos Creator:inkscape 0.46

OpenGL Textura de Ambiente Define como a textura irá interagir com a cor definida com o sólido Iluminação influencia também altera a cor do sólido Função OpenGL: void gltexenvi GLenum target,glenum name,glint param ; onde : target GL TEXTURE? D name GL TEXTURE ENV MODE param GL MODULATE, ou GL REPLACE, etc

GL_MODULATE = = Imagem final = textura * cor do pixel

GL_REPLACE = = Imagem final = textura (exceto para o canal alpha)

Parâmetros da Textura Inicializadas com a função (sem mipmaps): void gltexparameteri(glenum target, GLenum name, GLint param); onde: target GL_TEXTURE_?D name GL_TEXTURE_MIN_FILTER como filtrar a textura quando estiver em seu valor mínimo GL_TEXTURE_MAG_FILTER como filtrar a textura quando estiver em seu valor máximo param GL_NEAREST valor usado é o texel calculado GL_LINEAR valor usado de textura é uma interpolação sobre o texel calculado

Exemplos GL_TEXTURE_MIN_FILTER GL_NEAREST GL_TEXTURE_MAG_FILTER GL_NEAREST

Exemplos (2) GL_TEXTURE_MIN_FILTER GL_LINEAR GL_TEXTURE_MAG_FILTER GL_LINEAR

Texture Wrap O que acontece quando as coordenadas das textura estão fora do intervalo de [0:1]? void gltexparameteri(glenum target, GLenum name, GLint param); onde: target GL_TEXTURE_?D name GL_TEXTURE_WRAP_S como realizar a sobreposição da textura no eixo S GL_TEXTURE_WRAP_T como realizar a sobreposição da textura no eixo T param GL_REPEAT textura é repetida quando as coordenadas da textura ultrapassa o intervalo [0:1] GL_CLAMP aplicada somente uma única vez

Texture Wrap (2) Como mudar a forma que a textura é aplicada nas extremidades, quando as coordenadas estão fora do intervalo? GL_CLAMP_TO_EDGE as coordenadas que estão fora do intervalo são amostradas na última linha (coluna) dos texels válidos Utilizado quando uma textura é muito grande para ser carregada inteira na memória. Quebra-a em partes e para evitar o flickering, usa-se esse modo para uní-las GL_CLAMP_TO_BORDER as coordenadas que estão fora do intervalo são substituídas pelo valor do parâmetro Border Lembrando (carregar uma textura): void glteximage2d(glenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, void *data);

MipMapping Utiliza texturas de uma mesma imagem cada vez menores para objetos distantes Objetivos: Aumentar a performance em geral Menos processamento de textura para objetos distantes Melhorar a qualidade de uma cena e o desempenho de renderização Evita cintilações na imagem devido a erros de amostragem de uma textura 'grande'

MipMapping (2) Cada nível é gerado, baseando no nível anterior, com os comprimentos reduzidos pela metade Idealmente, só deve parar quando a imagem for 1 pixel Nível 0 é a textura original

Exemplo

Em OpenGL O nível do MipMap é definido quando se carrega a textura. Lembrando (carregar uma textura): void glteximage2d(glenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border,glenum format, GLenum type, void *data); Idealmente deve ser chamado para todos os MipMaps possíveis Para definir limites inferior e superior (exemplo, base 0 e máximo 4): gltexparameteri(gl_texture_2d, GL_TEXTURE_BASE_LEVEL, 0); gltexparameteri(gl_texture_2d, GL_TEXTURE_MAX_LEVEL, 4);

Gerando MipMaps automaticamente Através do GLU: int glubuild1dmipmaps(glenum target, GLint internalformat, GLint width, GLenum format, GLenum type, void *data); int glubuild2dmipmaps(glenum target, GLint internalformat, GLint width, GLint height, GLenum format, GLenum type, void *data); int glubuild3dmipmaps(glenum target, GLint internalformat, GLint width, GLint height, GLint depth, GLenum format, GLenum type, void *data); Através do hardware: gltexparameteri(gl_texture_2d, GL_GENERATE_MIPMAP, GL_TRUE);

Filtros MipMaps Vimos que, para parametros da textura: void gltexparameteri(glenum target, GLenum name, GLint param); onde: target GL_TEXTURE_?D name GL_TEXTURE_MIN_FILTER como filtrar a textura quando estiver em seu valor mínimo GL_TEXTURE_MAG_FILTER como filtrar a textura quando estiver em seu valor máximo param GL_NEAREST valor usado é o texel calculado GL_LINEAR valor usado de textura é uma interpolação sobre o texel calculado E para os MipMaps, temos ainda: GL_NEAREST_MIPMAP_NEAREST GL_NEAREST_MIPMAP_LINEAR GL_LINEAR_MIPMAP_NEAREST GL_LINEAR_MIPMAP_LINEAR chamado de mapeamento trilinear

Objetos Textura Permite carregar na memória do hardware, mais do que um estado de textura, simultaneamente Estado da textura é composto de: Imagem Parâmetros inicializados com gltexparameter Carregar e manter os estados de textura consome um tempo considerável de aplicativos com base em texturização (exemplo, jogos)

Objetos Textura (2) Transferir texturas da memória principal para a memória de vídeo é o gargalo do sistema Solução: carregar os estados de textura antecipadamente Realizar a troca rápida entre eles quando for utilizar

Implementação O estado da textura é identificado por um inteiro Estados diferentes possuem diferentes identificadores Para reservar uma quantidade de identificadores no OpenGL: void glgentextures(glsizei n, GLuint *textures); Onde: n quantidade de estados de texturas Textures ponteiro para GLuint que será preenchido com os identificadores de objetos

Implementação (2) Para selecionar um dado estado de textura, para ser usado como textura atual, deve-se fazer um bind void glbindtexture(glenum target, GLuint texture); Onde: Target GL_TEXTURE_?D Texture o identificador do objeto Qualquer operação realizada com texturas modifica somente o objeto atual Carregar uma textura, mapear nos vértices,...

Implementação (3) Para apagar um objeto de textura, previamente alocado void gldeletetextures(glsizei n, GLuint *textures); Onde os parâmetros são os mesmos da função glgentextures Para testar se um identificador ainda é válido: GLboolean glistexture(gluint texture);