• Domingo 17 de Noviembre de 2024, 16:40

Autor Tema:  Rotaciones De Camara En Una Escena Simple  (Leído 2057 veces)

Karkayu

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Rotaciones De Camara En Una Escena Simple
« en: Domingo 24 de Abril de 2005, 11:48 »
0
Saludos a todos.

Estoy empezando a programar en OpenGl y me surgen unas dudillas.
Por ahora no son muy complicadas y seguro que con vuestro nivel me las
sabreis responder  :D .

Bueno, al grano.
He programado una escena donde, por ahora, solo tengo puntos y lineas
que dibujan una casita en 3D (si, lo se, es muy triste)  :( .

Al pulsar una tecla, cambio la proyeccion: de paralela a conica y
viceversa.
Para ello he usado glFrustum y glOrtho. Redibujo la escena con cada una
dependiendo del caso.
Luego, situo la camara con gluLookAt

Mi problema viene al intentar mover la camara alrededor de la casita.
Cada vez que pulse alguno de los cursores, la camara debe rotar segun
la direccion correspondiente.
He pensado que lo mas facil es transformar a coordenadas esfericas cada
vez que quiera moverla, variar el angulo correspondiente y recalcular
las nuevas coordenadas.

Pues no va.  :(
No se que hago mal (segurisimo que es una tonteria... :huh: ).

Os explico un poco como lo hago:
camx,camy,camz ==> posicion de la camara
objx,objy,objz ==> posicion del objeto
Estos son los argumentos que tiene el gluLookAt.

dist ==> es la distancia entre esos dos puntos, es decir el modulo de
ese vector.

Cada vez que pulso un cursor, pej Arriba, calculo los angulos
azim y elev usando las formulas:

azim = (M_PI/180) * atan(camx/camz);
elev = (M_PI/180) * asin(camy/dist);

Ahora incremento uno de los dos angulos, en este caso el elev,
elev += 15.0*(M_PI/180);

Recalculo las nuevas coordenadas camx,camy,camz usando las formulas (no

las pongo pq estas son largas....)
Y redibujo la escena con glutPostRedisplay();

De esta forma, como camx,camy,camz son argumentos de gluLookAt y estos
argumentos han variado, deberia funcionar, no?????

Sabeis que hago mal????
Gracias por leer este post tan largo y muchisimas gracias de antemano
para todos los que intenteis ayudarme.

A cuidarse.   B)

Ruben3d

  • Moderador
  • ******
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Rotaciones De Camara En Una Escena Simple
« Respuesta #1 en: Sábado 30 de Abril de 2005, 16:12 »
0
Hola.

En el mensaje no llegas a decir qué falla exactamente, qué es lo que sucede. ¿No se mueve la cámara como esperabas? ¿No se dibuja nada?

Así, sin saber en qué consiste el fallo, se me ocurre que podrías estar aplicandole alguna transformación a las coordenadas de la cámara cuando se las metes. Asegurate de que la MODELVIEW_MATRIX es la de identidad antes de pasar las coordenadas, usando glLoadIndentity().

Un saludo.

Ruben3d

Karkayu

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: Rotaciones De Camara En Una Escena Simple
« Respuesta #2 en: Jueves 5 de Mayo de 2005, 19:47 »
0
Hola!!! :lol:

Te agredezco mucho que respondieras.
El problema estaba en que machacaba los valores de las variables que almacenaban los angulos (tres pu*os dias para descubrir eso) :angry:

Una vez solucionado eso voy a pasar a meterme con los materiales y la iluminacion.
Seguro que teneis noticias mias  :kicking:
Por lo pronto he pensado que, para no equivocarme mucho, lo mejor es hacerme una rutina que me calcule las normales de todos los poligonos en escena(LINES, LINE_STRIP, QUADS...) y que me las pinte.
Una vez hecho esto me dedico a la iluminacion y todo eso.

Una vez mas, Gracias por responder. :smartass:

A cuidarse   B)