SoloCodigo

Programación Específica => Programación de Videojuegos => OpenGL => Mensaje iniciado por: Perla_kiko en Viernes 18 de Febrero de 2005, 14:15

Título: Mover Fichero Ase
Publicado por: Perla_kiko en Viernes 18 de Febrero de 2005, 14:15
Buenas , tengo dos fichero ase los cuales se me visualizan correctamente. el problema es que no queiro que se me coloque en las coordenadas que tiene dentro el fichero si no en una ubicacion que yo le especifique

Por ejemplo se podría crear un objeto a partir del ASE que sea uniforme y yo pueda decirle que lo mueva aqui o allà, es eso posible? no se si me he explicado muy bien. :rolleyes:

Un saludo
Título: Re: Mover Fichero Ase
Publicado por: Ruben3d en Sábado 19 de Febrero de 2005, 20:51
Hoal.

Es muy fácil desplazar un objeto a la hora de mostrarlo. Sólo tienes que utilizar:
Código: Text
  1. glTranslatef(x,y,z);
  2.  
antes de pasar la geometría con glBegin, donde x,y,z es la traslación en cada uno de los ejes.

Acuerdate de volver a la matriz original después.

Un saludo.

Ruben3d

PD: Más información aqui:
http://msdn.microsoft.com/library/default....func03_9a05.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc03_9a05.asp)
Título: Re: Mover Fichero Ase
Publicado por: Perla_kiko en Lunes 21 de Febrero de 2005, 12:03
Hola me ha funcionado bien, pero ahora no se pq cuando cargo el segundo ASE de la misma manera y indicandole un "glTranslatef" diferente no me dibuja el segundo, siemrpe es lo mismo solo dibuja el primero que le pido. Lo que hago es volver a las coordenadas del principio utilizando la misma instruccion con las coordenadas iniciales. Que hago mal?
Título: Re: Mover Fichero Ase
Publicado por: Ruben3d en Viernes 25 de Febrero de 2005, 19:49
Hola.

El problema surge de que la transformación se sigue aplicando. Con glTranslatef no estás dando coordenadas absolutas, sino desplazamiento relativo a la transformación anterior. Tienes que volver a la matriz anterior (que supongo que será la de identidad). La puedes guardar antes con glPushMatrix() y recuperarla después con glPopMatrix(). También puedes volver a generarla con glLoadIdentity().

Un saludo.

Ruben3d