Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - kronos

#1
Programación gráfica / librerias para carga de modelos 3ds
05 de Marzo de 2008, 12:29:45 AM
gracias jcjuegos, voy a checar el links, aunque preferiria tener una libreria para no meterle mano al codigo, pero gracias
#2
Programación gráfica / librerias para carga de modelos 3ds
04 de Marzo de 2008, 05:10:45 AM
Hola  a todos nuevamente...


Estoy tratando de hacer un simulador de robots multiplataforma con gtk, opengl y  newton game dynamic y necesito cargar modelos 3ds.

Mi duda es, si alguien sabe de alguna libreria multiplataforma para la carga de modelos 3ds?
#3
Programación gráfica / problemas con las librerias de openGL
13 de Febrero de 2008, 05:35:37 PM
Gracias Pogacha, al parecer me faltaba agregar la librería de Windows.h gracias por la respuesta.
#4
Programación gráfica / problemas con las librerias de openGL
13 de Febrero de 2008, 03:26:25 AM
Hola a todos nuevamente...

Estoy programando en visual Studio 2003, y tengo varios archivos y hasta el momento tengo 23 archivos de código, y en algunos estoy utilizando las librerías de openGL, el problema es que quiero utilizar las librerías de openGL en otro archivo y simplemente agrego la cabecera

#include <gl/gl.h>

Pero me marca más de 100 errores así que se detiene la compilación del programa, y me manda el error C2086 que es un error de redefinicion, el visual Studio me dice que he redefinido todas las funciones de openGL, así como sus parámetros etc...

error C2086: 'int APIENTRY' : redefinition   C:\Archivos de programa\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\GL\GL.h(1152) : see declaration of 'APIENTRY'

error C2086: 'int APIENTRY' : redefinition  C:\Archivos de programa\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\GL\GL.h(1152) : see declaration of 'APIENTRY'

etc.

Al parecer el problema es que he agregado demasiadas veces la librería "gl.h", en mi proyecto ya que si la agrego en cualquier otro archivo me manda el mismo error de redefinición, cuando en realidad no he colocado mas de una vez la cabecera "#include <gl/gl.h>" en un archivo.

La pregunta es como puedo hacer para seguir incluyendo la librería de openGL en los demás archivos?

Les agradecería cualquier  sugerencia
#5
Programación gráfica / Ayuda con Transformaciones en openGL
13 de Febrero de 2008, 03:07:01 AM
Finalmente encontré el problema, lo que sucedía es que cuando le aplicaba las transformaciones a los puntos y los dibujaba, le aplicaba nuevamente la matriz MODELVIEW.

Entonces para solucionar el problema simplemente tengo que cargar la identidad y dibujar los puntos.



glPushMatrix();
     glLoadIdentity();
     glBegin(GL_LINES);
          glVertex3f(v1[0],v1[1],v1[2]);
          glVertex3f(v2[0],v2[1],v2[2]);
     glEnd();
glPopMatrix()


Perdon por la molestia
#6
Programación gráfica / Ayuda con Transformaciones en openGL
02 de Febrero de 2008, 08:52:02 PM
Aquí molestando nuevamente con lo mismo

Para no errar utilice el codigo de "Martinez"

Para obtener la matriz y dibujar una linea amarilla de referencia tengo lo siguiente



GLdouble v1[]={0,0,0,1};
GLdouble v2[]={100,0,0,1};
GLdouble m[16];

glPushMatrix();
  glColor3f(1,1,0);
  glMultMatrixf(&caja.m[0][0]);
  glRotated(90,0,1,0);
  glGetDoublev(GL_TRANSPOSE_MODELVIEW_MATRIX,&m[0]);
  glBegin(GL_LINES);
      glVertex3dv(v1);
      glVertex3dv(v2);
  glEnd();
glPopMatrix();



Luego le aplicamos la matriz a los puntos y los dibujamos


MultMatrix(m,v1);
MultMatrix(m,v2);

glPushMatrix();
  glColor3f(1,1,1);
  glBegin(GL_LINES);
      glVertex3dv(v1);
      glVertex3dv(v2);
  glEnd();
glPopMatrix();



Donde MulMatrix es:



void MultMatrix(GLdouble *m, GLdouble *v){
   GLdouble r[4];
   for(int i=0; i<12; i+=4)
       r[i/4]= v[0]*m[i] + v[1]*m[i+1]+v[2]*m[i+2]+ v[3]*m[i+3];
   r[3]=1;
   memcpy(v,r,sizeof(r));
}



pero tengo lo siguinte

//http://kronos2008.blogspot.com/

Como pueden ver en los videos, si dibuja la línea pero no en el lugar donde debería (en el lugar de la línea amarilla), y lo extraño es que cambia la posición de la línea según el observador

alguna sugerencia
#7
Programación gráfica / Ayuda con Transformaciones en openGL
01 de Febrero de 2008, 08:23:47 PM
Gracias por la respuesta "Martines"

Solo que tengo el mismo problema, primero no puedo utilizar "GL_TRANSPOSE_MODELVIEW_MATRIX" ya que estoy utilizando visul studio 2003, pero me dice que no esta definido:

pero eso no importa ya que es la transpuesta asi que solo se mueve el indice y tengo lo siguiente:



void MultMatrix(float *m, float *v){
   float r[4];
for(int i=0; i<4; i+=1)
       r[i/4]=v[0]*m[i] + v[1]*m[i+4] + v[2]*m[i+8] + v[3]*m[i+12];

   r[3]=1;

   memcpy(v,r,sizeof(r));
}


pero aun no dibuja la linea correctamente la dibuja en otro lugar.
#8
Hola a todos.

Mi nombre es moisés y soy nuevo en esto de los gráficos, así que espero que mi pregunta no sea algo tonta.

Estoy tratando de aplicarle las transformaciones a una línea de la siguiente forma


glPushMatrix();
glMultMatrixf(&caja.m[0][0]);
glRotated(90,0,1,0);
glBegin(GL_LINES);
glVertex3f(0,0,0);
glVertex3f(100,0,0);
glEnd();
glPopMatrix();


Hasta aquí todo va bien, el problema es cuando yo quiero aplicarle directamente las transformaciones a los puntos para saber donde se encuentran y luego dibujar la línea.

Lo primero que hago es realizar las transformaciones obtener la matriz de transformaciones y aplicársela a cada punto individualmente:



float m[4][4];

glPushMatrix();
glMultMatrixf(&caja.m[0][0]);
glRotated(90,0,1,0);
glGetFloatv(GL_MODELVIEW_MATRIX,&m[0][0]);
glPopMatrix();

v1[0]=0;
v1[1]=0;
v1[2]=0;

v2[0]=100;
v2[1]=0;
v2[2]=0;

//Para el v1:

r[0]=v1[0]*m[0][0]+v1[1]*m[0][1]+v1[2]*m[0][2];
r[1]=v1[0]*m[1][0]+v1[1]*m[1][1]+v1[2]*m[1][2];
r[2]=v1[0]*m[2][0]+v1[1]*m[2][1]+v1[2]*m[2][2];

r[0]=r[0]+m[3][0];
r[1]=r[1]+m[3][1];
r[2]=r[2]+m[3][2];

v1[0]=r[0];
v1[1]=r[1];
v1[2]=r[2];

//Para el v2:

r[0]=v2[0]*m[0][0]+v2[1]*m[0][1]+v2[2]*m[0][2];
r[1]=v2[0]*m[1][0]+v2[1]*m[1][1]+v2[2]*m[1][2];
r[2]=v2[0]*m[2][0]+v2[1]*m[2][1]+v2[2]*m[2][2];

r[0]=r[0]+m[3][0];
r[1]=r[1]+m[3][1];
r[2]=r[2]+m[3][2];

v2[0]=r[0];
v2[1]=r[1];
v2[2]=r[2];

//Dibujamos la linea

glPushMatrix();
       glBegin(GL_LINES);
glVertex3f(v1[0],v1[1],v1[2]);
glVertex3f(v2[0],v2[1],v2[2]);
glEnd();
glPopMatrix();



Pero le resultado no es el mismo, la línea la dibuja en otro lado y realmente no se donde esta el problema, alguien me podría ayudar?





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.