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

Documentos relacionados
Computação Gráfica - 13

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

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

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

Computação Gráfica - 13

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

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

Computação Gráfica. Licenciatura em Engenharia Informática e de Computadores Alameda/Taguspark. 1º Exame 29 Junho de 2010

Mapeamento de Texturas

Mapeamento de Textura

CG 2013/2014 Primeiro Teste LEIC Alameda/Taguspark

António Costa. 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

Fundamentos de Computação Gráfica. Texturas

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

Computação Gráfica - OpenGl 02

Mapeamento de Texturas

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

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

Exame de Época Especial Computação Gráfica

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

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 2015/2016 Segundo Teste LEIC Alameda/Taguspark. Segundo Teste. 18 de Novembro de 2015

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

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

Computação Gráfica - 12

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

Sistemas Gráficos e Modelos Cap 1

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

2º Exame. Computação Gráfica

Computação Gráfica. Texturas

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

1º Teste Computação Gráfica

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

Computação Gráfica. Agostinho Brito. Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte

A terceira dimensão. Modelagem tridimensional Elaboração tridimensional Realidade virtual

1º Exame Computação Gráfica

Exame Tipo Computação Gráfica

Computação Gráfica - 11

1º Exame. Computação Gráfica

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

Pipeline de Visualização 3D

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

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

Curso: Especializado Maya

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

Prof. Fernando V. Paulovich 25 de abril de SCC Computação Gráca

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

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

Transformações Geométricas

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

Triangulação Mapeamento em Viewport Modelação Geométrica

Computação Gráfica OpenGL 05 3D

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

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

1º Teste de Computação Gráfica 3º Ano

Geração Procedural de Terrenos em GPU

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

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

Materiais e UVW Map Renderizar com Rhino parte #03

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

1º Exame. Computação Gráfica

Transcrição:

TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICA Computação Gráfica Licenciatura em Engenharia Informática António Costa / DEI-ISEP

Desenho de Texto Modo Matriz de Pixels (bitmap) Não suporta transformações Existem algumas fontes pré-definidas void glutbitmapcharacter(void *font, int character); int glutbitmapwidth(glutbitmapfont font, int character); Modo Vectorial (stroke) Suporta transformações Existem também fontes pré-definidas void glutstrokecharacter(void *font, int character); int glutstrokewidth(glutstrokefont font, int character); Texto é bidimensional Pode ser ancorado através de glrasterpos...( GLdouble x, GLdouble y) 01-03-2007 2

Framebuffers auxiliares Framebuffers Auxiliares Alfa: matriz de células de cor para tratamento de transparência e translucência Stencil: matriz de células conjunto de bits usada para operações de máscara, detecção de interior, etc Acumulação: matriz de células de cor RGB usado para acumular várias imagens e efectuar operações de combinação, anti-aliasing, etc Usos diversos Técnicas multipasso (renderings sucessivos), etc 01-03-2007 3

Modos de Rendering Modos de Rendering Modo GL_RENDER - as primitivas gráficas dão origem a fragmentos de pixels no framebuffer Modo GL_SELECT - devolve uma lista de objectos afectados pela projecção de visualização, sem mexer no framebuffer - função glselectbuffer() Modo GL_FEEDBACK - devolve informação dos objectos afectados pela projecção, sem mexer no framebuffer - função glfeedbackbuffer() 01-03-2007 4

Modo GL_SELECT Modo de Rendering Selecção Define-se um buffer de selecção Faz-se um rendering usando uma projecção Obtém-se o número de objectos que estão ou intersectam o volume de visualização e informações no buffer (profundidade, lista ordenada de objectos, etc) A aplicação analisa o buffer para determinar qual o objecto que lhe interessa... GLuint buffer[buf_size]; GLint hits; glselectbuffer (BUF_SIZE, buffer); glrendermode(gl_select); /* desenho de objectos */ hits = glrendermode(gl_render); 01-03-2007 5

Modo GL_FEEDBACK Modo de Rendering Feedback Define-se um buffer de feedback Faz-se um rendering usando uma projecção Obtém-se o número de objectos que estão ou intersectam o volume de visualização e informações sobre cada objecto no buffer (tipo de objecto, número de vértices, cores, coordenadas, etc) A aplicação analisa o buffer... GLuint buffer[buf_size]; GLint hits; glfeedbackbuffer (BUF_SIZE, GL_3D, buffer); glrendermode(gl_feedback); /* desenho de objectos */ hits = glrendermode(gl_render); 01-03-2007 6

