Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

47
04/07/22 OpenGl 1/24 Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs) Introdução a Multimídia OpenGL

description

Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs). Introdução a Multimídia OpenGL. Roteiro. Introdução Conceito e Motivação História Comparativo - Análise de Competidores(Directx) Utilização de Mercado Como Utilizar Operação Normal - PowerPoint PPT Presentation

Transcript of Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

Page 1: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 1/24

Grasielle Valença (gval)Marcela Bezerra (mbs)

Thiago Burgo (tbb)Paulo Thiago (ptgs)

Introdução a MultimídiaOpenGL

Page 2: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

OpenGl 2/24

Roteiro

• Introdução– Conceito e Motivação– História– Comparativo - Análise de Competidores(Directx)– Utilização de Mercado

• Como Utilizar– Operação Normal– Principais Conceitos OpenGL– Formas de Representação Gráfica

• Representação Gráfica Bidimensional• Representação Gráfica Tridimensional

– Bibliotecas– Características do OpenGL

• Estado da Arte• Dúvidas?

Page 3: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

Introdução

Page 4: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 4/24

Conceito e Motivação

• O sistema gráfico mais popular atualmente e o OpenGL (GL - Graphics Library) que provê características avançadas e pode ser utilizado em modo imediato ou com display list.

• Oferecendo uma interface entre o software e o hardware gráfico, que aproveita recursos gráficos do um componente .

• OpenGL é um padrão relativamente novo e é baseado na biblioteca GL das workstations IRIS da Silicon Graphics.

Page 5: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 5/24

Conceito e Motivação

• Código fonte disponível (MesaGL ou Mesa3D) • É um pacote de ferramentas que consiste em

um conjunto de procedimentos e funções.• Permite manipulação gráficas fundamentais em

2D, 3D ao X.• Inclui especificação de parâmetros(matrizes de

transformação e coeficientes de iluminação)• Métodos de Antialiasing e operações sobre

pixels. • Pode ser usado com ou sem sistema de janela.

Page 6: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 6/24

Conceito e Motivação

• Ferramentas CAD.• Realidade virtual.• Simulações e visualizações científicas.• Desenvolvimento no campo dos videogames.• API implementada para várias plataformas• ARB (Architecture Review Board)

– 3DLabs, Apple, ATI, Dell Computer, Evans & Sutherland, Hewlett- Packard, IBM, Intel, Matrox, Microsoft, NVIDIA, SGI e Sun.

Page 7: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 7/24

História

• Na década de 1980, era um verdadeiro desafio desenvolver softwares capazes de manipular uma vasta gama de hardwares gráficos: Os desenvolvedores de software escreviam interfaces gráficas e controladoras específicas para cada componente, um processo caro e cansativo.

Page 8: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 8/24

História

• Em 1990, a Silicon Grafics (SGI) foi líder no desenvolvimento de gráficos 3D. A API gráfica da empresa, o Iris GL, era considerado o Estado da Arte da época.

• A API concorrente, PHIGS, além de difícil de usar, estava defasada em funcionalidade em relação ao OpenGL, que já fornecia renderização imediata.

Page 9: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 9/24

História

• SGI converteu o padrão IrisGL em um padrão aberto, para competir com o hardware para aplicações 3D suportadas pelas extensões do PHIGS (Sun Microsystems, HP e IBM ) .

• APIs programáveis Íris Inventor e Íris Performer, para manter os clientes presos ao hardware da SGI e da IBM por alguns anos até evoluir com o suporte de vendas do OpenGL.

• O Padrão OpenGL é lançado em 1º de Julho de 1992.

Page 10: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 10/24

História

• A Microsoft libera o Direct3D em 1995, o que se tornaria o concorrente principal da tecnologia OpenGL. Em 1997, a Microsoft e a SGI iniciaram o Projeto Farenheit, que tinha com objetivo unificar as tecnologias gráficas, com a inclusão da HP em 1998. O projeto é abandonado em 1999.

