3Dモデルファイルの入出力†ポリゴンで構成された3Dモデルファイルの入出力を行うライブラリ.現在の対応は以下.
ダウンロード†ソースコードは以下. 使用例†#include "rx_model.h" /*! * OBJファイル読み込み * @param[in] filename objファイルのパス * @param[inout] poly 3Dオブジェクト * @param[in] cen,ext 入力した3D形状の正規化パラメータ */ void ReadOBJ(const string filename, rxPolygons &polys, Vec3 cen, Vec3 ext) { if(!polys.vertices.empty()){ polys.vertices.clear(); polys.normals.clear(); polys.faces.clear(); polys.materials.clear(); polys.open = 0; } rxOBJ obj; if(obj.Read(filename, polys.vertices, polys.normals, polys.faces, polys.materials, true)){ cout << filename << " have been read." << endl; if(polys.normals.empty()){ CalVertexNormals(polys); } cout << " the number of vertex : " << polys.vertices.size() << endl; cout << " the number of normal : " << polys.normals.size() << endl; cout << " the number of polygon : " << polys.faces.size() << endl; cout << " the number of material : " << polys.materials.size() << endl; FitVertices(cen, ext, polys.vertices); // テクスチャ読み込み if(!polys.materials.empty()){ rxMTL::iterator iter = polys.materials.begin(); for(; iter != polys.materials.end(); ++iter){ if(iter->second.tex_file.empty()) continue; cout << iter->first << " : " << iter->second.tex_file; LoadGLTexture(iter->second.tex_file, iter->second.tex_name, true, false); cout << " : " << iter->second.tex_name << endl; } } polys.open = 1; } } /*! * OBJファイル書き込み * @param[in] filename objファイルのパス * @param[inout] poly 3Dオブジェクト */ void SaveOBJ(const string filename, rxPolygons &polys) { rxOBJ obj; if(obj.Save(filename, polys.vertices, polys.normals, polys.faces, polys.materials)){ cout << filename << " have been saved." << endl; } } |