Uso dos Modos de Selecção Modo GL_RENDER Visualização convencional de imagem Modo GL_SELECT Usado para fazer selecção de objecto(s) Define-se uma projecção ortográfica em torno do cursor Obtém-se a lista de objectos por trás do cursor Escolhe-se um deles (aquele que está mais próximo) Modo GL_FEEDBACK Usado para exportar informação da cena Geração de ficheiros da cena (imagem, Postscript, etc) Ficheiro geneps.c no site da disciplina 01-03-2007 7

Tratamento de Anti-aliasing Redução do anti-aliasing em linhas Através dos seguintes comandos: glenable(gl_blend); glblendfunc(gl_src_alpha, GL_ONE_MINUS_SRC_ALPHA); glenable(gl_line_smooth); glhint(gl_line_smooth_hint, GL_NICEST); O efeito é misturar a nova cor com a cor anterior do pixel Redução do anti-aliasing em polígonos Através dos seguintes comandos: glenable(gl_blend); glblendfunc(gl_src_alpha_saturate, GL_ONE); glenable(gl_polygon_smooth); glhint(gl_polygon_smooth_hint, GL_NICEST); Os objectos devem ser desenhados ordenados de longe para perto! 01-03-2007 8

Tratamento de Anti-aliasing Redução através do buffer de acumulação Esta técnica é a melhor e mais demorada A cena é ligeiramente deslocada no espaço de ecrã e vários renderings são acumulados no buffer de acumulação Troca-se aliasing por ruído (o olho humano não detecta tão bem!) void frustum_jitter(gldouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far, GLdouble xoff, GLdouble yoff) { GLfloat scalex, scaley; GLint viewport[4]; glgetintegerv(gl_viewport, viewport); scalex = (right - left)/viewport[2]; scaley = (top - bottom)/viewport[3]; glfrustum(left - xoff * scalex, right - xoff * scalex, top - yoff * scaley, bottom - yoff * scaley, near, far); } Quanto mais amostras se usar melhor é o resultado! 01-03-2007 9

Composição (blending) Composição de Pixels Ferramentas de transparência, composição, pintura e outros efeitos Também se usa para desenho de objectos sem aliasing A composição de n imagens efectua-se da seguinte forma gldrawbuffer(gl_back); glreadbuffer(gl_back); glclear(color_buffer_bit); render_scene(1); glaccum(gl_load, 1/n); ; render_scene(n); glaccum(gl_load, 1/n); Efeitos complexos gerados por composição Motion blur (movimento desfocado) Sombras suaves Profundidade de campo (zonas de imagem focadas) 01-03-2007 10

O papel das sombras Sombras Uma das técnicas possíveis para melhorar a percepção espacial de cenas 3D Sombras simples podem ser usadas para remover a impressão de objectos flutuantes As sombras variam muito em função do contexto de iluminação da cena Arestas de sombra nítidas ou difusas Zonas de umbra e/ou penumbra Podem ser geradas através de reflexão (luzes de tipo secundário) - conceito de iluminação global 01-03-2007 11

Porque existem sombras? Sombras e Fonte de Luz Há emissão de luz em áreas ou volumes pequenos Há emissão de luz segundo direcções muito coerentes A visibilidade das fontes de luz varia abruptamente devido a bloqueios do trajecto da luz e gera vários tipos de descontinuidades na superfície dos objectos 01-03-2007 12

Sombras em Computação Gráfica Aspectos a ter em conta Não há sombras se a fonte de luz coincide com o ponto de observação Se a fonte de luz é pontual não há zonas de penumbra geradas por essa fonte Uma fonte de luz não-pontual (linear ou área) pode ser aproximada por um conjunto de luzes pontuais devidamente espaçadas Em cenas estáticas as sombras e/ou penumbras podem ser calculadas previamente e não dependem do ponto de observação Em cenas com objectos dinâmicos as sombras e/ou penumbras têm de ser recalculadas para cada imagem a visualizar 01-03-2007 13

Método de Sombras Simples no Chão Cenas com um chão poligonal plano Correcto apenas em cenas com objectos afastados entre si de modo a não se sombrearem mutuamente Projectam-se os objectos no plano do chão Com o chão em z=0, a transformação homogénea é 1 0 0 0 0 1 0 0 -x l /z l -y l /z l 0 0 0 0 0 1 sendo (x l,y l,z l ) as coordenadas da fonte de luz 01-03-2007 14

Algoritmos de Geração de Sombra Volumes de Sombra Volume espacial gerado pela silhueta de um objecto 01-03-2007 15