Page 11: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 11/24

História

• Versão 1.3 – Foi liberada em 14/08/2001 sendo a terceira revisão desde a

original 1.0.– Compatível com as versões anteriores. – Mapeamento de textura previamente definido

• Compressão de Textura, Texturas mapeadas em um cubo, Multisample, MultiTextura.

• Versão 1.4– Lançada em 24/07/2002, também compatível com as versões

anteriores. – Fixed-function GL pipeline é encontrada nessa versão– Programa de extensão de vértice

Page 12: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 12/24

História

• Versão 1.5– Lançada em 29/07/2003,também compatível com as

versões anteriores. – Linguagem de especificação para OpenGL Shading

e o GL_ARB_shader_objects, GL_ARB_vertex_shader, and GL_ARB_fragment_shader.

– Shading, de alto-nível, pode ser carregada e usada no lugar do fixed-function pipeline.

• Versão 2.0

Page 13: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

Como Utilizar

Page 14: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 14/24

Operação Normal

• Seqüência de operações:– Abra uma janela gráfica;– Utilizar uma ou mais bibliotecas auxiliares que

permitam abrir uma janelas na tela do computador:• tais como GLUT, WGL (para Windows), glX (para o sistema

XWindow), AGL (para Apple) ou PGL (para OS/2).

– Prepare OpenGL para desenhar na janela– Defina como OpenGL irá desenhar nesta janelapor

exemplo, se será utilizado double buffering ou single buffering, e se as imagens serão geradas utilizando mapa de cores indexado ou diretamente no formato RGB.

Page 15: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 15/24

Operação Normal

– Defina o sistema de coordenadas e o estado inicial do OpenGL

– Defina limites inferior e superior dos eixos coordenados. Defina as fontes de luz existentes, cores para desenho de polígonos, modos de preenchimento de superfícies etc.

• Loop– Trate os eventos de mouse e teclado;– Mude a cena com base nos eventos

ocorridos;– Redesenhe a cena com OpenGL.

Page 16: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 16/24

Principais Conceitos OpenGL• Modos de desenho de pontos

(escrita/xor/transparência);• Ajuste de largura de linhas;• Aplicação de transparência ;• Ativação/desativação de serrilhamento (aliasing);• Mapeamento de superfícies com textura;• Seleção de janela de desenho;• Manipulação de fontes/tipos de iluminação e

sombreamento;• Transformação de sistemas de coordenadas;• Transformações em perspectiva;• Combinação de imagens (blending).

Page 17: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 17/24

Formas de Representação Gráfica• Representação Gráfica Bidimensional

– Se caracteriza por transferência de mapa de bits entre áreas de memória, onde cada mapa de bits existente na memória do computador ou da placa de vídeo representa uma figura.

– Realizando a transferência de bits a uma taxa de constante, é possível reproduzir a sensação de animação igual ocorre com os desenhos animados.

– Sprite é o nome dado ao composto de uma seqüência de imagens

– Usa-se uma técnica conhecida como double buffering

Page 18: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 18/24

Formas de Representação Gráfica• Representação Gráfica Bidimensional • Dois Tipos de Cenários:

– Cenários retangulares (2D): • Os baseados em textura possuem uma figura em

background, que pode ou não se movimentar dando a

impressão de que o mundo está se mexendo. • Os baseados em tiles dividem o mundo em pequenos

retângulos, onde cada um deles cuida de exibir a figura de

fundo e os sprites que estejam em seu domínio. – Cenários isométricos:utilizam uma visão em

perspectiva, o que cria a impressão de profundidade no jogo e possibilita uma boa jogabilidade.

Page 19: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 19/24

Formas de Representação Gráfica• Representação Gráfica Tridimensional

– Caracteriza por objetos representados por malhas de triângulos.

– Para cada triângulo, texturas podem ser mapeadas fazendo com que os objetos fiquem mais reais.

