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

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

Daniel de Vasconcelos Campos

Apresentações semelhantes


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

1 Daniel de Vasconcelos Campos
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 void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz); 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 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 xe ye ze para xw yw zw. Este passo é melhor explicado no próximo slide.

12 Roda xe ye ze para xw yw zw
Computação Gráfica Interativa - Gattass 3/23/2017 Roda xe ye ze para xw yw zw zo yo xo center eye ze xe ye xe , xo ye , yo ze , zo Modelo de Camera do OpenGL

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.0‐r) 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, 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.

19 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 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 gira‐se 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 "Daniel de Vasconcelos Campos"

Apresentações semelhantes


Anúncios Google