COMPUTA - PowerPoint PPT Presentation

1 / 40
About This Presentation
Title:

COMPUTA

Description:

... A matriz escolhida ... Modelo de c mara sint tica Considere-se a projec o ortogr fica da figura ao lado com direc o de projec o ortogonal. – PowerPoint PPT presentation

Number of Views:104
Avg rating:3.0/5.0
Slides: 41
Provided by: Carlos508
Category:

less

Transcript and Presenter's Notes

Title: COMPUTA


1
COMPUTAÇÃO GRÁFICA E INTERFACES
  • Visualização e Transformações Geométricas em 3D
  • Curso de Engenharia InformáticaAno lectivo
    2004/2005Escola Superior de Tecnologia e Gestão
    da Guarda

2
Pipeline de visualização da OpenGL
Transformaçãoviewport
DivisãoPerspectiva
Matriz deProjeção
Matriz deModelizaçãoe Visualização
v e r t i c e
normalizadasde dispositivo
janela
recorte
olho
objeto
3
Estado inicial do pipeline
  • Inicialmente
  • As matrizes modelview e projection são
    matrizes-identidade
  • Vértices não são transformados e a projecção é
    paralela sobre o plano x-y
  • O mundo visível é restrito ao cubo
  • -1 x,y,z 1
  • A transformação viewport mapeia o quadrado -1
    x,y 1 (em coordenadas normalizadas de
    dispositivo) na superfície total da janela.

4
Viewport
A viewport é a área rectangular onde a imagem
será visualizada. Em OpenGL a viewport é
definida com a função void glViewport( GLint x,
GLint y, GLsizei width, GLsizei height )
glViewport(-100,-100, (GLint)width,
(GLint)height)
glViewport(0,0, (GLint)width, (GLint)height)
5
Primitivas gráficas
  • glBegin(TIPO_PRIMITIVA)
  • glVertex3f(x, y, z)
  • . . .
  • glEnd()

6
Primitivas gráficas
  • Propriedades de linhas e pontos
  • Tamanho (default 1)
  • glPointSize( GLfloat size )
  • glLineWidth( GLfloat width )
  • Suavização (default desligado)
  • glEnable(GL_POINT_SMOOTH)
  • glEnable(GL_LINE_SMOOTH)
  • glDisable(GL_POINT_SMOOTH)
  • glDisable(GL_LINE_SMOOTH)

7
Primitivas gráficas
  • Propriedades de polígonos
  • A ordenação dos vértices define a face frontal
  • O default é o sentido anti-horário
  • É possível alterar a ordem
  • glFrontFace(GL_CW) Sentido horário
  • glFrontFace(GL_CCW) Sentido anti-horário

8
Primitivas gráficas
  • Modos de renderização
  • Wireframe
  • glPolygonMode(GL_FRONT, GL_LINE)
  • Sólido
  • glPolygonMode(GL_FRONT, GL_FILL)
  • Pontos
  • glPolygonMode(GL_FRONT, GL_POINT)
  • Backface Culling
  • glEnable(GL_CULL_FACE)
  • Z-Buffer
  • glEnable(GL_DEPTH_TEST)

9
Primitivas gráficas
  • Objectos sólidos da biblioteca GLUT
  • glutSolidTeapot(GLdouble size)
  • glutSolidCube(GLdouble size)
  • glutSolidSphere(GLdouble radius, GLint slices,
    GLint stacks)
  • glutSolidCone(GLdouble radius, GLdouble height,
    GLint slices, GLint stacks)
  • glutSolidTorus(GLdouble innerRadius, GLdouble
    outerRadious, GLint nsides, GLint rings)
  • glutSolidIcosahedron(void)
  • glutSolidOctahedron(void)
  • glutSolidTetrahedron(void)
  • glutSolidDodecahedron(GLdouble radious)

10
Transformações geométricas 3D
  • Translação

11
Transformações geométricas 3D
  • Rotação em torno do eixo Z
  • Sabemos que
  • Então
  • Ou, finalmente,

12
Transformações geométricas 3D
  • Matrizes de rotação
  • Rotação em torno de Z
  • Rotação em torno de X
  • Rotação em torno de Y

13
Transformações geométricas 3D
  • Variação de escala

y
y
x
x
z
z
14
Transformações geométricas 3D
  • Transformações geométricas 3D em OpenGL
  • As trnasformações geométricas são aplicadas nas
    matrizes modelview e projection do pipeline
  • A matriz é escolhida através da função
  • glMatrixMode(GL_MODELVIEW) ou glMatrixMode(GL_PRO
    JECTION)
  • As transformações geométricas Translação, Rotação
    e Variação de escala são implementadas
    respectivamente pelas funções
  • glTranslated( GLdouble x, GLdouble y, GLdouble z
    )
  • glTranslatef( GLfloat x, GLfloat y, GLfloat z )
  • glRotated( GLdouble angle, GLdouble x, GLdouble
    y, GLdouble z )
  • glRotatef( GLfloat angle, GLfloat x, GLfloat y,
    GLfloat z )
  • glScaled( GLdouble x, GLdouble y, GLdouble z )
  • glScalef( GLfloat x, GLfloat y, GLfloat z )

