estoy trabajando iluminación y sólidos de rotación con malla poligonal en mi clase. pero el problema que tengo es que para poder ver toda la escena necesito poder mover mi cámara apropiadamente, rotando y trasladandola cuanto desee, siempre caminando hacia donde mire.
pero
-si roto y después traslado la cámara caminara en una dirección incorrecta.
-si translado y después roto, rotara sobre su centro.
-y si convino traslaciones para reparar la rotación la traslación se daña y viceversa.
por si acaso esta es mi cámara actual
-todas mis variables están inicializadas en 0 y son flotantes
-r es mi angulo de rotación
-y f es una variable que aumento y disminullo por teclado para controlar el caminado
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(65.0, 2 / 1, 1, 10);
float m[9];
m[0] = cos(r); m[3] = 0; m[6] = sin(r);
m[1] = 0; m[4] = 1; m[7] = 0;
m[2] = -sin(r); m[5] = 0; m[8] = cos(r);
float n[3];
n[0] = d + f*dd + 0.0001*dd;
n[1] = e;
n[2] = (ss + f*jj) + 0.0001*jj;
d = m[0] * n[0] + m[3] * n[1] + m[6] * n[2];
e = (A*cos(W*tiempo) + H);
j = m[2] * n[0] + m[5] * n[1] + m[8] * n[2];
float w[3];
w[0] = 0;
w[1] = e;
w[2] = 1;
dd = m[0] * w[0] + m[3] * w[1] + m[6] * w[2];
ee = (A*cos(W*tiempo) + H);
jj = m[2] * w[0] + m[5] * w[1] + m[8] * w[2];
gluLookAt(d+f*dd, e, ss+f*jj, d, e, j, 0, 1, 0);
por favor si me pudieran decir la forma correcta en que debo trasladar y girar mi cámara para poder siempre caminar hacia donde miro y rotar sobre mi eje se los agradeceria.
post-data: primera ves que uso este foro, no supe como utilizar bien lo de incluir codigo.Ademas me disculpo si cometo errores ortográficos.
pero
-si roto y después traslado la cámara caminara en una dirección incorrecta.
-si translado y después roto, rotara sobre su centro.
-y si convino traslaciones para reparar la rotación la traslación se daña y viceversa.
por si acaso esta es mi cámara actual
-todas mis variables están inicializadas en 0 y son flotantes
-r es mi angulo de rotación
-y f es una variable que aumento y disminullo por teclado para controlar el caminado
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(65.0, 2 / 1, 1, 10);
float m[9];
m[0] = cos(r); m[3] = 0; m[6] = sin(r);
m[1] = 0; m[4] = 1; m[7] = 0;
m[2] = -sin(r); m[5] = 0; m[8] = cos(r);
float n[3];
n[0] = d + f*dd + 0.0001*dd;
n[1] = e;
n[2] = (ss + f*jj) + 0.0001*jj;
d = m[0] * n[0] + m[3] * n[1] + m[6] * n[2];
e = (A*cos(W*tiempo) + H);
j = m[2] * n[0] + m[5] * n[1] + m[8] * n[2];
float w[3];
w[0] = 0;
w[1] = e;
w[2] = 1;
dd = m[0] * w[0] + m[3] * w[1] + m[6] * w[2];
ee = (A*cos(W*tiempo) + H);
jj = m[2] * w[0] + m[5] * w[1] + m[8] * w[2];
gluLookAt(d+f*dd, e, ss+f*jj, d, e, j, 0, 1, 0);
por favor si me pudieran decir la forma correcta en que debo trasladar y girar mi cámara para poder siempre caminar hacia donde miro y rotar sobre mi eje se los agradeceria.
post-data: primera ves que uso este foro, no supe como utilizar bien lo de incluir codigo.Ademas me disculpo si cometo errores ortográficos.