Skip to content

Latest commit

 

History

History
53 lines (49 loc) · 1.27 KB

README.md

File metadata and controls

53 lines (49 loc) · 1.27 KB

Simple Obj Writer

Example:

#include "ObjWriter.hpp"

int main()
{
    std::fstream file;
	file.open("test.obj", std::ios::out);
	objwriter::ObjWriter w(file);
	// make a cube
	w.comment("my first obj");
	w.vertex(1.0 , -1.0, -1.0);
	w.vertex(1.0 , -1.0, 1.0 );
	w.vertex(-1.0, -1.0, 1.0 );
	w.vertex(-1.0, -1.0, -1.0);
	w.vertex(1.0 , 1.0 , -1.0);
	w.vertex(1.0 , 1.0 , 1.0 );
	w.vertex(-1.0, 1.0 , 1.0 );
	w.vertex(-1.0, 1.0 , -1.0);

	w.face(2, 3, 4);
	w.face(8, 7, 6);
	w.face(1, 5, 6);
	w.face(2, 6, 7);
	w.face(7, 8, 4);
	w.face(1, 4, 8);
	w.face(1, 2, 4);
	w.face(5, 8, 6);
	w.face(2, 1, 6);
	w.face(3, 2, 7);
	w.face(3, 7, 4);
	w.face(5, 1, 8);
	
	file.close();
	return 0;
}

Define custom output/input:

// template<class TVertex, class TIndex, class TString, class TStream>
// class ObjWriterT
// TVertex = vertex type (default = float)
// TIndex = vertex type (default = int)
// TString = vertex type (default = std::string)
// TStream = vertex type (default = std::fstream)
// this will print directly to cout
objwriter::ObjWriterT<float,int,std::string,decltype(std::cout)> coutPrinter(std::cout);

Limiations:

  • TVertex, TIndex and TString must support the "<< operator" of TSTREAM (stream << vertex << std::endl)
  • TStream must support "<< operator" with std::endl