#ifndef __IVMODELFN_H__ #define __IVMODELFN_H__ #include #include #include #include // #include "StdAfx.h" using namespace std; #include "ivmodel.h" #define MAX_OBJ 100 //Maximum objects in file #define MAX_VERTS 100 //Maximum vertices a face can have const string AMB = "ambientColor"; const string DIF = "diffuseColor"; const string SPE = "specularColor"; const string SHI = "shininess"; void ReadModel(Model &model, string filename) { //string filename="test.iv"; ifstream fin(filename.data()); if(!fin) { printf ("Unable to open Model file %s", filename); return; } char buffer[255]; string sbuffer; //First Pass = Counting while(true) { fin.getline(buffer, 255); sbuffer = buffer; if ((int)sbuffer.find("Coordinate3")!=-1) break; } // Vertices model.nverts=0; while(true) { fin.getline(buffer, 255); sbuffer = buffer; model.nverts++; if ((int)sbuffer.find("]")!=-1) break; } cout<<"Vertices: "<sbuffer.size()) break; if (sbuffer.find("-1",pos)==-1) break; pos=sbuffer.find("-1",pos)+1; od[count].nfaces++; } if ((int)sbuffer.find("]")!=-1) break; } //cout << count << " Faces Counted"<sbuffer.size()) break; if (sbuffer.find("-1",pos)==-1) break; pos=sbuffer.find("-1",pos)+1; od[count].nnorms++; } if ((int)sbuffer.find("]")!=-1) break; } //cout << count << " Normals Counted"<>sbuffer>>sbuffer; //cout<>model.vert[i][0]>>model.vert[i][1]>>model.vert[i][2]>>sbuffer; } cout<>sbuffer>>sbuffer; for (i=0; i>model.norm[i][0]>>model.norm[i][1]>>model.norm[i][2]>>sbuffer; } cout<>sbuffer; if (sbuffer.find (AMB.data())!=-1) { fin2>>model.obj[i].mat.ambient[0]>>model.obj[i].mat.ambient[1]>>model.obj[i].mat.ambient[2]; printf ("Color: %lf, %lf, %lf\n", model.obj[i].mat.ambient[0], model.obj[i].mat.ambient[1], model.obj[i].mat.ambient[2]); } else if (sbuffer.find (DIF.data())!=-1) { fin2>>model.obj[i].mat.diffuse[0]>>model.obj[i].mat.diffuse[1]>>model.obj[i].mat.diffuse[2]; } else if (sbuffer.find (SPE.data())!=-1) { fin2>>model.obj[i].mat.specular[0]>>model.obj[i].mat.specular[1]>>model.obj[i].mat.specular[2]; } else if (sbuffer.find (SHI.data())!=-1) { fin2>>model.obj[i].mat.shininess; } else { break; } } //cout<>sbuffer>>sbuffer; int currface[MAX_VERTS], ibuffer; for(j=0; j>ibuffer>>sbuffer; currface[k]=ibuffer; } // cout<>sbuffer>>sbuffer; for(j=0; j>ibuffer>>sbuffer; currface[k]=ibuffer; } // cout<