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

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

OpenGL – Uma abordagem prática e objetiva Última atualização: 16-nov-2008.

Apresentações semelhantes


Apresentação em tema: "OpenGL – Uma abordagem prática e objetiva Última atualização: 16-nov-2008."— Transcrição da apresentação:

1 OpenGL – Uma abordagem prática e objetiva Última atualização: 16-nov-2008

2 1 - Introdução Computação Gráfica é uma área da Ciência da Computação que se dedica ao estudo e ao desenvolvimento de técnicas e algoritmos para geração, manipulação e análise de imagens pelo computador

3 Introdução aplicações gráficas processamento gráfico

4 Pipeline A palavra pipeline é usada para descrever um processo composto de duas ou mais etapas para geração de uma imagem

5 Framebuffer framebuffer – memória do dispositivo gráfico

6 2 - Instalação

7 No DEV-C > abre o menu Projeto Selecionar Opções de Projeto Selecione a aba Parâmetros e em Linker verifique: -lglut32 -lopengl32 -lglu32 -lwinmm -lgdi32

8 3 – Primeiros passos em OpenGL Função Desenha Função Teclado Função Inicializa Função Principal

9 Primeiros passos em OpenGL Veja exemplo em: gl/

10 4 – Padronização dos Nomes das Funções e Tipos de Dados

11 Funções - Exemplos void glColor(GLint red, GLint green, GLint blue); void glColor3d(GLdouble red, GLdouble green, GLdouble blue)

12 Tipos de dados OpenGL Tipo de dado OpenGL Representação interna Tipo de dado C equivalenteSufixo GLbyteint 8 bitssigned charb GLshortint 16 bitsshorts GLint, GLsizeiint 32 bitsint ou longi GLfloat, GLclampfponto flutuante – 32 bits floatf GLdouble, GLclampdponto flutuante – 64 bits doubled GLubyte, GLBooleanint 8 bits sem sinalunsigned charub GLushortint 16 bits sem sinalunsigned shortus GLuint, GLemun, GLbitfield int 32 bits sem sinalunsigned long ou unsigned intui

13 5 – GLUT – GL Utility Toolkit Responsável pelo gerenciamento de janelas e tratamento de eventos

14 GLUT - Funções // Especifica a posição inicial da janela GLUT glutInitWindowPosition(int x, int y); // Especifica o tamanho inicial em pixels da janela GLUT glutInitWindowSize(int largura, int altura);

15 Criação da Janela // Cria a janela passando como argumento o título da mesma glutCreateWindow(char *string);

16 Funções para tratamento de eventos glutDisplayFunc glutReshapeFunc glutKeyboardFunc glutSpecialFunc glutMouseFunc glutMotionFunc glutPassiveMotionFunc glutIdleFunc

17 6 – Máquinas de Estado Uma máquina de estados corresponde a um dispositivo ou sistema que guarda o estado de um ou mais elementos em um momento específico Comandos de entrada são utilizados para alterar este estado e/ou gerar uma função de saída

18 Máquina de estados OpenGL é considerado uma máquina de estados É composto de várias variáveis de estado que armazenam determinado valor e podem ser alteradas pela chamada a uma função Cada variável de estado possui um valor padrão (default) que pode ser alterado

19 Funções para alteração de estado void glEnable(GLenum cap) void glDisable(GLenum cap) GLBoolean glIsEnabled(GLenum cap) --> verifica o estado que se encontra uma propriedade

20 Variáveis de estado Variáveis de estado relacionadas são agrupadas em um atributo void glPushAttrib(GLbitfield mask) void glPopAttrib(void)

21 7 – Definição do Espaço de Trabalho modelo coordenadas geométricas sistema de referencia Sistema de Referência do Universo (SRU) Sistema de Referência da Tela (SRT)

22 Definições Modelo-> é uma representação computacional de um objeto, isto é, corresponde a uma estrutura de dados que tem sua descrição geométrica Imagem -> matriz de pontos Universo -> é a região do plano (ou do espaço) utilizada em uma aplicação

23 Definições coordenadas geométricas sistema de referência -> define uma origem em relação a qual todos os posicionamentos do universo são descritos.

24 7.1 Visualização Bidimensional

25 Sistema de Referencia do Universo Sistema de Referência do Universo (SRU) -> consiste em um plano cartesiano com dois eixos (x e y) perpendiculares entre si e que se cruzam na origem

26 Sistema de Referência da Tela Sistema de Referência da Tela (SRT) -> no SRT a origem fica no canto superior esquerdo do monitor

27 Definições modelos são criados independentes do dispositivo windows ou janela de seleção --> é a área do universo que delimita a região de interesse do usuário em um dado instante viewport ou janela de exibição --> define a área do monitor onde desejamos exibir o conteúdo da window

28 Mapeamento SRU --> SRT

29 Funções de conversão SRU para SRT void glViewport( GLint x, GLint y, GLsizei largura, GLsizei altura); void gluOrtho2d( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top)

30 7.2 Visualização Tridimensional Câmera Sintética Projeção Funções OpenGL

31 Visualização Tridimensional Quando se trabalha em três dimensões, o SRU (Sistema de Referência do Universo) passa a ser composto por três eixos ortogonais entre si (x, y e z) e pela origem (0.0, 0.0, 0.0)

32 Visualização Tridimensional Projeção: é a operação de obter representações bidimensionais de objetos tridimensionais Raios de projeção (segmentos de reta) chamados projetantes Plano de projeção

33 Projeções Geométricas Planares Projeção Paralela Ortográfica --> as projetantes são paralelas entre si, passam pelos pontos qeu definem os objetos e interseccionam o plano com um ângulo de 90º Projeção Perspectiva --> as projetantes emanam de um único ponto que está a uma distancia finita do plano de projeção e passam pelos pontos que definem um objeto

34 Funções OpenGL void gluLookAt () --> permite especificar a posição e a orientação da câmera sintética ou observador virtual void gluPerspective() --> utilizada para estabelecer a projeção perspectiva void glOrtho() --> função utilizada para estabelecer projeção ortográfica

35 Funções OpenGL void glLoadIdentity(void) --> função utilizada para inicializar o sistema de coordenadas (carrega a matriz identidade) void glMatrixMode(GLenum mode) --> permite selecionar com qual matriz será trabalhado GL_MODELVIEW --> seleciona a matriz do modelo (de modelagem e transformação) GL_PROJECTION --> seleciona a matriz de projeção GL_TEXTURE --> seleciona a matriz de textura

36 Funções GLUT void glutWireCube(GLdouble tamanho) --> função da biblioteca GLUT responsável pelo traçado de um cubo

37 8 – Desenhos bidimensionais 8.1 Primitivas Gráficas 8.2 Cores e Estilos de Traçados de Primitivas 8.3 Exibição de Texto 8.4 Desenhos de Curvas Paramétricas

38 8.1 - Primitivas Gráficas Primitivas gráficas consistem nos elementos básicos que compõem um desenho, tais como pontos, segmentos de reta e círculos

39 Primitivas Gráficas vértices objetos cenas modelos

40 Desenho de primitivas glBegin( ); // lista de vértices glEnd(); onde determina qual objeto será desenhado

41 Primitivas Gráficas em OpenGL (valores usados em ) GL_POINTS – desenha pontos GL_LINES – desenha linhas GL_LINE_STRIP – desenha segmentos de linhas conectados GL_LINE_LOOP – desenha segmentos de linhas conectados, unindo o primeiro ao último GL_POLYGON – desenha um polígono GL_TRIANGLES – desenha um triângulo GL_TRIANGLES_STRIP – desenha um triângulos conectados GL_TRIANGLES_FAN – desenha triângulos a partir de um ponto central GL_QUADS – desenha quadriláteros GL_QUADS_STRIP – desenha quadriláteros conectados

42

43 Exemplos glBegin(GL_LINES); glVertex2f(12.0f, 12.0f); glVertex2f(100.5f, 100.5f); glEnd(); Desenha uma linha entre os dois vértices

44 8.2 Cores e Estilos de Traçado de Primitivas Primitivas podem ser desenhadas com diversas aparências como: cores, estilos e padrões diferentes

45 Exemplo de Funções Alteração do tamanho dos pontos void glPointSize(GLfloat tamanho) Linhas: alteração de cor, espessura e estilo void glLineWidth(GLfloat largura)

46 8.3 Exibição de Texto Não suportado diretamente pela OpenGL, porém suportado pela GLUT Suporta dois tipos de fontes de caracteres: strokes (segmentos de reta) -->mais flexíveis (podem ser escaladas e rotacionadas) bitmap (formando por imagens que representam caracteres) --> mais rápidas para serem exibidas

47 Caracteres – bitmap void glutBitmapCharacter(void *font, int character), onde: font: define o tamanho da fonte caracter: define o caracter

48 Constantes para tipos de fontes GLUT_BITMAP_8_BY_13 GLUT_BITMAP_9_BY_15 GLUT_BITMAP_TIMES_ROMAN_10 GLUT_BITMAP_TIMES_ROMAN_24 GLUT_BITMAP_HELVETICA_10 GLUT_BITMAP_HELVETICA_12 GLUT_BITMAP_HELVETICA_18

49 Posicionamento void glRasterPos2f(x,y)

50 Exibição de caracteres usando font stroke void glutStrokeCharacter(void *font, int caracter), onde font: define o nome da fonte (GLUT_STROKE_ROMAN e GLUT_STROKE_MONO_ROMAN) caractere: define o código ASCII do caractere a ser exibido

51 9 – Transformações Geométricas Translação Escala Rotação

52 Translação void glTranslate(GLfloat tx, GLfloat ty, GLfloat tz)

53 Escala void glScale(GLfloat ex, GLfloat ey, GLfloat ez)

54 Rotação void glRotate(GLfloat ângulo, GLfloat x, GLfloat y, GLfloat z) onde: ângulo: é o ângulo de rotação Obs: no caso de rotação em 2D, a rotação é sempre feita em torno do eixo z (usar (0,0,1) para (x,y,z) respectivamente)

55 Rotação ângulo positivo --> rotação feita no sentido anti-horário ângulo negativo --> rotação feita no sentido horário

56 Matriz de Transformação matrizes com coordenadas homogêneas matriz de transformação corrente glLoadIdentity --> faz com que a matriz de transformação corrente seja inicializada com a matriz identidade, indicando que nenhuma transformação foi aplicada glMatrixMode com parâmetro GL_MODELVIEW

57 Escopo das Transformações pilha de matrizes de transformação void glPushMatrix(void) void glPopMatrix(void)

58 10 - Animação Introdução Animação em 2D Animação em 3D

59 Conceitos básicos animação tradicional animação por computador taxa de exibição de imagens (frame rate)

60 Use de dois buffers glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB) glutSwapBuffers --> troca os buffers de exibição e desenho

61 Animação em 2D void glutTimerFunc(unsigned int msecs, void (*func)(int value), int value) // Registra a função callback que será chamada a cada intervalo de tempo glutTimerFunc(150, Anima, 1) void Anima(int value) {... glutPostRedisplay(); glutTimerFunc(150, Anima, 1); }

62 11 – Operações de Zoom e Pan

63 12 – Imagens em OpenGL

64 13 – Desenhos Tridimensionais Primitivas Gráficas de 3D Objetos Predefinidos da GLUT Carregando e Desenhando Objetos Desenhando Superfícies Paramétricas

65 14 - Realismo Conceitos fonte de luz idéia de iluminação

66 Conceitos wireframe sólidos faces frontais faces traseiras objetos oclusos

67 GL_CULL_FACE variável de estado: GL_CULL_FACE

68 Objetos objetos convexos: exemplos: cubos, cilindros, esferas, cones objetos não-convexos (côncavos) exemplos: torus (toróide) algoritmo de remoção de faces

69 Z-Buffer z-buffer -> algoritmo de remoção de superfícies escondidas

70 Fontes de Luz Um modelo de iluminação em Computação Gráfica define a natureza da luz que emana de uma fonte e sua interação com todos os objetos de uma cena. A natureza da luz diz respeito à fontes de luz utilizada. Geralmente, três tipos de fontes de luz podem ser incluídas em uma cena 3D: pontual, direcional e spot.

71 Fontes de Luz fonte de luz pontual: fonte de luz direcional: fonte de luz tipo spot:

72 Modelos de Reflexão luz ambiente reflexão difusa reflexão especula

73 Modelos de Tonalização (shading) Modelos flat shading modelo de Gouraud

74 14.4 Vetores Normais Um vetor normal a uma face, ou superfície, é um vetor perpendicular a essa face. vetor unitário produto vetorial

75 Vetor Normal void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz)

76 14.5 Descrição de Cores

77 Conceitos Descrição das cores A cor é um fenômeno "psicofísico", que depende da presença de luz no ambiente: se não há luz, não é possível enxergar cores percepção de cor depende da física da luz – considerada energia eletromagnética – e sua interação com os materiais físicos interpretação do fenômeno resultante pelo sistema visual humano

78 Conceitos raio de luz:

79 Sistema Visual Humano faixa visível do espectro eletromagnético (380 a 750 nm) luz monocromática luz cromática (colorida)

80 Sistema Visual Humano Na retina existem os: cones – são sensíveis a energia em todo espectro visível azuis verdes vermelhos bastonetes – são sensíveis a intensidade luminosa

81 Sistema Visual sensação de cor espaço de representação de cores tridimensional modelos de cor YIQ (padrão NTSC) YUV CMY (Cyan, Magenta e Yellow) RGB (Red, Green, Blue)

82 Funções OpenGL O modelo de cor adotado em OpenGL é o RGB ou RGBA (alpha – utilizado quando se está trabalhando com blending – o alpha especifica a opacidade)

83 Modelo de cores color buffer 24 bits por pixel ( 8 bits para R, G e B ) tabela de cores (look-up table)