Geração de Sombras Algoritmos de Geração de Sombra Algoritmo shadow z-buffer Usa um z-buffer para cada fonte de luz Em pré-processamento, faz-se o rendering da posição da fonte de luz e guarda-se a informação de distância do z-buffer de cada fonte de luz No rendering a partir do ponto de observação, o ponto (x,y,z) associado ao pixel é mapeado no z-buffer da fonte de luz a fim de saber se está sombreado Pode ser acelerado através de hardware gráfico 01-03-2007 16

Sombras em OpenGL Método do chão 1. Fazer o rendering normal da cena 2. Fazer a matriz modelview igual à identidade e em seguida chamar glscalef (1.0,1.0,0.0) 3. Posicionar e orientar o objecto que gera sombra 4. Definir o contexto OpenGL para a cor de sombra 5. Fazer o rendering do objecto que gera sombra Aspectos práticos a ter em conta Desligar o teste de profundidade (depth test) Elevar ligeiramente o chão na geração da sombra 01-03-2007 17

Sombras em OpenGL Vantagens do método do chão Pode ser aplicado a superfícies planas tipo paredes Em aplicações muito dinâmicas pode ser uma solução adequada Limitações do método do chão Só funciona bem com superfícies planas como chão A cor da sombra é uma versão comprimida das cores do objecto que gera a sombra e não do objecto chão As normais do objecto que gera a sombra ficam igualmente comprimidas e podem dar origem a artefactos de rendering A qualidade das sombras não é grande (evitar ver as sombras!) 01-03-2007 18

Sombras em OpenGL Método dos volumes de sombra Trata as sombras geradas como objectos poliédricos Um buffer auxiliar (stencil) é usado para determinar a intersecção entre o objecto e o volume de sombra 01-03-2007 19

Sombras em OpenGL + Sombras projectivas www.dei.isep.ipp.pt/compgraf/opengl/etc/shadow.zip 01-03-2007 20

Conceito de Textura Texturas Meio de obter detalhe visual nas superfícies através de alterações de cor ou propriedades ópticas (reflexão difusa ou especular, etc) Necessita de uma parametrização local da superfície à volta de um ponto: sistema de coordenadas de textura (mapeamento) Variantes no mapeamento de texturas Manipulação de cor (vulgo decalque) Mapeamento de ambiente envolvente (reflexão simulada) Perturbação da normal (bump mapping) Uso de texturas permite obter elevada qualidade visual evitando a modelação complicada de pormenores geométricos 01-03-2007 21

Texturas Formas de mapeamento de texturas O espaço textura pode ser uni/bi/tridimensional A forma mais vulgar é bidimensional (imagens decalcadas) O mapeamento de espaço ecrã para espaço textura é muito complexo e raramente usado (excepto em casos particulares) T(u) T(u,v) T(u,v,w) (x w,y w,z w ) (x s,y s ) Espaço textura Espaço objecto Espaço ecrã 01-03-2007 22

Mapas de textura Texturas em OpenGL 1D e 2D com dimensões potências de 2! As coordenadas de texturas são associadas aos vértices geométricos dos objectos e variam entre 0 e 1 O acesso ao mapa de textura é feito através dessas coordenadas e cada elemento do mapa designa-se texel Quando estão fora de [0..1] pode usar-se um dos métodos CLAMP - as coordenadas são limitadas a [0 1] a textura dos bordos repete-se fora da região unitária REPEAT - as coordenadas são ajustadas a [0 1] a textura repete-se nas direcções principais (tiling) 01-03-2007 23

Texturas em OpenGL Filtragem de texturas Justifica-se quando Um pixel contém muitos texels (zoom ao longe) Um texel aparece em muitos pixels (zoom ao perto) Se não houver filtragem resulta Ruído nos pixels e perda de informação visual (zoom ao longe) Visualização óbvia dos texels como quadrados (zoom ao perto) Existem vários métodos de filtragem Amostragem ao ponto - escolhe-se o texel mais próximo Interpolação linear de 4 texels - bom para zoom ao perto Mipmapping (textura em várias escalas) - bom para zoom ao longe 01-03-2007 24

Texturas em OpenGL Aplicação da textura O processo que determina a cor final do pixel em função dos valores inicial e da textura é a texture environment function gltexenv() MODULATE - multiplica o valor do texel pelo valor do pixel DECAL - faz uma mistura alfa entre os valores do texel e do pixel BLEND - usa a textura para misturar o valor do texel e um valor de cor REPLACE - substitui o valor do pixel pelo valor do texel A definição automática de níveis sucessivos de uma textura (mipmaps) faz-se através da função glubuild2dmipmaps() O nível de detalhe apropriado à visualização da textura determina qual dos mipmaps vai ser usado no mapeamento Produz geralmente os melhores resultados 01-03-2007 25

Textura 2D Terreno composto de malha triangular Textura definida por ficheiro de imagem Texturas em OpenGL 01-03-2007 26