– Técnicas como iluminação dinâmica, neblina volumétrica, skybox, espelhamento e sistema de partículas.

– Cenários:• Cenários puramente 3D;• Cenários isométricos.

Page 20: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 20/24

Formas de Representação Gráfica

• Representação Gráfica Tridimensional– Possuem um hardware especializado para

realizar as operações que envolvem cálculos 3D.

– Código dos jogos tridimensionais é mais complexo que os 2D.

Page 21: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 21/24

Características do OpenGL• Vista do Programador

• Especificar as características dos objetos a serem visualizados• Descrição das suas propriedades• Determina a forma como as cenas criadas devem ser

visualizadas• Câmara virtual simples

• Posicionamento e orientação são realizados através de um número reduzido de funções.

• Funções para entrada através de um modelo de evento• Máquina de Estados

• Dados que processa são a descrição de objetos geométricos (como segmentos de reta e polígonos) ou indivisíveis (como mapas de bits).

• Pipeline Gráfico

Page 22: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 22/24

Pipeline Gráfico

Page 23: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 23/24

Pipeline Gráfico•Vertex Transformation

•Dados de entrada:• Vértices com as coordenadas tal como especificadas na aplicação, e outros atributos como normais, cores,

coordenadas de textura.• Estado do OpenGL

•Operações:• Transformação do vértice de acordo com as matrizesModelView e Projection;• Transformação de normais;• Iluminação do vértice;• Geração/Transformação das coordenadas de textura.

Page 24: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 24/24

Pipeline Gráfico•Primitive Assembly

•Dados de entrada:•Vértices transformados•Informação de conectividade (GL_TRIANGLE, GL_QUAD,...)

•Operações:•Construção de primitivas gráficas com vértices já transformados• Clipping contra view frustum• Back face culling• Early Z culling

Page 25: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 25/24

Pipeline Gráfico•Rasterization

•Dados de Entrada•Primitivas construídas na fase anterior

•Operações•Determina o conjunto de pixels cobertos por uma primitivageométrica•Para cada pixel é calculado o seu conjunto de atributos por•Interpolação dos atributos dos vértices da primitiva

•Resultado: conjunto de fragmentos

Page 26: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 26/24

Pipeline Gráfico•Texturização e Cor

•Os dados de entrada desta fase são os valores interpolados na fase anterior para cada fragmento•Nesta fase aplicam-se as texturas e calcula-se a cor do fragmento.

•Raster Operations•Dados de entrada

• Localização do pixel• fragmentos processados (cor e profundidade)

•Operações• Teste de scissor, alpha, stencil, profundidade (sem early Z cull)• Operações de blending: combina a cor do fragmento com a•Cor do pixel existente no color buffer

Page 27: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 27/24

Pipeline Gráfico• Resumo Visual

Page 28: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 28/24

Tipos de Funções OpenGL•Funções primitivas

•Geométricas •Imagem

•Funções de Atributos•Aspecto gráfico das primitivas

•Funções de Visualização •Propriedades da câmara virtual

•Funções de Apresentação e Interação•Permitem controlar as janelas e empregar mouses e teclados

•Funções de Controle•Determinar as características de uma dada implementação

Page 29: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 29/24

Biblioteca• GLU - OpenGL Utility Library: Define as matrizes

para projeção e orientação da visualização, e fazer o rendering de uma superfície.

• GLUT - OpenGL Utility Toolkit: – é um toolkit independente de plataforma– que inclui alguns elementos GUI (Graphical User Interface),

• pop-up e suporte para joystick. – Escrita por Mark Kilgard.– O seu principal objetivo é esconder a complexidade das APIs

dos diferentes sistemas de janelas.– As funções usam o prefixo glut. – É interessante comentar que a GLUT substitiu a GLAUX.

Page 30: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 30/24

Biblioteca• GLX - OpenGL Extension to the X Window System

• OpenGL para máquinas que usam o X Window System• Funções GLX usam o prefixo glX. Para Microsoft Windows