84 Funções OpenGL void glClear(GL_COLOR_BUFFER_BIT) Limpa o conteúdo do framebuffer void glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) Especifica a cor usada por glClear (a cor default é (0.0, 0.0, 0.0) – preta)

85 Funções OpenGL void glColor3f( GLfloat red, GLfloat green, GLfloat blue)

86 14.6 Uso de Múltiplas Fontes de Luz

87 14.7 Materiais

88 14.8 Sala 3D

89 15 – Blending (mistura) alpha – utilizado quando se está trabalhando com blending – o alpha especifica a opacidade 1.0 – cor totalmente opaca 0.0 – cor é totalmente transparente

90 15.1 Funções de Mistura

91 Transparência

92 Efeitos Atmosféricos função neblina

93 Suavização de Linhas e Polígonos aliasing

94 16 – Mapeamento de Texturas Texturas Unidimensionais Texturas Bidimensionais

95 17 – Técnicas para Otimização do Rendering

96 18 - Buffers Um buffer em OpenGL nada mais pe do que uma área de memória onde é armazenada uma matriz de valores, que, por sua vez correspondem aos pixels de uma imagem

97 Buffers - Tipos Color Buffer (ou buffer de cor) --> responsável por armazenar informações de cor (RGBA) para cada pixel Depth Buffer (ou buffer de profundidade ou z- buffer) --> armazena a distância de cada pixel ao observador Stencil Buffer (ou buffer de estêncil) --> fornecem opções para restringir ou bloquear o desenho na tela, de acordo com certas condições. Accumulation Buffer (ou buffer de acumulação) -- > pode ser visto como um buffer de cor com maior precisão, em que é possível combinar várias imagens em uma só, de várias formas diferentes

98 Função glutInitDisplayMode void glutInitDisplayMode(unsigned int mode) onde mode: GLUT_RGB, GLUT_RGBA ou GLUT_INDEX para o modelo de cor; GLUT_SINGLE ou GLUT_DOUBLE para utilização de um ou dois buffers; GLUT_ACUM, GLUT_ALPHA, GLUT_DEPTH, GLUT_STENCIL, GLUT_MULTISAMPLE, GLUT_STEREO, GLUT_LUMINANCE

99 Função glutInitDisplayMode Especifica o modelo de cor, a utilização de single ou double-buffer e quais buffers OpenGL serão utilizados na janela GLUT que será aberta.

100 Funções para inicialização de buffers void glClear(GLbitfield mask) --> função para limpar os buffers cujos identificadores são passados como parâmetros mask GL_COLOR_BUFFER_BIT, GL_DEPTH_BUFFER_BIT GL_STENCIL_BUFFER_BIT GL_ACCUM_BUFFER_BIT

101 18.2 Color Buffer GL_COLOR_BUFFER_BIT

102 Função glClearColor void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) --> especifica qual cor será usada para limpar o color buffer

103 18.3 Depth Buffer GL_DEPTH_BUFFER_BIT void glClearDepth(GLclampf depth), onde depth (profundidade) varia de 0.0 (mín) a 1.0 (máx)

104 18.4 Stencil Buffer GL_STENCIL_BUFFER_BIT

105 18.5 Accumulation Buffer GL_ACCUM_BUFFER_BIT

106 19 – Seleção de Objetos Considerações Iniciais Modo de Seleção Modo de Feedback

107 Introdução Seleção de objetos

108 Modo de Seleção void glSelectBuffer(GLsizei size, GLuint *buffer) pilha de nomes GLint glRenderMode(GLenum mode) onde mode: GL_RENDER, GL_SELECT ou GL_FEEDBACK

109 Modo de Seleção void glInitNames(void) void glPushName(GLuint name)

110 Modo de feedback void glFeedbackBuffer(GLSizei size, GLenum type, GLfloat *buffer), onde: size: indica o tamanho do vetor type: informa o tipo da informação desejada buffer: aponta ao inicio do vetor

111 20 – OpenGL e Outras linguagens de Programação C++ Java C# Python

112 21 – Programação de Shaders OpenGL Shading Language

113 Apêndice A – Guia Rápido de Referência A.1 A.2 A.3 A.4 A.5 A.6 A.7 A.8 A.9

114 Apêndice A – Guia Rápido de Referência A.10 A.11 A.12 A.13 A.14 A.15 A.16 A.17 A.18

115 Apêndice B – Biblioteca de Estruturas e Funções Auxiliares B.1 B.2 B.3 B.4 B.5

116 A.1 Funções GLUT de Inicialização

117 Apêndice B – Biblioteca de Estruturas e Funções Auxiliares B.6 B.7 B.8 B.9


Carregar ppt "OpenGL – Uma abordagem prática e objetiva Última atualização: 16-nov-2008."

Apresentações semelhantes


Anúncios Google