12
Programação Gráfica – Cap 2 1 1 Programação Gráfica (2.2 a 2.7) Instituto Superior Técnico, 2006/2007 2 ©2006, CG&M/IST e Figuras Addison Wesley Índice Programação 2D Sistemas de Coordenadas API do OpenGL Primitivas e Atributos Introdução à Cor Projecções Interacção com o Sistema de Janelas Remoção de Elementos Ocultos Fundamentos de Animação 3 ©2006, CG&M/IST e Figuras Addison Wesley Programação 2D Representação Interna 3D Objectos definidos no plano Z=0 p = (x, y, z) Vertex versus Point 4 ©2006, CG&M/IST e Figuras Addison Wesley ltiplas Funções glVertex* () * é interpretado como nt ou ntv n dimensão (1 a 4) t i, f, d v apontador para um array 5 ©2006, CG&M/IST e Figuras Addison Wesley Desenho de Linhas e Pontos glBegin (GL_Lines); glVertex3f (x1, y1, z1); glVertex3f (x2, y2, z2); glEnd(); glBegin (GL_Points); glVertex3f (x1, y1, z1); glVertex3f (x2, y2, z2); glEnd(); glFlush (); 6 ©2006, CG&M/IST e Figuras Addison Wesley Com Apontador Typedef GLfoat pont2 2 ; point2 p; glVestex2fv (p); overloading de operadores ...

Programação Gráfica – Cap2 · Polígonos não planares Atributos (fronteira do polígono) Objectos Pontos versus Vértices. Programação Gráfica

  • Upload
    buitram

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programação Gráfica – Cap2 · Polígonos não planares Atributos (fronteira do polígono) Objectos Pontos versus Vértices. Programação Gráfica

Programação Gráfica –Cap 2

1

1

Programação Gráfica (2.2 a 2.7)

Instituto Superior Técnico, 2006/2007

2©2006, CG&M/IST e Figuras Addison Wesley

Índice

Programação 2DSistemas de CoordenadasAPI do OpenGLPrimitivas e AtributosIntrodução à CorProjecçõesInteracção com o Sistema de JanelasRemoção de Elementos OcultosFundamentos de Animação

3©2006, CG&M/IST e Figuras Addison Wesley

Programação 2D

Representação Interna 3DObjectos definidos no plano Z=0p = (x, y, z)

Vertex versus Point

4©2006, CG&M/IST e Figuras Addison Wesley

Múltiplas Funções

glVertex* ()

* é interpretado como nt ou ntvn – dimensão (1 a 4)t – i, f, dv – apontador para um array

5©2006, CG&M/IST e Figuras Addison Wesley

Desenho de Linhas e Pontos

glBegin (GL_Lines);glVertex3f (x1, y1, z1);glVertex3f (x2, y2, z2);

glEnd();

glBegin (GL_Points);glVertex3f (x1, y1, z1);glVertex3f (x2, y2, z2);

glEnd();

glFlush ();6

©2006, CG&M/IST e Figuras Addison Wesley

Com Apontador

Typedef GLfoat pont2 2 ;

point2 p;glVestex2fv (p);

overloading de operadores ...

Page 2: Programação Gráfica – Cap2 · Polígonos não planares Atributos (fronteira do polígono) Objectos Pontos versus Vértices. Programação Gráfica

Programação Gráfica –Cap 2

2

7©2006, CG&M/IST e Figuras Addison Wesley

Sistemas de Coordenadas

Coordenadas de ecrã? Origem? Dimensões?

Qualquer Sistema de CoordenadasDo ObjectoDo Mundo(Da Câmara)

Do Dispositivo

8©2006, CG&M/IST e Figuras Addison Wesley

Independência do Dispositivo

9©2006, CG&M/IST e Figuras Addison Wesley

API do OpenGL

Semelhante ao DirectX e ao Java3D com funções:

PrimitivasAtributosVisualizaçãoTransformaçãoEntrada de DadosControloInterrogação

10©2006, CG&M/IST e Figuras Addison Wesley

Vantagens

Norma industrial (mais de 300 empresas)EstávelPortávelEscalávelFácil de UsarBem documentadaSuporta a programação de GPUs

11©2006, CG&M/IST e Figuras Addison Wesley

Máquina OpenGL

Máquina de EstadosInformação:

Flui através do PipelineAltera o Estado do Pipeline

Pontos?

Cor?

12©2006, CG&M/IST e Figuras Addison Wesley

Bibliotecas

Page 3: Programação Gráfica – Cap2 · Polígonos não planares Atributos (fronteira do polígono) Objectos Pontos versus Vértices. Programação Gráfica

Programação Gráfica –Cap 2

3

13©2006, CG&M/IST e Figuras Addison Wesley

GLU, OpenGL Utility Library

