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

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

Programação em OpenGL Daniel de Vasconcelos Campos.

Apresentações semelhantes


Apresentação em tema: "Programação em OpenGL Daniel de Vasconcelos Campos."— Transcrição da apresentação:

1 Programação em OpenGL Daniel de Vasconcelos Campos

2 Tópicos Problema proposto Análise do problema Possíveis abordagens Técnica do ARCBALL

3 Tópicos Problema proposto Análise do problema Possíveis abordagens Técnica do ARCBALL

4 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.

5 Tópicos Problema proposto Análise do problema Possíveis abordagens Técnica do ARCBALL

6 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.

7 Tópicos Problema proposto Análise do problema Possíveis abordagens para o 1 subproblema Técnica do ARCBALL

8 Glu Look At Dados: eye, center, up (definem o sistema de coordenadas do olho) Determine a matriz que leva do sistema de Coordenadas dos Objetos para 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 dos objetos Coordenadas do olho eye

9 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.

10 Tópicos Problema proposto Análise do problema Possíveis abordagens para o 2 subproblema Técnica do ARCBALL

11 Possíveis abordagens para o 2 subproblema O próximo ponto seria utilizar a matriz que faz a rotação x e y e z e para x w y w z w. Este passo é melhor explicado no próximo slide.

12 Roda x e y e z e para x w y w z w x e, x o y e, y o z e, z o zozo yoyo xoxo center eye zeze xexe yeye

13 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.

14 Tópicos Problema proposto Análise do problema Possíveis abordagens para o 2 subproblema Técnica do ARCBALL

15 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.

16 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.0r) ENDIF

17 ARCBALL Há duas possibilidades de algoritmos: -Quaternions -Eixo fixo de rotação e o ângulo que se deseja rotacionar( Matriz de rotação).

18 ARCBALL - Quaternions: Com os pontos, criase 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.

19 ARCBALL -Ângulo e Eixo fixo de rotação: Com os pontos, criase dois vetores p0 e p1 p0 = (x0,y0,z0) // x,y,z calculados no mapeamento p1 = (x1,y1,z1) // x,y,z calculados no mapeamento vrot = p0 × p1 // Eixo de Rotação ang = 2 * acos(p0 p1)// Angulo de Rotação – Nesse caso girase o ângulo correto, já em relação `a quaternions o ângulo é a metade.

20 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]


Carregar ppt "Programação em OpenGL Daniel de Vasconcelos Campos."

Apresentações semelhantes


Anúncios Google