// // Copyright 2012-2013, Syoyo Fujita. // // Licensed under 2-clause BSD liecense. // // copied from Syoyo Fujita // https://github.com/syoyo/tinyobjloader #ifndef __CCOBJLOADER_H__ #define __CCOBJLOADER_H__ #include <string> #include <vector> #include <map> #include "base/ccTypes.h" NS_CC_BEGIN class ObjLoader { public: typedef struct { std::string name; float ambient[3]; float diffuse[3]; float specular[3]; float transmittance[3]; float emission[3]; float shininess; float ior; // index of refraction float dissolve; // 1 == opaque; 0 == fully transparent // illumination model (see http://www.fileformat.info/format/material/) int illum; std::string ambient_texname; std::string diffuse_texname; std::string specular_texname; std::string normal_texname; std::map<std::string, std::string> unknown_parameter; } material_t; typedef struct { std::vector<unsigned short> indices; } mesh_t; typedef struct { std::string name; material_t material; mesh_t mesh; } shape_t; typedef struct { std::vector<float> positions; std::vector<float> normals; std::vector<float> texcoords; std::vector<shape_t> shapes; void reset() { positions.clear(); normals.clear(); texcoords.clear(); shapes.clear(); } }shapes_t; /// Loads .obj from a file. /// 'shapes' will be filled with parsed shape data /// The function returns error string. /// Returns empty string when loading .obj success. /// 'mtl_basepath' is optional, and used for base path for .mtl file. static std::string LoadObj( shapes_t& shapes, // [output] const char* filename, const char* mtl_basepath = NULL); }; NS_CC_END #endif // _TINY_OBJ_LOADER_H