Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Camara y Sistemas de Coordenadas

Iniciado por The-Force, 18 de Junio de 2007, 06:04:53 PM

« anterior - próximo »

The-Force

Estoy tratando de implementar una camara para mi escena y estoy teniendo mas problemas de los que me esperaba.

Cada objeto (la camara es uno de ellos) de mi escena tiene asociando una matriz 4x4 con su matriz de transformacion para pasar al sistema global.

Que orden deberia seguir para multiplicar las matrices? Segun creia yo:

glloadIdentity()
glMultMatrixf(Inversa de la matriz camara);
Para cada objeto
  glpushmatrix
  glMultMatrixf(matriz objeto)
  dibujar objeto
  glpopmatrix


Pero no funciona :(

tamat

en teoría está bien, qué problema ves?
Por un stratos menos tenso

The-Force

Nada que me lie de mala manera y me ha costao ver la luz un par de horas xD

Mas que nada me lio con que el sistema de la camara no es el de la "Camara a Mundo" sino el de "Mundo a Camara". Las rotaciones que se hacen a la camara no se aplican sobre el sistema "Camara a Mundo" sino sobre su inversa "Mundo a Camara" y ahi es donde fallaba pues intentaba rotar la camara y lo que me hacia era rotar el sistema Mundo.

Suele ocurrir que de vez en cuando me pongo a dudar en cosas que se supone ya tenia superadas xDD

Ahora mismo en mi clase Camara tengo tanto la matriz "Camara" (Camara a Mundo) como "Mundo"(Mundo a Camara). Cada vez que muevo la camara (Transformando "Mundo") Calculo la inversa y la guardo en "Camara". No se si esto es muy correcto pero lo cierto es que necesito la matriz "Camara" para hacer unos cuantos calculos, como añadir velocidad segun la orientacion de esta y esas cosas.

tamat

No acabo de entenderte, yo lo que hago es guardar la model de la camara (la comunmente llamada view) y cada objeto tiene su model propia. Luego al a hora de render pues lo que tu haces, saco inversa de camara, la subo, y todos se multiplican contra esa. Tenerlo todo en mundo es lo más comodo.

Digo esto porque no creo que sea necesario tener siempre la inversa, con que la tengas cuando haces render sobra.
Por un stratos menos tenso

The-Force

Bueno lo he modificado para tenerlo como tu dices y parece que funciona. El problema era el orden en que multiplicaba las matrices a la hora de rotar la camara.

Solucionado ...demomento xD

Saludos






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.