95/98/NT• Funções WGL fornecem as janelas para a interface OpenGL• IBM/OS2, a PGL é a Presentation Manager para a interface

OpenGL, e suas funções usam o prefixo pgl.• Apple, a AGL é a interface para sistemas que suportam

OpenGL, e as funções AGL usam o prefixo agl

Page 31: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 31/24

Biblioteca• FSG - Fahrenheit Scene Graph

• Toolkit orientado à objetos e baseado em OpenGL• Fornece objetos e métodos para a criação de aplicações

gráficas 3D interativas• Escrito em C++• Habilidade de trocar dados em outros formatos gráficos

Page 32: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

Iluminação

21/04/23 OpenGl 32/24

• Essencial para a representação de um ambiente 3D• Maior realidade = Maior custo computacional e menos

performance• O modelo de iluminação e sombreamento do OpenGL foi

projetado para ser extremamente eficiente e muito geral.• O OpenGL prioriza a performance e por isso optou por usar um

modelo de iluminação simplista e pouco realista, o Modelo de Phong (Iluminação local)

• O modelo de iluminação local considera que a cor de um determinado ponto depende somente da sua relação com as fontes de luz contidas na cena, sem considerar os outros objetos.

Page 33: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

Iluminação

21/04/23 OpenGl 33/24

• O modelo adotado pelo OpenGL não modela sombras, reflexão diretas e indiretas, refração e outros fenômenos físicos, no entanto disponibiliza truques para simular esses efeitos

Page 34: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

Iluminação – Fontes de Luz

21/04/23 OpenGl 34/24

• No Mundo Real:• Fontes luminosas podem assumir o diferentes

formas, tamanhos e intensidades/cores.• A natureza complexa da luz torna sua

representação complexa. Muitas variáveis devem ser consideradas.

• No OpenGL:• Por simplificação/performance cada fonte de luz é

considerada pontual (adimensional) e tem intensidade constante e é representada por um valor RGB.

• Um valor constante simula as interreflexões

Page 35: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

Iluminação – Atenuação

21/04/23 OpenGl 35/24

• A atenuação é a perda gradativa de intensidade luminosa à medida em que objetos se afastam da fonte luminosa.

• É um efeito de reprodução simples e que traz ótimos resultados visuais

Page 36: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

OpenGL Shaders - GLSL

21/04/23 OpenGl 36/24

• GLSL – OpenGL Shading Language• O suporte a sharders nada mais é que a possibilidade de carregar programas baseados em uma linguagem de Shader que permite adicionar funcionalidades de processamento gráfico que não foram previamente inseridos no ambiente 3D.• Tem ainda a vantagem de trabalhar diretamente com a GPU (Unidade de Processamento Gráfico)• Se divide basicamente em três tipos

Page 37: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

OpenGL Shaders - Tipos

21/04/23 OpenGl 37/24

• Tanto o DirectX quanto OpenGL usam três tipos de shaders:•Vertex shaders: afeta os vertices de um modelo 3D modificando propriedade como posicao, cor, coordenada de textura etc.• Geometry shaders: possibilidade de adicionar ou remover vértices/faces de um modelo, pode ser usado tambem para gerar dinamicamente modelos o que seria muito custoso se feito pelo CPU.• Pixel shaders: Intera pixel a pixel pelo modelo 3D fazendo modificacoes mais refinadas, tais como BumpMapping, NormalMapping etc.

Page 38: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 38/24

Page 39: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 39/24

Page 40: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 40/24

Page 41: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 41/24

Page 42: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 42/24

Page 43: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 43/24

Page 44: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 44/24

Page 45: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 45/24

Page 46: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

Dúvidas

Page 47: Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs)

21/04/23 OpenGl 47/24

Grasielle Valença (gval)Marcela Bezerra (mbs)

Thiago Burgo (tbb)Paulo Thiago (ptgs)

Introdução a MultimídiaOpenGL