Jump to content

  • Log In with Google      Sign In   
  • Create Account

UdvPeter

Member Since 06 Oct 2012
Offline Last Active Oct 06 2012 02:01 PM

Topics I've Started

Problem with glm (loading Obj files and txtures)

06 October 2012 - 01:50 AM

Hello!

I am creating an opengl app that loads .obj files but I have some serious problems loading them.

When I'm loading obj files it loads vorrectly but after several redisplays it throws an exception "cannot load texture file" then it stops.

I think It's because I load the .Obj file again and again so I changed the code to load once but now it doesn't draws the texture.

Here's my code:

[source lang="cpp"]GLMmodel* LoadOBJ(int ID){ char* modelIDs[6] = {"ko.obj","bou.obj","bouKez.obj","bouLosz.obj","ellen.obj","ellenLosz.obj"}; char* path = modelIDs[ID]; GLMmodel* pmodel1 = NULL; // Load the model only if it hasn't been loaded before // If it's been loaded then pmodel1 should be a pointer to the model geometry data...otherwise it's null if (!pmodel1) { // this is the call that actualy reads the OBJ and creates the model object pmodel1 = glmReadOBJ((char*)path); if (!pmodel1) exit(0); // This will rescale the object to fit into the unity matrix // Depending on your project you might want to keep the original size and positions you had in 3DS Max or GMAX so you may have to comment this. glmUnitize(pmodel1); // These 2 functions calculate triangle and vertex normals from the geometry data. // To be honest I had some problem with very complex models that didn't look to good because of how vertex normals were calculated // So if you can export these directly from you modeling tool do it and comment these line // 3DS Max can calculate these for you and GLM is perfectly capable of loading them glmFacetNormals(pmodel1); glmVertexNormals(pmodel1, 90.0); } // This is the call that will actualy draw the model // Don't forget to tell it if you want textures or not [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]) return pmodel1;}class m3Dobject{ public: GLMmodel* model1; public: float scale; public: float xpos; public: float ypos; public: float zpos; public: float rotAngle; public: float xrot; public: float yrot; public: float zrot; bool everLoaded;public: m3Dobject(int ModelPath,float scaleh,float xposh,float yposh,float zposh,float rotAngleh,float xroth,float yroth,float zroth) { model1 = LoadOBJ(ModelPath); xpos = xposh; ypos = yposh; zpos = zposh; rotAngle = rotAngleh; xrot = xroth; yrot = yroth; zrot = zroth; scale = scaleh; }};void Render(m3Dobject objo) { glPushMatrix(); glScalef(objo.scale,objo.scale,objo.scale); glTranslatef(objo.xpos,objo.ypos,objo.zpos); glRotatef(objo.rotAngle*RAD,objo.xrot,objo.yrot,objo.zrot); glmDraw(objo.model1,GLM_SMOOTH|GLM_MATERIAL|GLM_TEXTURE); glPopMatrix(); }[/source]


Thanks for your help in advance Posted Image;

PARTNERS