tÓpicos avanÇados de computaÇÃo grÁficajpp/sgrai/topicos avancados.pdf · • desligar o teste...

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

Upload: donhi

Post on 02-Oct-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

TÓPICOS AVANÇADOS DECOMPUTAÇÃO GRÁFICA

Computação Gráfica

Licenciatura em Engenharia Informática

António Costa / DEI-ISEP

Page 2: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Desenho de Texto

• Modo Matriz de Pixels (bitmap)

– Não suporta transformações

– Existem algumas fontes pré-definidasvoid glutBitmapCharacter(void *font, int character);int glutBitmapWidth(GLUTbitmapFont font, int character);

• Modo Vectorial (stroke)

01-03-2007 2

• Modo Vectorial (stroke)

– Suporta transformações

– Existem também fontes pré-definidasvoid glutStrokeCharacter(void *font, int character);int glutStrokeWidth(GLUTstrokeFont font, int character);

• Texto é bidimensional

– Pode ser ancorado através de glRasterPos...( GLdouble x, GLdouble y)

Page 3: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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

01-03-2007 3

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

Page 4: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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

01-03-2007 4

– 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()

Page 5: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Modo de Rendering Selecção

• Modo GL_SELECT

– 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

01-03-2007 5

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);

Page 6: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Modo de Rendering Feedback

• Modo GL_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

01-03-2007 6

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);

Page 7: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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

01-03-2007 7

• 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

Page 8: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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);

01-03-2007 8

– 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!

Page 9: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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!)

01-03-2007 9

– 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!

Page 10: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Composição de Pixels

• Composição (blending)

– 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 formaglDrawBuffer(GL_BACK);

01-03-2007 10

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)

Page 11: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Sombras

• O papel das 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

01-03-2007 11

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

Page 12: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Sombras e Fonte de Luz

• Porque existem sombras?

– 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

01-03-2007 12

bloqueios do trajecto da luz e gera vários tipos de descontinuidades

na superfície dos objectos

Page 13: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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

01-03-2007 13

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

Page 14: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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 é

01-03-2007 14

• Com o chão em z=0, a transformação homogénea é

sendo (xl,yl,zl) as coordenadas da fonte de luz

1 0 0 00 1 0 0-xl/zl -yl/zl 0 00 0 0 1

Page 15: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Algoritmos de Geração de Sombra

• Volumes de Sombra

– Volume espacial gerado pela silhueta de um objecto

01-03-2007 15

Page 16: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Algoritmos de Geração de Sombra

• Geração de Sombras

– 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

01-03-2007 16

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

Page 17: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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

01-03-2007 17

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

Page 18: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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

01-03-2007 18

• 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!)

Page 19: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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

Page 20: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Sombras em OpenGL

01-03-2007 20

+

Sombras projectivas

www.dei.isep.ipp.pt/compgraf/opengl/etc/shadow.zip

Page 21: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Texturas

• Conceito de Textura

– 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)

01-03-2007 21

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

Page 22: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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)

01-03-2007 22

complexo e raramente usado (excepto em casos particulares)

T(u)

T(u,v)

T(u,v,w)

(xw,yw,zw) (xs,ys)

Espaço textura Espaço objecto Espaço ecrã

Page 23: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Texturas em OpenGL

• Mapas de textura

– 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

01-03-2007 23

– 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)

Page 24: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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

01-03-2007 24

– 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

Page 25: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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

01-03-2007 25

• 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

Page 26: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Texturas em OpenGL

• Textura 2D

– Terreno composto de

malha triangular

– Textura definida por

ficheiro de imagem

01-03-2007 26

ficheiro de imagem

Page 27: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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);

01-03-2007 27

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

Page 28: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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

01-03-2007 28

• 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

Page 29: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Texturas em OpenGL

• Uso de billboards

– 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

01-03-2007 29

• Criar dois vectores a partir dessa matriz

Vx = (mat[0], mat[4], mat[8]);

Vy = (mat[1], mat[5], mat[9]);

• O plano definido por Vx e Vy é paralelo ao plano de visualização e um

quadrilátero nesse plano obtém-se da forma

PA = PT + ((-Vx - Vy) * Size);

PB = PT + ((Vx - Vy) * Size);

PC = PT + ((Vx + Vy) * Size);

PD = PT + ((-Vx + Vy) * Size);

Page 30: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Texturas em OpenGL

• Sistema de Partículas

– As partículas representadas por

texturas com billboard estão

sempre alinhadas com o ecrã

– As outras partículas nunca

01-03-2007 30

– As outras partículas nunca

estão alinhadas com o ecrã

www.dei.isep.ipp.pt/compgraf/opengl/etc/billboard.zip

Textura com billboard

Textura sem billboard

Page 31: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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

01-03-2007 31

– 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!

Page 32: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Texturas em OpenGL

• Texturas algorítmicas

– Mapas de textura gerados por

forma algorítmica

– Geradas pela aplicação

• Pré-processamento

01-03-2007 32

• 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

Page 33: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

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 OPCIONAL

01-03-2007 33

– 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

Page 34: TÓPICOS AVANÇADOS DE COMPUTAÇÃO GRÁFICAjpp/sgrai/Topicos avancados.pdf · • Desligar o teste de profundidade ( depth test ) • Elevar ligeiramente o chão na geração da

Técnicas Multipasso - Exemplo

01-03-2007 34