int objLoader::load(const char * filename)
{
	int no_error = 1;
	no_error = parse_obj_scene(&data, filename);
	if(no_error)
	{
		populate(data);
	}
	return no_error;
}
int objLoader::loadFromString(std::string objText)
{
	int no_error = 1;
	no_error = parse_obj_scene(&data, objText);
	if(no_error)
	{
		populate(data);
	}
	return no_error;
}
int objLoader::
load(char *filename)
{
	int no_error = 1;
	no_error = parse_obj_scene(&data, filename);
	if(no_error) {
		this->vertexCount	= data.vertex_count;
		this->normalCount	= data.vertex_normal_count;
		this->textureCount	= data.vertex_texture_count;

		this->faceCount		= data.face_count;
		this->sphereCount	= data.sphere_count;
		this->planeCount	= data.plane_count;

		this->lightPointCount = data.light_point_count;
		this->lightDiscCount = data.light_disc_count;
		this->lightQuadCount = data.light_quad_count;

		this->materialCount = data.material_count;

		this->vertexList = data.vertex_list;
		this->normalList = data.vertex_normal_list;
		this->textureList = data.vertex_texture_list;

		this->faceList = data.face_list;
		this->sphereList = data.sphere_list;
		this->planeList = data.plane_list;

		this->lightPointList = data.light_point_list;
		this->lightDiscList = data.light_disc_list;
		this->lightQuadList = data.light_quad_list;

		this->materialList = data.material_list;

		this->camera = data.camera;
	}

	return no_error;
}
Exemple #4
0
void Initialize()
{   
    int k, i;
    int success;
    int vert, indx;

    /* Load OBJ models */
    char* filename[15];
    filename[0] = "models/ring.obj";
    filename[1] = "models/bar_01.obj"; 
    filename[2] = "models/bar_02.obj";
    filename[3] = "models/bar_03.obj";
    filename[4] = "models/bar_04.obj";
    filename[5] = "models/cone.obj";
    filename[6] = "models_n/ball_01.obj";           
    filename[7] = "models_n/ball_02.obj";
    filename[8] = "models/cone_small.obj";
    filename[9] = "models/rectangle_small.obj";
    filename[10] = "models/rectangle_big.obj";
    filename[11] = "models_n/elliptic_ring.obj";
    filename[12] = "models/ellipse.obj";
    
    filename[13] = "models_n/stand.obj";
    filename[14] = "models_n/surrounding.obj";
    
    for(k=0; k<model_count; ++k){
      
      success = parse_obj_scene(&data[k], filename[k]);

      if(!success)
	  printf("Could not load file. Exiting.\n");
    }
  
    /*  Copy mesh data from structs into appropriate arrays */ 
    
    for(k=0; k<model_count; ++k){
      vert = data[k].vertex_count;
      indx = data[k].face_count;

      vertex_buffer_data[k] = (GLfloat*) calloc (vert*3, sizeof(GLfloat));
      index_buffer_data[k] = (GLushort*) calloc (indx*3, sizeof(GLushort));
  
    /* Vertices */
      for(i=0; i<vert; i++)
      {
	vertex_buffer_data[k][i*3] = (GLfloat)(*data[k].vertex_list[i]).e[0] ; 			
	vertex_buffer_data[k][i*3+1] = (GLfloat)(*data[k].vertex_list[i]).e[1];
	vertex_buffer_data[k][i*3+2] = (GLfloat)(*data[k].vertex_list[i]).e[2];
	}

    /* Indices */
      for(i=0; i<indx; i++){
	index_buffer_data[k][i*3] = (GLushort)(*data[k].face_list[i]).vertex_index[0];
	index_buffer_data[k][i*3+1] = (GLushort)(*data[k].face_list[i]).vertex_index[1];
	index_buffer_data[k][i*3+2] = (GLushort)(*data[k].face_list[i]).vertex_index[2];
      }
    }
 
    /* Set background (clear) color to blue */ 
    glClearColor(0.1, 0.2, 0.5, 0.0);

    /* Setup Vertex array object - INTEL FIX*/ 
    GLuint VAO;
    glGenVertexArrays(1, &VAO);
    glBindVertexArray(VAO);    
    
    /* Enable depth testing */
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LESS);    

    /* Setup vertex, color, and index buffer objects */
    SetupDataBuffers();

    /* Setup shaders and shader program */
    CreateShaderProgram();  

    /* Initialize matrices */
    SetIdentityMatrix(ProjectionMatrix);
    SetIdentityMatrix(ViewMatrix);	
  
    // set all Model matrices       
    for(k=0; k<model_count; ++k){
       SetIdentityMatrix(ModelMatrix[k]);
    }
    
    /* Initialize animation matrices */
    SetIdentityMatrix(RotationMatrixAnimX);
    SetIdentityMatrix(RotationMatrixAnimY);
    SetIdentityMatrix(RotationMatrixAnimZ);
    SetIdentityMatrix(RotationMatrixAnim);
    
    /* Set projection transform */
    SetPerspectiveMatrix(fovy, aspect, nearPlane, farPlane, ProjectionMatrix);

    /* Set initial viewing transform */
    SetTranslation(0.0, 0.0, camera_disp, ViewMatrix);  // camera_disp == z coordinate of camera
    	
}