#ifndef OBJ_H
#define OBJ_H
#include
#include
class obj
{
public:
struct Vertex
{
float x, y, z;
};
struct Face
{
int f1, f2, f3, f4;
};
void input(char *);
friend std::ostream & operator<<(std::ostream & os,const obj & ob);
obj();
~obj();
typedef std::vector Ve;
typedef std::vector Fa;
private:
Ve ve;
Fa fa;
};
#endif // !OBJ_VIEW_CLASS_H
#include"obj.h"
#include
#include
#include
obj::obj()
{}
obj::~obj()
{}
void obj::input(char * FileName)
{
std::ifstream in(FileName);
if (!in) return;
std::string s;
while (in >> s)
{
switch (*s.c_str())
{
case 'v':
{
Vertex v;
in >> v.x >> v.y >> v.z;
ve.push_back(v);
}
case 'f':
{
Face f;
in >> f.f1 >> f.f2 >> f.f3 >> f.f4;
fa.push_back(f);
}
}
}
}
std::ostream & operator<<(std::ostream & os,const obj & ob)
{
for (unsigned int i = 0; i < ob.ve.size(); i++) os << ob.ve[i].x << ob.ve[i].y << ob.ve[i].z;
for (unsigned int i = 0; i < ob.fa.size(); i++) os << ob.fa[i].f1 << ob.fa[i].f2 << ob.fa[i].f3 << ob.fa[i].f4;
return os;
}
int main()
{
obj ob;
ob.input("basic model.obj");
std::cout << ob;
getchar();
return 0;
}
最后的输出是-1.07374e+08-1.07374e+08-1.07374e+08-858993460-858993460-858993460-858993460