Criação de objectos complexosEsferasTeapotCurvas QuadráticasNurbs (superfícies paramétricas)Gestão de Erros (ocorrência e descrição de erros)

Transformação em objectos suportados directamente pelo OpenGL

14©2006, CG&M/IST e Figuras Addison Wesley

GLU (cont)

Especificação de TexturasTransformação de Coordenadas (gluLookAt,..)Tesselação (triangulação de polígonos isto écriação de facetas)

15©2006, CG&M/IST e Figuras Addison Wesley

Teapot

16©2006, CG&M/IST e Figuras Addison Wesley

GLUT (Toolkit) e GLX, WGL e AGL

Gestão de Janelas simplificado:Criação, redesenho, posição, dimensões,..Gestão de Tabela de CoresFunções de Retorno (callback)Gestão das Unidades de Entrada de Dados (rato, teclado)Ciclo de Execução (glutMainLoop)

17©2006, CG&M/IST e Figuras Addison Wesley

WGL

Extensão para Microsoft a qual suporta:Formato das quadrículasAcesso a extensões (dependentes do ambiente)Gestão de buffersSincronização (com o pipeline do Windows –GDI)Acesso directo à Tabela de Cores

18©2006, CG&M/IST e Figuras Addison Wesley

Tipos de Primitivas

Primitivas GráficasPrimitivas Raster

Dois sub-pipelines

Page 4: Programação Gráfica – Cap2 · Polígonos não planares Atributos (fronteira do polígono) Objectos Pontos versus Vértices. Programação Gráfica

Programação Gráfica –Cap 2

4

19©2006, CG&M/IST e Figuras Addison Wesley

Pipeline Simplificado

20©2006, CG&M/IST e Figuras Addison Wesley

Primitivas Geométrica

21©2006, CG&M/IST e Figuras Addison Wesley

Polígonos

22©2006, CG&M/IST e Figuras Addison Wesley

Mais Polígonos

Usados, por exemplo, em Modelos Digitais de Terrenos

23©2006, CG&M/IST e Figuras Addison Wesley

Limitações dos Polígonos

Polígonos ConvexosPolígonos PlanosPolígonos que não se auto-intersectamPolígonos sem Buracos

24©2006, CG&M/IST e Figuras Addison Wesley

Aplicação Shapes

Tipos de Objectos Geométricos (glBegin)O Estado Cor (usar o polígono)Geometria da malha de triângulos (alterar 2ªe 3ª cor do Triangle_Strip)Polígonos não planaresAtributos (fronteira do polígono)Objectos Pontos versus Vértices

Page 5: Programação Gráfica – Cap2 · Polígonos não planares Atributos (fronteira do polígono) Objectos Pontos versus Vértices. Programação Gráfica

Programação Gráfica –Cap 2

5

25©2006, CG&M/IST e Figuras Addison Wesley

Tipos de Texto

Texto Vectorial (Post-Script)Podem ser transformados

Texto Raster

26©2006, CG&M/IST e Figuras Addison Wesley

Texto Vectorial

27©2006, CG&M/IST e Figuras Addison Wesley

Texto RasterRectângulo de bits (bit blocks)Alterar a dimensãoBiblioteca GLUT

28©2006, CG&M/IST e Figuras Addison Wesley

Atributos

Modo com uma primitiva é desenhada, por exemplo a sua CorAplicados em vários andares do pipelinePoligonos

Preenchimento com padrãoDesenho da fronteira....

29©2006, CG&M/IST e Figuras Addison Wesley

Exemplos de Atributos

30©2006, CG&M/IST e Figuras Addison Wesley

Cor em OpenGL

Cor RGB glColor3f (1.0, 0.0, 0.0);

Cor para Limpar (como está no início?)glClearColor (1.0, 1.0, 1.0);

Page 6: Programação Gráfica – Cap2 · Polígonos não planares Atributos (fronteira do polígono) Objectos Pontos versus Vértices. Programação Gráfica

Programação Gráfica –Cap 2

6

31©2006, CG&M/IST e Figuras Addison Wesley

A 4ª “Cor” Alpha

Se a mistura de cores (blending) estiver activaAlpha é o valor da opacidade ou da transparência

Cor branca e opacaglClearColor (1.0, 1.0, 1.0, 1.0);

32©2006, CG&M/IST e Figuras Addison Wesley

Mapa de Cores

Nº de cores baixo ou partilhado por várias aplicaçõesManter a profundidade do Frame Buffer (3 * m bits)

Solução:

33©2006, CG&M/IST e Figuras Addison Wesley

Color-Lookup Table em OpenGL

Inicialização da Tabela de CoresglutSetColor (int color, GLfloat red,

GLfloat green, GLfloat blue);

Obtenção da corglIndexi (element);

34©2006, CG&M/IST e Figuras Addison Wesley

Projecções