Texturas em OpenGL Mapeamento de imagem /* rotina de inicialização */ read_jpeg_file("texture.jpg",&tex,&width,&height,&bpp); glenable(gl_texture_2d); gltexenvi(gl_texture_env,gl_texture_env_mode,gl_decal); glhint(gl_perspective_correction_hint,gl_nicest); glgentextures(2,texobj); glbindtexture(gl_texture_2d,texobj[0]); glteximage2d(gl_texture_2d,0,3,width,height,0,gl_rgb, GL_UNSIGNED_BYTE, tex); gltexparameteri(gl_texture_2d,gl_texture_min_filter,gl_nearest); gltexparameteri(gl_texture_2d,gl_texture_mag_filter,gl_nearest); gltexparameteri(gl_texture_2d,gl_texture_wrap_s,gl_repeat); gltexparameteri(gl_texture_2d,gl_texture_wrap_t,gl_repeat); /* rotina de desenho */ glbindtexture(gl_texture_2d,texobj[0]); glbegin(gl_polygon); gltexcoord2f(0.0,0.0); glvertex2f(-1.0,-1.0); gltexcoord2f(1.0,0.0); glvertex2f( 1.0,-1.0); gltexcoord2f(1.0,1.0); glvertex2f( 1.0,1.0); gltexcoord2f(0.0,1.0); glvertex2f(-1.0,1.0); glend(); www.dei.isep.ipp.pt/compgraf/opengl/etc/texdemo.zip 01-03-2007 27

Texturas em OpenGL Billboards Técnica que substitui geometria complexa por geometria simples com mapeamento de textura de modo a obter-se realismo e rapidez A geometria simplificada tem de estar orientada para a câmara Rotação dinâmica do billboard em função da câmara Em objectos cilíndricos a operação é fácil Muito usada em jogos para objectos distantes Vários escalas de texturas nos billboards Ao perto usa-se geometria realista Vantajosa quando existe muita memória para mapeamento de texturas 01-03-2007 28

Uso de billboards Texturas em OpenGL Alinhamento dos billboards em relação à câmara Obter a matriz de visualização MODELVIEW glgetfloatv(gl_modelview_matrix, mat); Criar dois vectores a partir dessa matriz V x = (mat[0], mat[4], mat[8]); V y = (mat[1], mat[5], mat[9]); O plano definido por V x e V y é paralelo ao plano de visualização e um quadrilátero nesse plano obtém-se da forma P A = P T + ((-V x - V y ) * Size); P B = P T + ((V x - V y ) * Size); P C = P T + ((V x + V y ) * Size); P D = P T + ((-V x + V y ) * Size); 01-03-2007 29

Sistema de Partículas As partículas representadas por texturas com billboard estão sempre alinhadas com o ecrã As outras partículas nunca estão alinhadas com o ecrã Texturas em OpenGL Textura com billboard Textura sem billboard www.dei.isep.ipp.pt/compgraf/opengl/etc/billboard.zip 01-03-2007 30

Texturas OpenGL Texturas 3D Extensão lógica de textura 2D O texel bidimensional transforma-se num texel cúbico O acesso ao valor do texel faz-se através de três coordenadas (s,r,t) O uso de texturas 3D é apropriado para Modelar materiais sólidos heterogéneos (granito, mármore, etc) Obter texturas 2D animadas Obter billboards dinâmicos (dependentes da altura da câmara, etc) Criar texturas algorítmicas baseadas em funções de ruído para simular fenómenos tais como fogo, fumo, nuvens, materiais heterogéneos, etc Os requisitos de memória tendem a ser elevados! 01-03-2007 31

Texturas em OpenGL Texturas algorítmicas Mapas de textura gerados por forma algorítmica Geradas pela aplicação Pré-processamento Durante a execução Podem ser usados para controlar diversos efeitos Cor Opacidade Especularidade www.dei.isep.ipp.pt/compgraf/opengl/etc/ptex.zip 01-03-2007 32

Técnicas Multipasso Técnicas Multipasso Permitem obter uma imagem em qualquer plataforma A qualidade é maior quando o hardware é mais sofisticado Rendering Multipasso no jogo QUAKE III Passos 1-4: acumulação de texturas bump map Passo 5: iluminação difusa Passo 6: texturas de base com componente especular Passo 7: iluminação especular Passo 8: iluminação emissiva Passo 9: efeitos atmosféricos/volumétricos Passo 10: efeitos de flash no ecrã OPCIONAL OPCIONAL OPCIONAL OPCIONAL OPCIONAL 01-03-2007 33

Técnicas Multipasso - Exemplo 01-03-2007 34