1 / 20

Programação em OpenGL

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

coby
Download Presentation

Programação em OpenGL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. up eye center Coordenadas dos objetos Coordenadas do olho 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 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. yo ye ye , yo ze xe xo eye ze , zo zo xe , xo center Roda xe ye ze para xw yw zw

  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]

More Related