Пример #1
0
 void _make_res_dir()
 {
     if (!Params::bayes_opt_bobase::stats_enabled())
         return;
     _res_dir = tools::hostname() + "_" + tools::date() + "_" + tools::getpid();
     boost::filesystem::path my_path(_res_dir);
     boost::filesystem::create_directory(my_path);
 }
Пример #2
0
int	my_exec(char *cmd, char **env)
{
  char	**path;

  if ((path = malloc(sizeof(**path))) == NULL)
    return (-1);
  path = my_path(path, env);
  my_exec_cmd(cmd, path, env);
  return (0);
}
Пример #3
0
void
ObjModelLoader::firstPass()
{
	string lastType = "";

	fs::path my_path(mPriFName);
	fs::ifstream objFile;
	objFile.open(my_path, ios::in);

	char line[200];
	vector<string> tokens;
	while (objFile.getline(line, 200)) {
		tokens = splitSpace(string(line));
		if (tokens[0] == ("o")) {
			//++grpCount;
			lastType = "o";
		}
		else if (tokens[0] == ("g")) {
//			removeSpecialCharsFromName(tokens[1]);
			string longname("");
			for (unsigned int i = 1; i < tokens.size(); ++i) {
				longname.append(tokens[i]);
				longname.append("_");
			}
			longname.erase(longname.end() - 1);
			mPriModelPtr->addGrpPtr(new MetaGroup(longname));
			lastType = "g";
		}
		else if (tokens[0] == ("mtllib")) {
			string longname("");
			for (unsigned int i = 1; i < tokens.size(); ++i) {
				longname.append(tokens[i]);
				longname.append(" ");
			}
			longname.erase(longname.end() - 1);
			parseMtl(fs::path(my_path.parent_path() / longname));
			lastType = "mtllib";
		}
		else if (tokens[0] == ("v")) {
			V3f* v = new V3f(atof(tokens[1].c_str()), atof(tokens[2].c_str()),
					atof(tokens[3].c_str()));
			mPriModelPtr->addVPtr(v);
			lastType = "v";
		}
		else if (tokens[0] == ("vt")) {
			V3f* t = new V3f(atof(tokens[1].c_str()), atof(tokens[2].c_str()),
					atof(tokens[3].c_str()));
			mPriModelPtr->addTPtr(t);
			lastType = "vt";
		}
		else if (tokens[0] == ("vn")) {
			V3b *n = new V3b((char) 127.0f * atof(tokens[1].c_str()),
					(char) 127.0f * atof(tokens[2].c_str()), (char) 127.0f * atof(tokens[3].c_str()));
			mPriModelPtr->addNPtr(n);
			lastType = "vn";
		}
		else if (tokens[0] == ("f")) {
			lastType = "f";
		}

	}
	objFile.close();

	// if we have not read any groups in, create a default group
	if (mPriModelPtr->getGrpCount() < 1) {
		mPriModelPtr->addGrpPtr(new MetaGroup());
	}
}
Пример #4
0
void
ObjModelLoader::secondPass()
{
	string lastType = "";
	int grpId = -1;
	mPriModelPtr->setCurrentGrp(mPriModelPtr->getGrpStart()->first);

	fs::path my_path(mPriFName);
	fs::ifstream objFile;
	objFile.open(my_path, ios::out);
	char line[200];
	vector<string> tokens;
	while (objFile.getline(line, 200)) {
		tokens = splitSpace(string(line));
		if (tokens[0] == ("g")) {
//			removeSpecialCharsFromName(tokens[1]);
			++grpId;
			lastType = "g";
			string longname("");
			for (unsigned int i = 1; i < tokens.size(); ++i) {
				longname.append(tokens[i]);
				longname.append("_");
			}
			longname.erase(longname.end() - 1);

			mPriModelPtr->setCurrentGrp(longname);
			//cout << _model.getCurrentGrpPtr()->name << endl;
		}
		else if (tokens[0] == ("v")) {
			lastType = "v";
		}
		// moved material assignment to 2nd pass because it references a group.
		// But only at end of 1st pass we know our groups
		else if (tokens[0] == ("usemtl")) {
			//			cout << "found material reference " << tokens[1] << " in obj-file" << endl;
			string longName("");
			for (unsigned int i = 1; i < tokens.size(); ++i) {
				longName.append(tokens[i]);
				longName.append(" ");
			}
			longName.erase(longName.end() - 1);
			if (mPriMatMap.find(longName) != mPriMatMap.end())
				mPriModelPtr->getCurrentGrpPtr()->setMat(*mPriMatMap[longName]);
			lastType = "usemtl";
		}
		else if (tokens[0] == ("f")) {
			//cout << "Number of Components per face: " << tokens.size()-1 << endl;
			Face* f = new Face();
			f->norm = false;
			f->vert = false;
			f->matIdx = 0;
			f->tex = 0;
			f->fNormal = 0;

			string::size_type loc = tokens[1].find("/", 0);
			if (loc != string::npos) {
				for (string::size_type i = 1; i < tokens.size(); ++i) {
					vector<int> comp = extractFaceComponents(tokens[i]);
					// vertices
					if ((comp[0] & 4)) {
						V3f* vtx = mPriModelPtr->getVPtr(comp[1] - 1);
						f->vertexPtrList.push_back(vtx);
						vtx->addFaceRef(f);
						f->vert = true;
						mPriModelPtr->getCurrentGrpPtr()->nVertices++;
						mPriModelPtr->incVCount();
						mPriModelPtr->getCurrentGrpPtr()->bb->expand(*vtx);
					}
					// textures
					if ((comp[0] & 2)) {
						f->texturePtrList.push_back(mPriModelPtr->getTPtr(
								comp[2] - 1));
						++f->tex;
						mPriModelPtr->getCurrentGrpPtr()->nTextureCoords++;
						mPriModelPtr->incTCount();
					}
					// normals
					if ((comp[0] & 1)) {
						f->normalPtrList.push_back(mPriModelPtr->getNPtr(
								comp[3] - 1));
						f->norm = true;
						mPriModelPtr->getCurrentGrpPtr()->nNormals++;
						mPriModelPtr->incNCount();
					}
					comp.clear();
				}
			}
			else {
				V3f* vtx = mPriModelPtr->getVPtr(atoi(tokens[1].c_str()) - 1);
				f->vertexPtrList.push_back(vtx);
				mPriModelPtr->getCurrentGrpPtr()->bb->expand(*vtx);
				vtx = mPriModelPtr->getVPtr(atoi(tokens[2].c_str()) - 1);
				f->vertexPtrList.push_back(vtx);
				mPriModelPtr->getCurrentGrpPtr()->bb->expand(*vtx);
				vtx = mPriModelPtr->getVPtr(atoi(tokens[3].c_str()) - 1);
				f->vertexPtrList.push_back(vtx);
				mPriModelPtr->getCurrentGrpPtr()->bb->expand(*vtx);
				f->vert = true;
				mPriModelPtr->getCurrentGrpPtr()->nVertices += 3;
				mPriModelPtr->incVCount(3);

			}
			mPriModelPtr->addFPtrToCurrent(f);
			lastType = "f";
		}
	}
	objFile.close();
}
Пример #5
0
int main()
{
	boost::filesystem::path my_path("c:\\");
	return 0;
}