Desenhar é Projectar numa superfície planaRepresentações planares no Paleolítico superior (40000AC)Perspectiva surge com o Renascimento

Cúpula de Stª Maria del Fiore

35©2006, CG&M/IST e Figuras Addison Wesley

Projecções Geométricas Planas

Linhas Projectantes são rectasSuperfície de Projecção plana (plano de imagem ou de projecção)Pirâmide visual (Alberti)

plano da imagem

Centro de projecção(CDP)

36©2006, CG&M/IST e Figuras Addison Wesley

Pirâmide Visual

“Um retrato é a intersecção de uma pirâmide visual a uma dada distância, com um centro fixo e uma dada posição da luz representada por arte com linhas e polígonos numa dada superfície” (Alberti, Tratado sobre a pintura, Séc. XVI)

Page 7: Programação Gráfica – Cap2 · Polígonos não planares Atributos (fronteira do polígono) Objectos Pontos versus Vértices. Programação Gráfica

Programação Gráfica –Cap 2

7

37©2006, CG&M/IST e Figuras Addison Wesley

Projecções Perspectiva

Determinada pelo centro de projecção (CDP)Distância do CDP ao plano finitaRaios projectores convergentes

A

B

CDP

RaiosProjectores

Plano deProjecção

38©2006, CG&M/IST e Figuras Addison Wesley

Projecções Paralelas

Raios projectores paralelos entre siDistância do CDP ao plano infinita.Direcção de projecção versus Plano de Projecção

A

B

Direcção deProjecção

RaiosProjectores

Plano deProjecção

39©2006, CG&M/IST e Figuras Addison Wesley

Projecções Ortogonais

Direcção de projecção coincide com a normalNormal ao plano

Vistas: alinhada com um dos eixosAxonométricas: não alinhada

40©2006, CG&M/IST e Figuras Addison Wesley

Vistas

Usadas em desenhos técnicosEngenharias Civil e MecânicaArquitectura

VantagensMedidas precisas

todas as vistas na mesma escala

LimitaçõesNão é possível “visualizar” objectos 3DMúltiplas vistas para definir peça

Planta

Alçadolateral

Alçadofrontal

41©2006, CG&M/IST e Figuras Addison Wesley

Axonométricas

Isométricas: ângulos de 120º entre eixos (1 escala)

Dimétricas: dois ângulos iguais (2 escalas)

Trimétrica: três ângulos diferentes (3 escalas)

42©2006, CG&M/IST e Figuras Addison Wesley

Projecções Oblíquas

Raios projectores formam ângulo oblíquo com o plano de projecção

VantagensMostra forma exacta de uma faceComparação de dimensões possívelIdeia da aparência 3D de um objecto

DesvantagensAparência distorcidaFalta de “realismo”

normalao plano direcção de

projecção

Page 8: Programação Gráfica – Cap2 · Polígonos não planares Atributos (fronteira do polígono) Objectos Pontos versus Vértices. Programação Gráfica

Programação Gráfica –Cap 2

8

43©2006, CG&M/IST e Figuras Addison Wesley

Exemplos de Projecções Oblíquas

CavaleiraAngulo entre projectores e normal = 45ºFaces perpendiculares à escala

GabineteÂngulo entre projectores e normal arctg(2) = 63.4ºFaces perpendiculares à escala de 50%

1

1

1

1

11/2

44©2006, CG&M/IST e Figuras Addison Wesley

Projecções Perspectiva

Linhas paralelas convergem em pontos de fuga.Linhas paralelas aos eixos definem pontos de fuga axiais (máximo de 3)Não mantém proporcionalidade entre distânciasTamanho dos objectos diminui com a distânciaSó mantém a amplitude dos ângulos em faces paralelas ao plano de projecção

Ponto deFuga (x)

Ponto deFuga (y)

45©2006, CG&M/IST e Figuras Addison Wesley

Pontos de Fuga

Número de pontos de fuga = eixos coordenados intersectados pelo plano de projecção.1 Ponto de Fuga, Plano Z:y

z

x

46©2006, CG&M/IST e Figuras Addison Wesley

Mais Pontos de Fuga

2 ponto de fuga (z e x)

x

z3 pontos de fuga (z y x)

z

y

x

47©2006, CG&M/IST e Figuras Addison Wesley

Tipos de Projecções Planas

Paralelas Perspectivas

Ortogonais Oblíquas

AlçadoFrontal

Outras

AlçadoLateral

Planta

Isométrica

Cavaleira

Gabinete

Outras

1 pontode fuga

3 pontosde fuga

2 pontosde fuga

48©2006, CG&M/IST e Figuras Addison Wesley

Síntese

NPP - Normal ao Plano de ProjecçãoDP - Direcção de Projecção

1) OrtogonaisNPP || um eixo, DP || NPPuma face, medidas exactas

