Computação Gráfica - 13

Documentos relacionados
Computação Gráfica - 13

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

Mapeamento de Textura

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

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

Mapeamento de Texturas

Mapeamento de Texturas

Computação Gráfica - OpenGl 02

Fundamentos de Computação Gráfica. Texturas

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

Computação Gráfica - 10

Computação Gráfica - 09

Computação Gráfica - 09

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

Computação Gráfica. Texturas

Computação Gráfica - 13

Computação Gráfica - 11

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

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

Computação Gráfica OpenGl 01

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

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

FUNDAMENTOS E APLICAÇÕES. Luis Valente

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

Computação Gráfica OpenGL 05 3D

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

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

Computação Gráfica 09

Computação Gráfica. Texturas

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

Ptex e outras ferramentas para modelagem de animação

Geração Procedural de Terrenos em GPU

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

CG 2013/2014 Primeiro Teste LEIC Alameda/Taguspark

António Costa. Paulo Roma Cavalcanti

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

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

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

Computação Gráfica - 01

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

Imagem ou Desenhos e Gráficos vetorial ou raster?

Computação Gráfica II

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

LISTA DE ATIVIDADES Semestre Letivo 2018/1

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

Computação Gráfica OpenGl 03

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

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

Computação Gráfica - 04

Aula /2 Sistemas de coordenadas Window x Viewport

Processamento de Malhas Poligonais

Imagem e Gráficos. vetorial ou raster?

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

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

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

Computação Gráfica - 06

Prof. Jorge Cavalcanti

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

Computação Gráfica OpenGL 05 3D

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

Computação Gráfica - 12

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

5 Integrando objetos sintéticos à cena real

Algoritmos e Programação

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

Materiais e UVW Map Renderizar com Rhino parte #03

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

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

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

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

LISTA DE ATIVIDADES Semestre Letivo 2018/1

Transcrição:

Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Computação Gráfica - 13 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav

Uso de Texturas Os modelos de iluminação não são sempre apropriados para descrever todas as propriedades da superfície e um objeto, por exemplo, rugosidade e padronagem. Em princípio,é possível modelar esses detalhes com o acréscimo de componentes na geometria da superfície ou usando materiais de propriedades óticas distintas. Essa forma torna o processamento muito complexo, de modo que, na prática esses efeitos são modelados com o uso de mapas de textura. A textura é uma técnica que quando aplicada junto à iluminação, procura dar às superfícies dos objetos características que os façam parecer mais reais, quando comparados a simples técnicas de iluminação e sombreamento. Página 2

Uso de Texturas A idéia básica é reproduzir sobre a superfície do objeto as propriedades de alguma função ou mapeamento bidimensional. Para trabalhar com mapas de texturas é fundamental e ter um bom programa de composição e tratamento de imagens. Imagens podem ser obtidas em bibliotecas de texturas disponíveis na Internet. Mapa de textura Modelo Modelo texturizado Página 3

Uso de Texturas Mapas procedurais Um bitmap é uma imagem produzida por uma matriz fixa de pixels coloridos. Os mapas procedurais, por exemplo, um tabuleiro de xadrez, podem ser gerados por um algoritmo. Esses mapas dispensam a utilização de imagens e, podem ser inclusive tridimensionais: São muito usados para a síntese de cenas complexas ou aplicações em real-time (mármore, revestimentos, repetição de polígonos). Eles também são boas fontes para mapeamento de textura sintéticas. Página 4

Mapeamento de Texturas Funções ou imagens que são mapeadas sobre uma superfície. Tal função ou imagem é chamada de mapa de textura. Analogia com colagem de decalque sobre um objeto. Página 5

Mapeamento de Texturas Arranjos de texturas Armazenar um arranjo de cores (3D ou 2D) e associá-los a uma posição espacial. Assume-se, para o caso 2D, que as dimensões nas quais a textura será mapeada são as dimensões u e v. O mapa de texturas (imagem) tem dimensões n x e n y. n y n x v u Página 6

Mapeamento de textura Em um arranjo 2D, a textura é uma imagem de tamanho n x, n y. Cada pixel dessa imagem é chamado de texel (texture element). Dependendo do mapeamento, cada texel pode ocupar vários pixels da imagem final, ou vice-versa. n y n x Página 7

Mapeamento de textura Principais tipos de mapeamento: Esférico: coordenadas uv são mapeadas segundo coordenadas polares esféricas. Planar: coordenadas uv mapeadas ortogonalmente. Cilíndrico: coordenadas uv são mapeadas segundo coordenadas polares cilíndricas. Cúbico: coordenadas uv mapeadas ortogonalmente nos seis planos de um cubo. Página 8

Mapeamento esférico Exemplo: Página 9

Mapeamento planar Exemplo: Página 10

Mapeamento cilíndrico Exemplo: Página 11

Mapeamento cúbico Exemplo: Página 12

Outros mapeamentos de texturas Mapeamento de superfícies paramétricas: Ao renderizar uma superfície paramétrica, dispensamos o tipo de forma de mapeamento (esférico, cilíndrico, cúbico) e tratamos os parâmetro uv da superfície como parâmetros uv normalizados do mapa de textura. Página 13

Mapeamento de Reflexão O mapeamento de reflexão (Environment mapping) é o tipo do mapeamento que reflete na superfície dos objetos os elementos que compõem a cena. Pode ser feita a partir de duas formas: A primeira é envolver a figura com um cubo, onde em cada face com uma textura que se deseja projetar. Para cada vértice do objeto, um vetor de reflexão é calculado, e indica uma das seis imagens para aquela face/superfície. Página 14

Mapeamento de Reflexão Mapeamento de reflexão: Uma segunda forma é gerar uma única imagem de uma superfície esférica refletindo o ambiente. Página 15

Bump Map Quando utilizamos uma fotografia de uma superfície áspera como mapa de textura, a superfície renderizada não fica muito correta. A direção da fonte de luz utilizada para criar o mapeamento é diferente da direção da iluminação do sólido. Uma técnica para amenizar esse efeito, dando uma perturbação na normal à superfície antes de aplicar o modelo de iluminação. Essa perturbação produz um deslocamento virtual na posição dos pontos da superfície. Página 16

Bump Map Bump Map é uma técnica usada para adicionar realismo sem modificar a geometria ao objeto. Essa técnica adiciona um sombreamento nos pixels, produzindo uma ilusão de relevo no objeto renderizado. A cor de uma superfície está relacionada com ângulo entre o vetor normal da superfície e a direção da luz. Em uma superfície plana, o vetor normal é o mesmo para toda a superfície, logo a cor da superfície será sempre a mesma. No bump map, as propriedades de refração da luz são usadas para indicar quais partes são mais escuras ou mais claras Página 17

Bump Map Textura Bump Map Parede sem Bump Map Parede com Bump Map Página 18

Texturas em OpenGl A utilização de mapeamento de texturas no OpenGl é um procedimento complexo, pois existem variações e diversas funções de manipulação. O uso de texturas requer a execução de dois passos distintos: a CARGA e a APLICAÇÃO da textura. O mapeamento de textura 2D em OpenGL consiste em carregar uma imagem de um arquivo e "colar" esta imagem na superfície do(s) objeto(s). É importante salientar que a largura e a altura desta imagem devem ser potências de 2. Página 19

Texturas em OpenGl Os passos para o mapeamento de textura em Opengl são: - Ler uma imagem e armazenar num objeto adequado; - Criar um identificador para a textura; - Definir a textura em OpenGL; - Especificar como a textura será aplicada em cada pixel (filtros); - Habilitar o mapeamento de textura; - Desenhar os objetos fornecendo uma coordenada de textura para cada coordenada geométrica. Obs: Mapeamento de textura funciona apenas no modo RGBA. glutinitdisplaymode ( GLUT_DEPTH GLUT_DOUBLE GLUT_RGBA ) Página 20

Texturas em OpenGl Função para definir uma textura: void glteximage2d (GLenum target, GLint level, GLint components, GLsizei width, GLint height, GLenum format, GLenum type, const GLvoid *pixels) target: GL_TEXTURE_2D level: nível de detalhe da imagem de textura components:número de valores de cor para cada pixel (RGB=3, RGBA=4) width e height: tamanho da imagem de textura (devem ser potências de 2, isto é, a imagem de textura deve ter dimensões múltiplas de 2). format: tipo de valor de cor esperado (GL_ALPHA, GL_COLOR_INDEX, GL_RED, GL_RGB, GL_RGBA,...) type: indica o formato e tipo de dado (GL_BYTE, GL_SHORT, GL_INT, GL_FLOAT, GL_BITMAP,...) pixels: textura Página 21

Texturas em OpenGl OpenGL tem três modos de aplicação da textura: GL_MODULATE Ajusta valores de cor e iluminação com a imagem de textura (mais usado) GL_DECAL Usa apenas a imagem de textura (cor e iluminação não alteram a aparência da textura) GL_BLEND Usado com um ou dois componentes de textura (imagem de textura é misturada com a cor de textura e com as informações de cor e iluminação). void gltexenvi(glenum target, GLenum pname, TYPE param) target deve ser GL_TEXTURE_ENV pname é GL_TEXTURE_ENV_MODE param pode ser GL_DECAL, GL_MODULATE,GL_BLEND Página 22

Texturas em OpenGl Filtros de textura: São usados para interpolar pixels de textura Dois tipos fornecidos GL_TEXTURE_MIN_FILTER para polígonos que são menores que a imagem de textura; GL_TEXTURE_MAG_FILTER para polígonos que são maiores que a imagem de textura. Página 23

Texturas em OpenGl Carga da Textura - Para a aplicação da textura é preciso criar uma relação entre os vértices da textura e os vértices dos polígonos sobre os quais se desenha mapear a textura escolhida. Na figura a seguir as letras A, B, C e D definem os vértices da textura e os vértices A1, B1, C1 e D1 os vértices de polígono 3D onde deve ser mapeada esta textura. O processo de mapeamento de texturas em OpenGL consiste em "aplicar" a imagem 2D sobre o polígono 3D de forma que os pontos A, B, C e D sejam encaixados sobre os pontos A1, B1, C1 e D1. Página 24

Texturas em OpenGl Para permitir a construção desta correspondência entre a imagem 2D e o polígono 3D usa-se a função gltexcoord2f antes da definição do ponto 3D. Por exemplo: gltexcoord2f(0.0f,0.0f); glvertex3f(1.0f,-1.0f,1.0f); define que o ponto (0.0, 0.0) da textura 2D corresponde ao ponto (1.0, -1.0, 1.0) do polígono 3D. O sistema de coordenadas da textura tem como (0,0) o ponto inferior esquerdo da imagem e como (1,1) o ponto superior direito. Ou seja, na imagem acima temos as seguintes coordenadas para os pontos A, B, C e D. Página 25

Texturas em OpenGl O sistema de coordenadas da textura tem como (0,0) o ponto inferior esquerdo da imagem e como (1,1) o ponto superior direito. Ou seja, na imagem abaixo temos as seguintes coordenadas para os pontos A, B, C e D. Vértice da Textura Coordenada A (0,1) B (1,1) C (1,0) D (0,0) Supondo que o polígono 3D é a face lateral direita de um cubo de aresta 2 com o centro no ponto (0,0,0) teremos as seguintes coordenadas: Vértice do Polígono 3D Coordenada Página 26 A1 1.0, 1.0, 1.0 B1 1.0, 1.0, -1.0 C1 1.0, -1.0, -1.0 D1 1.0, -1.0, 1.0

Texturas em OpenGl O mapeamento da textura sobre o polígono se dá através do seguinte trecho de código: // Define a textura corrente glbindtexture ( GL_TEXTURE_2D, texture_id[0] ); // GL_TEXTURE_2D ==> define que será usada uma textura 2D (bitmaps) // texture_id[cube_texture] ==> define o número da textura // associa cada vértice do polígono a um ponto da textura gltexcoord2f(1.0f, 0.0f); glvertex3f( 1.0f, -1.0f, -1.0f); gltexcoord2f(1.0f, 1.0f); glvertex3f( 1.0f, 1.0f, -1.0f); gltexcoord2f(0.0f, 1.0f); glvertex3f( 1.0f, 1.0f, 1.0f); gltexcoord2f(0.0f, 0.0f); glvertex3f( 1.0f, -1.0f, 1.0f); Códigos Exemplos: http://migre.me/23oif - arquivo TGA http://migre.me/23rnb - arquivo JPG Página 27