Upload
coby
View
23
Download
0
Embed Size (px)
DESCRIPTION
Programação em OpenGL. Daniel de Vasconcelos Campos. Tópicos. Problema proposto Análise do problema Possíveis abordagens Técnica do ARCBALL. Tópicos. Problema proposto Análise do problema Possíveis abordagens Técnica do ARCBALL. Problema Proposto:. - PowerPoint PPT Presentation
Citation preview
Programação em OpenGL
Daniel de Vasconcelos Campos
Tópicos
• Problema proposto• Análise do problema• Possíveis abordagens• Técnica do ARCBALL
Tópicos
• Problema proposto• Análise do problema• Possíveis abordagens• Técnica do ARCBALL
Problema Proposto:
Faça um programa que com um botão leia um arquivo de cena do tipo do rt4 e, através das teclas, , , mova a câmera para esquerda, direita, para cima e para baixo, respectivamente. O usuário deve também poder apontar com o mouse um objeto da cena e com isto a câmera deve rotacionar de forma a que o centro do objeto fique no eixo óptico da câmera. Implemente esta rotação inicialmente de qualquer maneira mas depois faça uma animação onde o movimento da câmera seja o mais suave e natural possível.
Tópicos
• Problema proposto• Análise do problema• Possíveis abordagens• Técnica do ARCBALL
Análise do problema :
• O problema foi dividido em partes para que fosse mais fácil resolvê-lo;
• Parte 1: Faça um programa que com um botão leia um
arquivo de cena do tipo do rt4 e, através das teclas, , , , mova a câmera para esquerda, direita, para cima e para baixo, respectivamente.
Tópicos
• Problema proposto• Análise do problema• Possíveis abordagens para o 1⁰ subproblema• Técnica do ARCBALL
Glu Look At
Dados: eye, center, up (definem o sistema de coordenadas do olho)
Determine a matriz que leva do sistema de Coordenadas dos Objetospara o sistema de Coordenadas do Olho
void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz);
up eye
center
Coordenadas dosobjetos
Coordenadas doolho
eye
Análise do problema :
• Parte 2: (Não implementado)– O usuário deve também poder apontar com o
mouse um objeto da cena e com isto a câmera deve rotacionar de forma a que o centro do objeto fique no eixo óptico da câmera. Implemente esta rotação inicialmente de qualquer maneira mas depois faça uma animação onde o movimento da câmera seja o mais suave e natural possível.
Tópicos
• Problema proposto• Análise do problema• Possíveis abordagens para o 2⁰ subproblema• Técnica do ARCBALL
Possíveis abordagens para o 2⁰ subproblema
• O próximo ponto seria utilizar a matriz que faz a rotação xe ye ze para xw yw zw. Este passo é
melhor explicado no próximo slide.
Roda xe ye ze para xw yw zw
xe , xo
ye , yo
ze , zo
1000
0
0
0
ezeyex
ezeyex
ezeyex
zzz
yyy
xxx
R
zo
yo
xo
center
eye
ze
xe
ye
A partir daí, a técnica do ARCBALL, seria útil para que o usuário tenha a possibilidade de enxergar o objeto do melhor ângulo de interesse.
Tópicos
• Problema proposto• Análise do problema• Possíveis abordagens para o 2⁰ subproblema• Técnica do ARCBALL
ARCBALL
• Transforma as coordenadas 2D do Mouse em rotações.
• No modelo proposto por [2], possui a importante propriedade de conservação das rotações.
ARCBALL
• O procedimento mapeia as coordenadas dos pontos inicial e final na esfera.
• pt.x = (screen.x – center.x)/radius; // center : Centro da Esfera• pt.y = (screen.y – center.y)/radius; // radius : raio da esfera• r = pt.x*pt.x + pt.y*pt.y;• IF r > 1.0 THEN // Fora da Esfera• s = 1.0/sqrt[r];• pt.x = s*pt.x;• pt.y = s*pt.y;• pt.z = 0.0;• ElSE• pt.z = sqrt(1.0 r)‐• ENDIF
ARCBALL
• Há duas possibilidades de algoritmos:- Quaternions- Eixo fixo de rotação e o ângulo que se deseja
rotacionar( Matriz de rotação).
ARCBALL
- Quaternions:• Com os pontos, cria se dois quaternions p0 e p1‐ p0 = (x0,y0,z0,0) // x,y,z calculados no mapeamento p1 = (x1,y1,z1,0) // x,y,z calculados no mapeamento q = p1 p0*// onde p0* é o conjugado de p0• q é o quaternion que descreve a rotação.
ARCBALL
-Ângulo e Eixo fixo de rotação: Com os pontos, cria se dois vetores p0 e p1‐
p0 = (x0,y0,z0) // x,y,z calculados no mapeamentop1 = (x1,y1,z1) // x,y,z calculados no mapeamentovrot = p0 × p1 // Eixo de Rotaçãoang = 2 * acos(p0 p1)// Angulo de Rotação∙– Nesse caso gira se o ângulo correto, já em relação `a ‐
quaternions o ângulo é a metade.
Referências
• [1] Notações de aula [ Marcelo Gattass]• [2] ARCBALL:A User Interface for Specifying• Three-Dimensional Orientation Using a
Mouse[Ken Shoemake]• [3] Utilização de quatérnios para representação
de rotações em 3D[ Sergio Coutinho de Biasi e Marcelo Gattass]