30 #include <boost/logic/tribool.hpp>
31 #include <boost/tuple/tuple_comparison.hpp>
52 ObjLoader( std::shared_ptr<IStreamCinder> aStream,
bool includeUVs =
true );
68 void load(
TriMesh *destTriMesh, boost::tribool loadNormals = boost::logic::indeterminate, boost::tribool loadTexCoords = boost::logic::indeterminate,
bool optimizeVertices =
true );
73 void load(
size_t groupIndex,
TriMesh *destTriMesh, boost::tribool loadNormals = boost::logic::indeterminate, boost::tribool loadTexCoords = boost::logic::indeterminate,
bool optimizeVertices =
true );
119 const std::vector<Group>&
getGroups()
const {
return mGroups; }
122 typedef boost::tuple<int,int> VertexPair;
123 typedef boost::tuple<int,int,int> VertexTriple;
125 void parse(
bool includeUVs );
127 void parseFace( Group *group,
const Material *material,
const std::string &
s,
bool includeUVs );
128 void parseMaterial( std::shared_ptr<IStreamCinder> material );
129 void loadInternalNoOptimize(
const Group &group,
TriMesh *destTriMesh,
bool texCoords,
bool normals );
130 void loadInternalNormalsTextures(
const Group &group, std::map<boost::tuple<int,int,int>,
int> &uniqueVerts,
TriMesh *destTriMesh );
131 void loadInternalNormals(
const Group &group, std::map<boost::tuple<int,int>,
int> &uniqueVerts,
TriMesh *destTriMesh );
132 void loadInternalTextures(
const Group &group, std::map<boost::tuple<int,int>,
int> &uniqueVerts,
TriMesh *destTriMesh );
133 void loadInternal(
const Group &group, std::map<int,int> &uniqueVerts,
TriMesh *destTriMesh );
135 std::shared_ptr<IStreamCinder> mStream;
136 std::vector<Vec3f> mVertices, mNormals;
137 std::vector<Vec2f> mTexCoords;
138 std::vector<Group> mGroups;
139 std::map<std::string, Material> mMaterials;
std::vector< Face > mFaces
Definition: ObjLoader.h:107
int mBaseNormalOffset
Definition: ObjLoader.h:106
GLsizei const GLchar ** string
Definition: GLee.h:2427
Definition: ObjLoader.h:104
const std::vector< Group > & getGroups() const
Returns a vector<> of the Groups in the OBJ.
Definition: ObjLoader.h:119
std::string mName
Definition: ObjLoader.h:105
ObjLoader(std::shared_ptr< IStreamCinder > aStream, bool includeUVs=true)
Definition: ObjLoader.cpp:38
Definition: ObjLoader.h:96
float Kd[3]
Definition: ObjLoader.h:93
static void write(DataTargetRef dataTarget, const TriMesh &mesh, bool writeNormals=true, bool writeUVs=true)
Writes a new OBJ file to dataTarget.
Definition: ObjLoader.cpp:589
std::vector< int > mTexCoordIndices
Definition: ObjLoader.h:99
std::string mName
Definition: ObjLoader.h:91
Loads Alias|Wavefront .OBJ file format.
Definition: ObjLoader.h:47
bool mHasNormals
Definition: ObjLoader.h:109
Material()
Definition: ObjLoader.h:76
float Ka[3]
Definition: ObjLoader.h:92
std::vector< int > mVertexIndices
Definition: ObjLoader.h:98
~ObjLoader()
Definition: ObjLoader.cpp:57
Material(const Material &rhs)
Definition: ObjLoader.h:81
Definition: ObjLoader.h:75
void load(TriMesh *destTriMesh, boost::tribool loadNormals=boost::logic::indeterminate, boost::tribool loadTexCoords=boost::logic::indeterminate, bool optimizeVertices=true)
Definition: ObjLoader.cpp:260
const Material * mMaterial
Definition: ObjLoader.h:101
int mBaseTexCoordOffset
Definition: ObjLoader.h:106
int mBaseVertexOffset
Definition: ObjLoader.h:106
bool mHasTexCoords
Definition: ObjLoader.h:108
std::shared_ptr< class DataTarget > DataTargetRef
Definition: DataTarget.h:33
std::vector< int > mNormalIndices
Definition: ObjLoader.h:100
size_t getNumGroups() const
Returns the total number of groups.
Definition: ObjLoader.h:116
std::shared_ptr< class DataSource > DataSourceRef
Definition: DataSource.h:35
GLdouble s
Definition: GLee.h:1378
int mNumVertices
Definition: ObjLoader.h:97