Programação em OpenGL

Preview:

DESCRIPTION

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:. - PowerPoint PPT Presentation

Citation preview

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

Dados: eye, center, up (definem o sistema de coordenadas do olho)

Determine a matriz que leva do sistema de Coordenadas dos Objetospara 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 dosobjetos

Coordenadas doolho

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

xe , xo

ye , yo

ze , zo

1000

0

0

0

ezeyex

ezeyex

ezeyex

zzz

yyy

xxx

R

zo

yo

xo

center

eye

ze

xe

ye

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 mapeamentop1 = (x1,y1,z1) // x,y,z calculados no mapeamentovrot = p0 × p1 // Eixo de Rotaçãoang = 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]

Recommended