15
Projecções Geométricas
  • As projecções permitem a visualização planar de
    objectos tridimensionais.
  • Para gerar a imagem de um objecto 3D, precisamos
    converter as coordenadas 3D em coordenadas 2D que
    correspondem a uma visão específica do objecto.
    Esse processo é chamado de projecção.

16
Projecções Geométricas
  • Elementos básicos das projecções
  • Sendo a projecção de um objecto a sua
    representação gráfica num plano, e tendo os
    objectos três dimensões, para a sua representação
    num plano bidimensional devem ser considerados os
    seguintes elementos básicos da projecção
  • Plano de Projecção
  • Projectante, ou raio de projecção
  • Centro de projecção.

A projectante é a recta que passa pelos pontos do
objecto na direcção do centro de projecção e
intercepta o plano de projecção. Ela pode ser
oblíqua ou ortogonal ao plano de projecção,
definindo assim o tipo de projecção.
17
Projecções Geométricas
  • Tipos de projecções geométricas
  • Existem dois tipos de projecção a perspectiva e
    a ortográfica (paralela).
  • Na projecção perspectiva as projectantes
    convergem para o centro de projecção fazendo com
    que a projecção resultante tenha em conta a
    distância a que se encontra o objecto, do plano
    de projecção.
  • A projecção perspectiva é aquela que acontece no
    processo de formação de imagens nos nossos olhos
    ou numa câmara fotográfica, por isso é a que gera
    imagens mais realistas e mais familiares ao
    observador humano.

18
Projecções Geométricas
  • Tipos de projecções geométricas
  • Na projecção ortográfica ou paralela, o centro de
    projecção está no infinito e as projectantes são
    paralelas entre si.
  • Na projecção paralela, as linhas que unem os
    pontos A e B às suas projecções A e B são
    paralelas, isto faz com que o segmento projectado
    tenha o mesmo tamanho para qualquer distância
    entre o plano de projecção e o objecto.
  • Este tipo de projecção é utilizada em projectos
    de arquitectura e engenharia onde não há
    preocupação com a distância aparente dos objectos
    e o que realmente interessa é que a escala e os
    ângulos dos objectos seja preservada

19
Projecções Geométricas
  • As projecções geométricas são classificadas
    conforme o organograma seguinte. Esta
    classificação depende das relações entre o centro
    de projecção, o plano de projecção e as
    projectantes.

20
Projecções Geométricas
  • Projecções paralelas ortográficas
  • Usadas em desenhos técnicos
  • Engenharias Civil e Mecânica
  • Arquitectura
  • Vantagens
  • Medidas precisas
  • Todas as vistas na mesma escala
  • Limitações
  • Não é possível visualizar objectos 3D
  • Múltiplas vistas para definir peça

21
Projecções Geométricas
  • Projecções paralelas axonométricas
  • Mesmo método das vistas ortogonais
  • Isométricas
  • ângulos de 120º entre eixos (1 escala)
  • Dimétricas
  • dois ângulos iguais (2 escalas)
  • Trimétrica
  • três ângulos diferentes (3 escalas)

22
Projecções Geométricas
  • Projecções paralelas obliquas
  • Raios projectores formam ângulo oblíquo com o
    plano de projecção.
  • Plano de projecção normal a um dos eixos
    principais.
  • Vantagens
  • Mostra forma exacta de uma face
  • Comparação de dimensões possível
  • Ideia da aparência 3D de um objecto
  • Desvantagens
  • aparência distorcida dependendo do plano de
    projecção
  • falta de realismo

23
Projecções Geométricas
  • Projecções paralelas obliquas (dois casos
    especiais)
  • Cavaleira
  • Ângulo entre projectores e normal 45º
  • Faces perpendiculares à escala.
  • Gabinete
  • Ângulo entre projectores e normal arctg(2)
    63.4º
  • Faces perpendiculares à escala de 50.

24
Projecções Geométricas
  • Projecções perspectivas
  • Usadas mais em publicidade e artes gráficas mas
    também em arquitectura, desenho industrial,
    engenharia.
  • Garantem maior realismo mas alteram a geometria
    dos objectos
  • As linhas paralelas dos objectos (não ao plano de
    projecção), convergem em
  • pontos de fuga. As linhas paralelas aos eixos
    definem pontos de fuga axiais (máximo de 3). Não
    mantém proporcionalidade entre distâncias. O
    tamanho dos objectos diminui com a distância. Só
    mantém a amplitude dos ângulos em faces paralelas
    ao plano de projecção.

