Duvidas sobre EP2

Duvidas sobre EP2

por Ivan Neto -
Número de respostas: 11
Ola,
alguem conseguiu desenhar a ilha igual ao EP modelo? Tentei de tudo com GL_POLYGON, GL_TRIANGLE_FAN, etc e nao saiu igual.
Tentei desenhar um retangulo e tracar a diagonal e tambem nao funcionou. E as cores, alguem sabe como distribuir na ilha? O enunciado ta bem vago: "a cor de cada vértice é baseada em sua elevação". Outra coisa, como eu devo usar os tres angulos de Euler dados no arquivo de entrada? O enunciado fala de "plano apontando na direcao -z", mas o que isso significa?

To com essas duvidas faz um tempinho, e apesar de pensar bastante ainda nao consegui chegar a nenhuma conclusao. Sera que sou so eu que estou com estas duvidas? Alguem tem alguma luz?

Obrigado.
Em resposta à Ivan Neto

Re: Duvidas sobre EP2

por Ivan Neto -
No enunciado do EP esta dizendo para mapearmos as coordenadas do mouse para [-1, 1] e então multiplicarmos por 5 graus por segundo para obter as velocidades de yaw e pitch. Fazendo isso, vi que a rotacao fica bastante lenta (uma rotacao de 360 graus leva no minimo 72 segundos). No EP de exemplo isso claramente nao acontece. Podemos aumentar o fator multiplicativo das velocidades de rotacao ou devemos seguir a risca o que esta no enunciado do EP?

Obrigado.
Em resposta à Ivan Neto

Re: Duvidas sobre EP2

por Carlos Hitoshi Morimoto -
certamente,
voce pode escolher parametros que achar mais apropriados.
ht

Em resposta à Carlos Hitoshi Morimoto

Re: Duvidas sobre EP2

por Tiago Motta Jorge -
Oi!

   Ainda não entendi aquela estória sobre um "plano apontando para algum lugar".

   No enunciado do EP, não entendi o exemplo dos ângulos
"90 0 0". Deve ser porque está relacionado com o plano apontanto para algum lugar... =(


[]'s
Tiago.
Em resposta à Tiago Motta Jorge

Re: Duvidas sobre EP2

por Carlos Hitoshi Morimoto -
oi,
considere um frame F ortonormal, mao direita.
A oceano esta definido no plano xy. O "aponta" quer dizer o sentido da normal, ou seja, a normal do plano xy aponta para cima.
Mas no opengl, o eixo optico esta na direcao -z (z negativo), ou seja, se a aeronave estiver definida em um frame G, inicialmente colocada em F (G igual a F), a aeronave estaria olhando para -z, ou seja, para baixo.
Rode a aeronave (frame G) de (90,0,0). Uma rotacao de 90 ao redor do eixo x, roda o plano yz de 90, e portanto o -z (de G) estaria olhando para y (de F).

espero ter esclarecido,
ht

Em resposta à Ivan Neto

Re: Duvidas sobre EP2

por Daniel Oliveira Dantas -
Outra duvida

Alguem sabe onde posso arranjar algum exemplo de uso do "idle event" de que o prof fala no item 4 do ep, dicas de implementacao?

Eu soh sei usar o animator que tirei do jgears.java

[]s

Daniel
Em resposta à Daniel Oliveira Dantas

Re: Duvidas sobre EP2

por Carlos Hitoshi Morimoto -
Oi,
isso so funciona usando Glut em C, onde você pode pedir um redisplay. O Jogl ate oferece algumas rotinas do Glut, mas apnas as de desenho. Em Jogl, nao conheco outro modo a nao ser usando a classe animator.
ht
ps: mas se descobrir, eu gostaria de saber piscando

Em resposta à Ivan Neto

Re: Duvidas sobre EP2

por Carlos Hitoshi Morimoto -
oi,
voce lembra quando eu falei de mapa de elevacao durante a aula?
Cada quatro pixels definem 2 triangulos (veja abaixo). Basta voce desenhar um triangulo de cada vez. Cada vertice do triangulo tem uma cor, que depende da altura. A cor do triangulo vai depender se voce esta usado smooth ou flat para renderizar. O -z eu ja respondi em outra ocasiao.
ht
grid

Em resposta à Ivan Neto

Re: Duvidas sobre EP2

por Rodrigo Lopes -
Outra dúvida,

No opengl, o modelo geométrico está separado da projeção. Mas em todo programa que eu vejo, o callback do display refaz TODA a cena. No nosso ep,o cenário é todo estático não havendo necessidade de redesenhar uma linha do modelo. Seria possível guardar o modelo geométrico na memória daí fazer a chamada para o gluLookAt ???
Em resposta à Rodrigo Lopes

Re: Duvidas sobre EP2

por Carlos Hitoshi Morimoto -
Como o gluLookAt é definido no começo, os objetos (projeção) são transformados de acordo.  Você pode até tentar salvar a imagem em outro lugar, mas isso não serve para animação. Depois tem todo o cálculo de sombreamento, depth buffer, etc.
Em resposta à Carlos Hitoshi Morimoto

Re: Duvidas sobre EP2

por Tiago Motta Jorge -
Professor,

   Estou tendo muitos problemas para implementar as rotações da nave. Já tentei através do gluLookAt e chamando "translate" e três "rotates" na mão. De ambos os jeitos acontecem coisas estranhas. O vôo não obedece muito bem.

   No meu avião estou utilizando um vetor para direção e outro para o "up".

   Qual é a melhor maneira de se fazer isso?

[]'s
Tiago.
Em resposta à Tiago Motta Jorge

Re: Duvidas sobre EP2

por Carlos Hitoshi Morimoto -
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