OBJ文件读取
代码只是存储一下,不然每次翻电脑找代码很麻烦
void readObjFile(std::string filename, std::vector<std::array<float, 3> >&pts, std::vector<std::array<int, 3> >&facets) {
pts.clear();
facets.clear();
std::fstream pointCouldStream;
pointCouldStream.open(filename.c_str(), std::ifstream::in);
if (!pointCouldStream.is_open())
{
std::cout << "Error opening pointCould file\n"; exit(1);
}
while (!pointCouldStream.eof())
{
char tmpLine[400] = { 0 };
pointCouldStream.getline(tmpLine, 200);
std::istringstream istr;
istr.str(tmpLine);
std::string lineType;
istr >> lineType;
float XCoord, YCoord, ZCoord, garbageVal;
int p1, p2, p3;
if (lineType.compare("v") == 0) {
istr >> XCoord >> YCoord >> ZCoord;
pts.push_back(std::array<float, 3>{ {XCoord, YCoord, ZCoord}});
}
else if (lineType.compare("f") == 0) {//只考虑单存顶点的情况
istr >> p1 >> p2 >> p3;
facets.push_back(std::array<int, 3>{ {p1-1, p2-1, p3-1}});
}
}
pointCouldStream.close();
std::cout << "\nload data From obj file done!\n\n";
}