25
Projecções Geométricas
  • Projecções perspectivas

26
Projecções Geométricas
  • Definição matemática da projecção genérica
  • Qualquer projecção pode ser definida
    matematicamente por uma matriz 4 x 4.
  • Considere-se a projecção de um ponto P ilustrada
    na figura ao lado.
  • O plano de projecção é perpendicular ao eixo z na
    distância zp da origem.
  • O centro de projecção está a uma distância D do
    ponto (0, 0, zp).
  • O vector normalizado (dx, dy, dz) dá a direcção
    de projecção e é a direcção de (0, 0, zp) para o
    centro de projecção.

27
Projecções Geométricas
  • Definição matemática da projecção genérica

Para construir a matriz geral de projecção, a
qual chamaremos de Mgeral, basta sabermos apenas
os valores de zp, (dx, dy, dz) e D. A partir
desta matriz geral é possível definir qualquer
tipo de projecção. Deve-se apenas ter em conta as
características gerais das projecções paralelas e
perspectivas, e as características específicas
dos casos especiais dessas projecções. A
direcção do vector unitário (dx, dy, dz) e o
valor de D (distância do ponto (0, 0, zp) ao
centro de projecção) pode ser calculada da
seguinte forma
28
Projecções Geométricas
  • Matriz geral de projecção em OpenGL
  • void __fastcall Form1FormResize()
  • GLfloat mprojecao16
  • glViewport(0,0,width,height)
  • glMatrixMode( GL_PROJECTION )
  • glLoadIdentity()
  • mprojecao 01 mprojecao 1 0 mprojecao
    2 0 mprojecao 3 0
  • mprojecao 4 0 mprojecao 5 1 mprojecao
    6 0 mprojecao 7 0
  • mprojecao 8 0 mprojecao 9 0 mprojecao
    10 0 mprojecao 11 1/7
  • mprojecao 12 0 mprojecao 13 0 mprojecao
    14 0 mprojecao 15 1
  • glLoadMatrixf (mprojecao)
  • glClearColor(0.0f,0.0f,0.0f,0.0f)
  • glClear( GL_COLOR_BUFFER_BIT )

Formato da matriz em OpenGL
29
Projecções Geométricas
  • Definição da matriz de projecção perspectiva 1º
    exemplo

Para simplificar, considere-se a projecção
perspectiva representada na figura ao lado com o
centro de projecção em (0, 0, 0) e direcção de
projecção ortogonal. Os parâmetros para definir
a matriz de projecção perspectiva Mper para este
exemplo, são respectivamente
Substituindo estes valores na matriz de projecção
geral, obtemos a seguinte matriz de projecção
perspectiva Notar que neste exemplo basta
conhecer a distância D para que a matriz de
projecção possa ser definida.
30
Projecções Geométricas
  • Definição da matriz de projecção perspectiva 2º
    exemplo

Considere-se uma nova projecção perspectiva
ortogonal representada na figura ao lado, agora
com o plano de projecção em zp 0 e o centro de
projecção em (0, 0, -D). Os parâmetros para
definir a matriz de projecção perspectiva Mper,
são respectivamente
Substituindo estes valores na matriz de projecção
geral, obtemos a seguinte matriz de projecção
perspectiva Notar que mais uma vez, basta
conhecer a distância D para que a matriz de
projecção possa ser definida.
31
Projecções Geométricas
  • Projecção perspectiva em OpenGL

Em OpenGL existe uma matriz de projecção
perspectiva default com direcção ortogonal.
Para configuração de uma projecção perspectiva
em OpenGL (utilizando a matriz default), é apenas
necessário definir o volume visível representado
na figura ao lado. O volume visível é definido
pelo tronco de uma pirâmide. São especificados os
valores de X máximo e mínimo assim como os
valores de Y máximo e mínimo. O valor de Near é
igual a -Z min e o valor de Far é igual a -Z max.
Somente será visualizado o que estiver dentro
deste volume visível. A projecção é definida
pelos seguintes comandos glMatrixMode(
GL_PROJECTION ) glLoadIdentity()
glFrustum(Xmin, Xmax, Ymin, Ymax, Near, Far)
32
Projecções Geométricas
  • Projecção perspectiva em OpenGL

Existe outra função da biblioteca GLU (utilitária
da OpenGL), que fornece uma outra maneira de se
configurar uma projecção perspectiva em OpenGL.
Ela permite que seja especificado o ângulo de
visão (ou field of vision), da projecção gluPers
pective (fovy, aspecto, near, far) Onde fovy
-gt é o ângulo de visãoaspect -gt Largura (w na
figura) / Altura (h na figura)  da janela de
visualização.near e far -gt idênticos aos
parâmetros do comando Frustum.        
33
Projecções Geométricas
  • Definição da matriz de projecção perspectiva 3º
    exemplo