2) AxonométricasNPP || qq eixo, DP NPfaces adjacentes, nenhuma exacta, uniformemente “encolhidas”

3) OblíquasNPP || um eixo, DP NPPfaces adjacentes, uma exacta, outras uniformemente encolhidas

Page 9: Programação Gráfica – Cap2 · Polígonos não planares Atributos (fronteira do polígono) Objectos Pontos versus Vértices. Programação Gráfica

Programação Gráfica –Cap 2

9

49©2006, CG&M/IST e Figuras Addison Wesley

Projecção Paralela em OpenGL

Volume de Visualização (objectos podem estar por detrás da câmara)

void glOrtho (GLdouble left, GLdouble right, GLdoublebottom, GLdouble top, GLdouble near, GLdouble far);

50©2006, CG&M/IST e Figuras Addison Wesley

Projecção Perspectiva em OpenGL

Volume definido, também, no Sistema de Coordenadas de Visualização

void glFrustum (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far);

51©2006, CG&M/IST e Figuras Addison Wesley

Aplicação projection

Vários tipos de projecçãoUtilização de função do gluLookAtPlanos de RecorteAbertura da câmara

52©2006, CG&M/IST e Figuras Addison Wesley

Sistema de Janelas

Efectuado através de funções do GLUTViewport ou Janela do ecrãResolução = Resolução do ecrãFuncionamento de um programa:

int main(int argc, char** argv){glutCreateWindow("simple"); glutDisplayFunc(mydisplay); glutMainLoop();

}

53©2006, CG&M/IST e Figuras Addison Wesley

Funções GLUT#include <GL/glut.h>

int main(int argc, char** argv){

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(500,500);

glutInitWindowPosition(0,0);

glutCreateWindow("simple program");

glutDisplayFunc(mydisplay);

myinit();

glutMainLoop();

}

54©2006, CG&M/IST e Figuras Addison Wesley

Remoção de Elementos Ocultos

Page 10: Programação Gráfica – Cap2 · Polígonos não planares Atributos (fronteira do polígono) Objectos Pontos versus Vértices. Programação Gráfica

Programação Gráfica –Cap 2

10

55©2006, CG&M/IST e Figuras Addison Wesley

Remoção de Elementos Ocultos em OpenGL

Buffer adicional – Z-Buffer

Inicializar:glEnable (GL_DEPTH_TEST);

Limpar antes de cada desenho:glClear(GL_COLOR_BUFFER_BIT |

GL_DEPTH_BUFFER_BIT)

56©2006, CG&M/IST e Figuras Addison Wesley

Animação

Redesenhar um objectoComo se consegue que duas imagens não sejam vistas em sequência?Qual a frequência de desenho?

57©2006, CG&M/IST e Figuras Addison Wesley

Exemplo

58©2006, CG&M/IST e Figuras Addison Wesley

Execução

Em cada ciclo limpar o buffer de cor:glClear (GL_COLOR_BUFFER_BIT);

Desenhar o Polígono em cada posiçãoglBegin (GL_POLYGON);.....glEnd ();

59©2006, CG&M/IST e Figuras Addison Wesley

Uso de dois Buffers

Mostrar num Buffer (front buffer)Desenhar num 2º Buffer (back buffer)

Para trocar os buffers na função de Desenho:glutSwapBuffers ();

Mas:glutInitDisplayMode (... GLUT_DOUBLE);

60©2006, CG&M/IST e Figuras Addison Wesley

Frequência de desenho

Desenho das imagens demasiado depressa...Como se controla a velocidade de desenho?

Usar mecanismos de timing do Sistema Operativo...Troca de buffers sincronizada com a frequência de refrescamentoUso do GLUT

Page 11: Programação Gráfica – Cap2 · Polígonos não planares Atributos (fronteira do polígono) Objectos Pontos versus Vértices. Programação Gráfica

Programação Gráfica –Cap 2

11

61©2006, CG&M/IST e Figuras Addison Wesley

Funcionamento no GLUT

Int n = 60; /* frequencia de refrescamento */glutTimerFunc {100, myTimer, n);

/* funcao de retorno */Void myTimer (int v);{

glutPostRedisplay ();glutTimerFunc (1000/n, myTimer, v);

}

62©2006, CG&M/IST e Figuras Addison Wesley

Sumário

Sistemas de CoordenadasIntrodução à Máquina OpenGLPrimitivas e AtributosIntrodução à CorProjecçõesInteracção com o Sistema de Janelas

Remoção de Elementos OcultosFundamentos de Animação

Page 12: Programação Gráfica – Cap2 · Polígonos não planares Atributos (fronteira do polígono) Objectos Pontos versus Vértices. Programação Gráfica

This document was created with Win2PDF available at http://www.win2pdf.com.The unregistered version of Win2PDF is for evaluation or non-commercial use only.This page will not be added after purchasing Win2PDF.