Page 1
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 –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 –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 –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 –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 –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 –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
B´
A´
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
B´
A´
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 –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 –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 –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 –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
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.