Jump to content

  • Log In with Google      Sign In   
  • Create Account

render obj file with bad shapes


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
2 replies to this topic

#1 stankar   Members   -  Reputation: 117

Like
0Likes
Like

Posted 26 September 2012 - 07:32 AM

Hi, I'm trying to make easy obj loader (loading car and map - two cars so far) and code looks good, but if I run it, cars looks bad:
Posted Image

I don't know what's wrong. Can be some mistake in the code ? Please help, thanks

[source lang="cpp"]// MAIN.cpp - MAIN PROGRAM#include <math.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sstream>#include <iostream>#include "Lib\GL\headers\glut.h"#include "Lib\GL\glm\glm.h"using namespace std;// Variablesfloat x=-26, y=-26, z=-500, deg_z=0, deg_y=0;int displayList=0;static int w=800,h=600;GLfloat lightPos[4] = {50.0, 30.0 ,0.0, 0.0};GLfloat lightAmb[3] = {0.1, 0.1, 0.1};GLfloat lightDiff[3] = {1.0, 1.0, 1.0};GLMmodel* car = NULL;GLMmodel* car2 = NULL;void initmodel(void) { car = glmReadOBJ("Models/audi-tt.obj"); if (!car) exit(0); glmFacetNormals(car); glmVertexNormals(car, 90.0); car2 = glmReadOBJ("Models/audi-tt.obj"); if (!car2) exit(0); glmFacetNormals(car2); glmVertexNormals(car2, 90.0);}void setCamera() { if(h == 0) h = 1; float ratio = 1.0 * w / h; glMatrixMode(GL_PROJECTION); glLoadIdentity(); glViewport(0, 0, w, h); gluPerspective(30, ratio, 0.1, 10000); glMatrixMode(GL_MODELVIEW); glLoadIdentity();}void display(void) { setCamera(); glClearColor(0.3f, 0.5f, 0.9f, 0.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushAttrib(GL_ALL_ATTRIB_BITS); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_AMBIENT, lightPos); glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmb); glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDiff); //glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glPushMatrix(); // load first obj glPushMatrix(); glTranslatef(x,y,z); glRotatef(deg_z, 1.0, 0.0, 0.0); glRotatef(deg_y, 0.0, 1.0, 0.0); glmDraw(car, GLM_SMOOTH | GLM_MATERIAL); glPopMatrix(); // load second obj glPushMatrix(); glTranslatef(x+200,y,z); glRotatef(deg_z, 1.0, 0.0, 0.0); glRotatef(deg_y, 0.0, 1.0, 0.0); glmDraw(car2, GLM_SMOOTH | GLM_MATERIAL); glPopMatrix(); glPopMatrix(); glPopAttrib(); glFlush(); glutSwapBuffers();}void Keyboard(unsigned char key, int xx, int yy) { glutPostRedisplay(); switch(key) { case 'a' : x-=2; break; // Move left for X pos case 'd' : x+=2; break; // Move right for X pos case 's' : z+=2; break; // Move down for Z pos case 'w' : z-=2; break; // Move up for Z pos case '.' : y-=2; break; // Move up for Y pos case ',' : y+=2; break; // Move down for Y pos case 'k' : deg_z-=2.0; break; // Rotate up case 'i' : deg_z+=2.0; break; // Rotate down case 'j' : deg_y+=2.0; break; // Rotate left case 'l' : deg_y-=2.0; break; // Rotate right case 27 : exit(0); // Stop program }}void Resize(int w, int h) { if(h == 0) h = 1; float ratio = 1.0 * w / h; glMatrixMode(GL_PROJECTION); glLoadIdentity(); glViewport(0, 0, w, h); gluPerspective(30, ratio, 0.1, 1000); glMatrixMode(GL_MODELVIEW);}int main(int argc, char **argv) { initmodel(); glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize(800,600); glutCreateWindow(argv[0]); glutKeyboardFunc(Keyboard); glutDisplayFunc(display); glutMainLoop(); return 0;}[/source]

Sponsor:

#2 Scorpie   Members   -  Reputation: 217

Like
1Likes
Like

Posted 30 September 2012 - 04:33 PM

Your imagehosting does not allow hotlinking so its hard to view your picture, i had to get the url from the source, better use another one next time to make it easier for other users to view your image. Link: http://img4.pixhost.org/images/1667/14252342_fuuu.png

Anyways, enabling depth testing should solve your problem
glEnable( GL_DEPTH_TEST );

ps. you might also want to enable back face culling if your model is set up properly

#3 stankar   Members   -  Reputation: 117

Like
0Likes
Like

Posted 08 October 2012 - 02:36 PM

Thanks a lot, now it works like a charm :)




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS