Duvidas sobre EP2

Re: Duvidas sobre EP2

by Carlos Hitoshi Morimoto -
Number of replies: 0
oi,
voce lembra que eu sugeri utilizar um frame de coordenadas para cada nave?
vamos ver como isso pode ser implementado.

Tem o frame F, que é o mundo. O glLookAt precisa ser definido ANTES dos objetos (ilha, mar, etc). Se voce tem o frame G da aeronave, o ponto G.Origem é a posição da câmera, o ponto sendo observado pode ser dado somando à origem o vetor (0,0,-1), e o up é o vetor (0, 1, 0).

Como atualizar o frame G?
A nave tem velocidade de translacao e rotacao. Dado o Delta t (voce precisa ter o timer) do ultimo frame renderizado, você pode calcular a nova posição. A rotacao, voce precisa criar, para cada eixo, rotinas que rodem os outros 2, algo como rotatex (double theta), rotatey e rotatez. Desse jeito fica parecido com os angulos de Euler. Muito bem, rotatex roda o plano yz ao redor do eixo x de theta, ou seja, como vimos em aula, algo como:

y' = y cos theta - z sin theta
z' = y sin theta + z cos theta

(cuidado, os sinais ai podem estar trocados....)
Como a gente ta rodando o frame G, os vetores da base, que começam
com (1,0,0) (0,1,0) (0, 0, 1) vao receber uma rotacao. Quando rodamos em
torno de x, o (1,0,0) nao muda, mas o (0,1,0) e o (0,0,1) devem mudar.
Como a rotacao é sobre o frame G sempre, para gerar a proxima animacao,
basta atualizar os vetores (e a origem) desse frame.

espero ter ajudado.
hitoshi