Adônis Tavares Gustavo Ferraz Hugo Simões Humberto Pacheco

Slides:



Advertisements
Apresentações semelhantes
Funções para serem usadas no exercício de Lab
Advertisements

The Cyclops Project German-Brazilian Cooperation Programme on IT CNPq GMD DLR Departamento de Informática e Estatística - INE/CTC/UFSC Computação Gráfica:
Computação Gráfica Mapeamento de textura
DCA-0114 Computação Gráfica
OpenGL Computação Gráfica.
OpenGL Clique para adicionar texto Soraia Musse 6/4/2011.
JOGOS.
António Ramires Fernandes & Luís Paulo Santos – Adaptado por Alex F. V. Machado Computação Gráfica Pipeline Gráfico.
Projeções e OpenGL Alex F. V. Machado.
Modelos de ILuminação Alex F. V. Machado.
COMPUTAÇÃO GRÁFICA.
Introdução a OpenGL (parte final).
Claudio Esperança Paulo Roma Cavalcanti
Introdução à Computação Gráfica OpenGL Básico
GPGPU.
Introdução à Computação Gráfica Colorização
Iluminação e Sombreamento
Navegador de cenas com openGL e rastreamento de raios
OpenGL Conceitos Básicos
OpenGL Alberto B. Raposo.
A terceira dimensão.
Callback de Teclado // registro void glutKeyboardFuc(Teclado);
Computação Gráfica: Aula8: Iluminação
Laboratório de Computação Gráfica OpenGL
Iluminação Para programar um sistema de iluminação, dois passos principais devem ser considerados: c) Que tipo e posição de Iluminação se deseja b) Que.
Computação Gráfica: Rendering e Rasterização
Computação Gráfica: Aula6: Iluminação
The Industry’s Foundation for High Performance Graphics
OpenGL – Uma abordagem prática e objetiva
Computação Gráfica OpenGL.
Computação Gráfica Iluminação e Texturas.
Computação Gráfica Pipeline Gráfico.
Computação Gráfica: Aula6: Iluminação
Introdução à Computação Gráfica Projeções
Prof. Leandro da Silva Taddeo
Tarefa: Implementar o Demo na página da disciplina. Para trabalhar com iluminação em OpenGL, deve-se definir: 1)Vetores de iluminação : Ex: GLfloat luzAmbiente[4]={0.2,0.2,0.2,1.0};
Iluminação e Sombreamento
Computação Gráfica – Visibilidade
Computação Gráfica Mapeamento de textura
Computação Gráfica Introdução ao OpenGL.
Introdução à Computação Gráfica OpenGL Básico
Go3D! A 3D Graphics Engine Carlos Tosin. Divisão Estrutura dividida em 4 componentes Core (46 classes) Áudio (4 classes) Script (4 classes) Renderer (37.
Image Based Cartoon Style Rendering Jeronimo Silvério Venetillo Fabio Issao Nakamura.
Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.
Introdução à Computação Gráfica
Computação Gráfica – Transformações Projetivas
Desenhos Tridimensionais
Computação Gráfica – Introdução ao OpenGL
Introdução à Multimídia
18/7/2015OpenGl1/24 Grasielle Valença (gval) Marcela Bezerra (mbs) Thiago Burgo (tbb) Paulo Thiago (ptgs) Introdução a Multimídia OpenGL.
Introdução à Computação Gráfica
Viewport.
OGRE 3D Open Source Graphics Engine Seminário Introdução à Multimídia.
Computação Gráfica – Visibilidade Profa. Mercedes Gonzales Márquez.
Realidade Virtual Aula 2 Remis Balaniuk. Enxergando grande, começando pequeno Quem começa a aprender RV normalmente sofre um primeiro impacto negativo.
Felipe Cavalcanti Ferreira Fernando Valente Kakimoto
Texturas em Jogos IA 725 – Computação Gráfica
OpenGL André Chagas Filipe Melo Jacinto Reis Jonathan Soares
Equipe Onildo Ferraz Hélder Manoel Lima e Silva Felipe Batista.
Prof. Wallace Borges Cristo
Grupo: Antônio Inocêncio Francisco Ícaro Filipe Araújo Guilherme Barreto Leonardo Vilaça Márcio Dias Thiago Gomes.
Computação Gráfica: Aula6: Iluminação
Silvânia de Assis Guilherme de Melo Moisés Tadeu Cardoso Isabela de Oliveira Glauber Ataíde Henrique de Araujo 1.
Iluminação.
Rendering Por Adinan Aguiar.
Por Anderson Afonso Cardozo UNIVERSIDADE CATÓLICA DE PELOTAS
Introdução à Computação Gráfica Iluminação
1 Computação Gráfica Prof. Dr. Júlio C. Klafke UNIP-Objetivo
Transcrição da apresentação:

Adônis Tavares Gustavo Ferraz Hugo Simões Humberto Pacheco Leandro Reinaux Nivan Ferreira Rodrigo Mateus

Agenda O que é OpenGL Porque OpenGL foi criado História Utilização no mercado Características de OpenGL Pipeline Bibliotecas Análise de Competidores

O que é OpenGL? Open Graphics Library É a especificação de uma API para programação em computação gráfica. Em outras palavras, OpenGL define um conjunto de funções fazer aplicações em computação gráfica.

O que não é OpenGL? Não é uma linguagem de programação Não tem comandos para criação e gerenciamento de janelas lidar com entradas do usuário Não tem comandos de alto-nível para descrição de objetos 3D

Porque OpenGL foi criado? Desenvolver aplicativos gráficos era difícil Falta de padronização Esforços duplicados Era necessário uma plataforma Abstração de hardware Portável Fácil de usar

História Atualmente, parte do Khronos Group PHIGS – anos 80 IRIS GL – final dos anos 80 pela SGI OpenGL é criado em 1992 – mantido pela OpenGL ARB (Architecture Review Board) Evans&Sutherland HP IBM Intel Matrox NVIDIA Sun Silicon Graphics (SGI) Atualmente, parte do Khronos Group

História OpenGL 2.0 OpenGL 2.1 OpenGL 3.0 3DLabs OpenGL Shading Language OpenGL 2.1 OpenGL Shading Language revision 1.20 sRGB texture formats OpenGL 3.0 Criação de objetos assíncrona

Utilizações no mercado Ferramentas CAD IBM/Dassault CATIA Moonlight Creator (GPL)

Modelagem e Desenho NewTek LightWave 3D

Visualização e Simulação

Interface com o Usuário

Hardware-Assisted Rendering glutrad (radiosity, hemicube approximation)

Animação e Efeitos Especiais Vídeo do trem do filme “The Prototype”

Jogos Doom 3 Quake 3 Call of Duty NeverWinter Nights Tem certeza que War3 e WOW usam opengl? Call of Duty NeverWinter Nights

Características Tipo OpenGL Representão Interna Tipo em C equivalente Sufixo GLbyte 8-bit integer signed char b GLint, GLsizei 32-bit integer int ou long i GLfloat, GLclampf 32-bit floating-point float f GLdouble, GLclampd 64-bit floating-point double d GLubyte, GLboolean 8-bit unsigned integer unsigned char ub GLushort 16-bit unsigned integer unsigned short us GLuint, GLenum, GLbitfield 32-bit unsigned integer unsigned long ou unsigned int ui

Primitivas Geométricas de OpenGL Todas primitivas geométricas são especificadas por vértices GL_LINE_STRIP GL_LINE_LOOP GL_POLYGON GL_LINES GL_POINTS GL_TRIANGLE_STRIP GL_QUAD_STRIP GL_TRIANGLES GL_QUADS GL_TRIANGLE_FAN

Uma aplicação OpenGL é uma MEF Uma aplicação OpenGL é uma máquina de estados. A cor corrente é uma variável de estado. Há muitas outras! Todas as variáveis de estado possuem valores default O efeito de muitas delas pode ser habilitado e desabilitado

Forma geral das instruções De forma geral: gl{nome da função}{número de argumentos}{tipo dos argumentos} (lista de argumentos); Exemplos: glColor3f => gl Color 3 f glLightfv => gl Light fv Nome da Função Número de argumentos Tipo dos argumentos Nome da função Tipo dos argumentos(float vector)

Forma das instruções Infelizmente, nem todas as funções seguem fielmente esse padrão: glFlush() ,não recebe argumentos. glClearColor(), só recebe um tipo de argumento. Conclusão: Usar funções em OpenGL é fácil!

Forma geral de um programa OpenGL Funções presentes em todo programa OpenGL: main(): Ponto de início da execução; Inicializa a janela e aspectos da geração de imagens(número de buffers de armazenamento e sistema de representação de cores); Especifica a função callback de desenho.

Forma geral de um programa OpenGL void setupRC(void): Inicializa aspectos de rendering(cor de desenho atual e cor de funto); void renderScene(void): Função executada sempre que for necessário exibir a imagem. Podem existir outras funções callback Funções que detectam eventos de teclado e mouse.

Alguns exemplos #include <whateverYouNeed.h> main() { InitializeAWindowPlease(); glClearColor (0.0, 0.0, 0.0, 0.0); glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); glBegin(GL_POLYGON); glVertex3f (0.25, 0.25, 0.0); glVertex3f (0.75, 0.25, 0.0); glVertex3f (0.75, 0.75, 0.0); glVertex3f (0.25, 0.75, 0.0); glEnd(); glFlush(); UpdateTheWindowAndCheckForEvents(); } Resultado

Entendendo as funções básicas glClearColor(r,g,b,a): Especifica cor utilizada para limpar a tela(o valor a é utilizado em efeitos como transparência); glClear(buffer): Limpa um ou mais buffer’s, no exemplo GL_COLOR_BUFFER_BIT(onde a imagem está armazenada internamente); glColor3f(r,g,b): Determina a cor que será utilizada para o desenho(linhas e preenchimento); glOrtho:

Entendendo as funções básicas glBegin(Const)...glEnd(): Conjunto utilizado para desenhar formas Const=GL_POLYGON. glVertex3f: Especifica os vétices do objeto que será desenhado glFlush: Força a execução de comandos ainda não executados acontecer.

Pipeline 25

Display Lists Comandos OpenGL armazenados para serem executados depois Comandos executados na ordem em que foram emitidos Aumenta a performance Redesenhar geometria ou mudar de estados várias vezes

Vertex Operation Vértices e coordenadas normal transformadas por GL_MODELVIEW Pode ser demorada Coordenadas da textura são geradas e transformadas O cálculo da iluminação atualiza a cor do vértice

Primitive Assembly Primitivas transformadas pela matriz de projeção e recortadas pelo volume de visualização Divisão perspectiva por w Viewport e depth (coordenada z) Culling test Primitivas geométricas completas Guidelines para o passo de rasterização

Pixel Transfer Operation Scaling, bias, mapping e clamping Pixels da memória do sistema Armazenados na memória de textura ou enviados para a rasterização Pixels do frame buffer Retornam para um array na memória do sistema

Texture Memory Imagens de textura são carregadas na memória de textura e aplicadas aos objetos geométricos Acelera a performance de texturas Texturas aumentam o realismo dos objetos

Rasterization Dados geométricos e pixels em fragmentos Fragmentos: arrays retangulares contendo cor, depth, line width, point size e cálculos antialiasing (GL_POINT_SMOOTH, GL_LINE_SMOOTH, GL_POLYGON_SMOOTH) Pixels do interior do polígono são preenchidos (GL_FILL) Cada fragmento corresponde a um pixel no frame buffer

Fragment Operation Série de operações que podem alterar ou descartar fragmentos Texture element generation Fog calculations Fragment Tests: Scissor test -> glScissor() Alpha test -> glAlphaFunc() Stencil test -> glStencilFunc(), glStencilOp() Depth test -> glDepthFunc() Blending, Dithering, Logical Operation, Masking (Bitmask)

Feedback glGet*(), glIsEnabled(): informações e estados atuais glReadPixels(): dados dos pixels do frame buffer glRenderMode(GL_FEEDBACK): dados completos dos vértices transformados glCopyPixels(): copia os dados do pixel para outro frame buffer

Resumo Visual

Transformações Composição de matrizes: glMatrixMode(), glLoadIdenty, glPushMatrix(), glPopMatrix(), Projeção Ajusta a lente da câmera virtual Visualização Definem posição e orientação do volume de visualização (frustum) no universo Modelagem Movem os objetos Viewport Modificam a janela de visualização 35

Iluminação e sombreamento Modelos simples com realismo – eficiência Modelo de iluminação de Phong Não modela sombras, reflexão direta e indireta, refração

Fontes de Luz Considerada pontual Intensidade constante Representada por um valor RGB Componentes Ambiente (GL_AMBIENT) Difusa (GL_DIFFUSE) Especular (GL_SPECULAR) glLight()

Tipos de Luz Pontual Direcional SpotLight Raios emanam uniformemente em todas as direções Direcional Raios apenas em uma direção SpotLight Raios emitidos na forma de um cone apontando para uma determinada direção

Material Cor depende da porcentagem de luz vermelha, verde e azul incidente que ele reflete Componentes Ambiente, Difusa, Especular, Emissiva glMaterial()

Iluminação Local Dois modelos: Flat Shading Gouraud Shading

Flat Shading Não apresenta variações ao longo do polígono. Com a normal de cada vértice é obtida a normal do polígono. glShadeModel (GL_FLAT);

Gouraud Shading Apresenta variações de cor no polígono. Calcular a intensidade nos vértices, Interpolação destas intensidades glShadeModel (GL_SMOOTH);

Bibliotecas Biblioteca Padrão Opengl Utility library (GLU) OpenGL32 em Windows GL em unix/linux (libGL.a) Opengl Utility library (GLU) Ligação com Sistema de Janelas GLX para X Windows System, WGL para Windows, CGL para Macintosh Multi-plataforma: GLUT, GLUI, SDL, FLTK, QT, ...

Bibliotecas Opengl Utility library (GLU) Funções de desenho de alto nível desenvolvidas com base nas funções primitivas de OpenGL. Normalmente é obtida junto com o OpenGL no mesmo pacote. Mipmaps, desenho de superfícies quádricas, NURBS Ex: gluOrtho2D();

Bibliotecas Opengl Utility Toolkit (GLUT) Interface com o sistema de janelas de qualquer ambiente Provê meios para construir interfaces gráficas como menus pop-up e suporte para dispositivos de entrada (teclado, mouse, joystick, trackball) Eventos (Event Callback Function)

Bibliotecas OpenGL User Interface Library (GLUI) Baseada em GLUT Independente de ambiente Adição de buttons, checkboxes, radio buttons, and spinners Extremamente fácil de se utilizar

Organização do Software

Análise de competidores Cg: C for Graphics Desenvolvido pela NVIDIA em 2002. Baseada na linguagem C. Usada para gerar gráfico em tempo real em GPU programáveis. Não dá suporte a superfícies e a iluminação (Como o OpenGL).

Análise de competidores VRML: Virtual Reality Modeling Language Usada para descrever mundos interativos 3D na Internet. Desenvolvida pela SGI (Silicon Graphics Inc) em 1995. Unificar e padronizar a tecnologia Web para gerar mundos 3D.

Análise de competidores Direct3D (componente do DirectX) É utilizada na plataforma Windows. Consoles Xbox e o Dreamcast possui versão embarcada do Direct3D. Linguagem de alto nível de modelagem 3D. Possui os mesmos objetivos do OpenGL

Análise de competidores Feature OpenGL 1.2 Core Direct3D 7 Direct3D 8 System Mechanics Operating System Support Windows (9x, NT, 2000), MacOS, others Windows (9x, 2000, CE) Windows (9x, 2000) API Definition Control OpenGL ARB Microsoft API Specification OpenGL Specification SDK/DDK Documentation and DDK Reference SDK Documentation API Mechanism includes and libraries COM Software Emulation of Unaccelerated Features Yes No Extension Mechanism Source Implementation Available Fonte: http://www.xmission.com/~legalize/d3d-vs-opengl.html

Documentação OpenGL Programming Guide (Woo, Neider, Davis - Addison-Wesley ) Interactive Computer Graphics: A Top-Down Approach with OpenGL (E. Angel - Addison-Wesley)

Documentação OpenGL Extensions Guide (Eric Lengyel) Opengl Shading Language (Randi J. Rost)

Documentação OpenGL Programming for the X Window System OpenGL Game Programming (Astle, Hawkins, LaMothe)

Agradecimentos Professor Marcelo Walter que nos forneceu material e esclareceu dúvidas. Felipe Maia (ex-monitor de PG) que indicou várias fontes onde poderíamos conseguir exemplos interessantes.

Referências OpenGL Programming Guide (Woo, Neider, Davis - Addison-Wesley ) http://www.humus.ca/index.php?page=News http://www.soe.ucsc.edu/classes/cmps203/Fall04/finalreports/ProjectPaper_JerryYee.pdf http://tools.devshed.com/c/a/Web-Development/OpenGL-vs-DirectX-A-Comparison/ http://en.wikipedia.org/wiki/Comparison_of_OpenGL_and_Direct3D http://www.xmission.com/~legalize/d3d-vs-opengl.html http://www.inf.pucrs.br/~manssour/OpenGL/ http://www.songho.ca/opengl/gl_pipeline.html http://www.cgl.uwaterloo.ca/~vtluu/Talks/OpenGL/ http://www.inf.ufrgs.br/~nedel/inf01047/05-openGL.pdf