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
eye
Coordenadas dos
objetos
Coordenadas do
olho
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
 xex
y
R   ex
 zex

0
yo ye
eye
zo
center
0
0
0

1
xez
yez
zez
0
ye , yo
ze
xe
xey
yey
zey
0
xo
ze , zo
xe , xo
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]
Download

Programa‡Æo em OpenG.. - PUC-Rio