Daniel de Vasconcelos Campos 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 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
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 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
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 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.
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]