A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Adônis Tavares Gustavo Ferraz Hugo Simões Humberto Pacheco"— Transcrição da apresentação:

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

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

3 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.

4 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

5 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

6 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

7 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

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

9 Modelagem e Desenho NewTek LightWave 3D

10 Visualização e Simulação

11 Interface com o Usuário

12 Hardware-Assisted Rendering
glutrad (radiosity, hemicube approximation)

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

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

15 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

16 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

17 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

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

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

20 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.

21 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.

22 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

23 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:

24 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.

25 Pipeline 25

26 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

27 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

28 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

29 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

30 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

31 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

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

33 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

34 Resumo Visual

35 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

36 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

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

38 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

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

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

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

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

43 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, ...

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

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

46 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

47 Organização do Software

48 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).

49 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.

50 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

51 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:

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

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

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

55 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.

56 Referências OpenGL Programming Guide (Woo, Neider, Davis - Addison-Wesley )

57


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

Apresentações semelhantes


Anúncios Google