Considere-se agora a projecção perspectiva da
figura ao lado em que a direcção de projecção não
é ortogonal ao plano de projecção. Os parâmetros
para definir uma matriz de projecção perspectiva
M1, são respectivamente
Substituindo estes valores na matriz de projecção
geral, obtemos a seguinte matriz de projecção
perspectiva
34
Projecções Geométricas
  • Definição da matriz de projecção ortográfica
    Exemplo 1

Considere-se a projecção ortográfica da figura ao
lado com direcção de projecção ortogonal. Como a
projecção paralela pode ser vista como uma
projecção perspectiva onde o centro de projecção
está no infinito, o valor de D (distância do
centro de projecção ao ponto (0,0, zp), neste
caso zp 0) será infinito. Os parâmetros para
definir uma matriz de projecção perspectiva Mpar,
são respectivamente
Substituindo estes valores na matriz de projecção
geral, obtemos a seguinte matriz de projecção
paralela Notar que neste caso especial de
projecção paralela não é necessário conhecer
qualquer parâmetro da projecção e a matriz da
mesma é constante.
35
Projecções Geométricas
  • Projecção ortográfica em OpenGL

Em OpenGL já vem definida também uma matriz de
projecção com direcção ortogonal default para a
projecção ortográfica. Como na projecção
perspectiva, para realizar uma projecção deste
tipo em OpenGL (utilizando esta matriz default),
é necessário definir-se apenas o volume visível
ilustrado na figura ao lado. O volume visível é
definido por um paralelepípedo. São
especificados os valores de X máximo e mínimo
assim como os valores de Y máximo e mínimo. O
valor de Near é igual a -Z min e o valor de Far é
igual a - Z max. Como na projecção perspectiva,
somente será visualizado o que estiver dentro
deste volume visível.     A projecção é definida
pelos seguintes comandos glMatrixMode(
GL_PROJECTION ) glLoadIdentity()
glOrtho(Xmin, Xmax, Ymin, Ymax, Near, Far)
36
Projecções Geométricas
  • Definição da matriz de projecção ortográfica
    Exemplo 2

A projecção isométrica é uma projecção onde o
plano de projecção (e consequentemente a direcção
de projecção) faz o mesmo ângulo com cada eixo
principal (x, y, e z). Existem apenas oito
direcções (uma em cada octante), que satisfazem
esta condição. Por exemplo (1, 1, 1), (1, -1,
-1) e (-1, -1, -1). Essa projecção é muito útil,
pois as medidas junto aos eixos são feitas na
mesma escala (iso igual, metric medida). A
matriz Miso de uma projecção isométrica com
direcção de projecção igual a (-1, -1, -1) é
definida pelos parâmetros
Substituindo estes valores na matriz de projecção
geral, obtemos a seguinte matriz de projecção
paralela
37
Projecções Geométricas
  • Definição da matriz de projecção ortográfica
    Exemplo 3

As projecções cabinet e cavaleira são muito
utilizadas em arquitectura e engenharia. Para a
projecção cavaleira, a direcção de projecção faz
um ângulo de 45º  com o plano de projecção. Já a
projecção cabinet, tem uma direcção de projecção
fazendo um ângulo de arctan(2) 63,4º com o
plano de projecção. Para estas projecções,
considerando t o ângulo entre o eixo z e o eixo x
(tipicamente 30º ou 45º), teremos como parâmetros
das matrizes Mcav (cavaleira) e Mcab (cabinet) os
valores mostrados na figura 4.5.11.
Substituindo estes valores na matriz de projecção
geral, obtemos a seguinte matriz resultantes das
projecções cavaleira e cabinet para t 45º.
38
Modelo de câmara sintética
A OpenGL utiliza uma analogia comparando a
visualização 3D com tirar fotografias com uma
câmara.
volume visível
câmara
modelo
tripé
39
Modelo de câmara sintética
Interpretação do modelo da câmara Duas
interpretações possíveis Levam a câmara até a
cena que se quer visualizar Levam os objectos da
cena até uma câmara estacionária Em OpenGL a
câmara pode ser posicionada com a
função gluLookAt(eyex, eyey, eyez,aimx, aimy,
aimz, upx, upy, upz) eye ponto onde a câmara
será posicionada aim ponto para onde a câmara
será apontada up vector que dá a direcção para
cima da câmara
40
Modelo de câmara sintética
  • Interpretação do modelo da câmara
  • Modelação
  • Mover /deformar os objectos
  • Visualização
  • Mover e orientar a câmara
  • Projecção
  • Ajuste da lente / objectiva da câmara
  • Viewport
  • Aumentar ou reduzir a fotografia
Write a Comment
User Comments (0)
About PowerShow.com