3D Repo Bouncer  1.4
repo_model_export_assimp.h
1 
22 #pragma once
23 
24 #include <string>
25 
26 #include <assimp/scene.h>
27 #include <assimp/Exporter.hpp>
28 
29 #include "../../../core/model/bson/repo_node_camera.h"
30 #include "../../../core/model/bson/repo_node_material.h"
31 #include "../../../core/model/bson/repo_node_mesh.h"
32 #include "../../../core/model/collection/repo_scene.h"
33 #include "repo_model_export_abstract.h"
34 
35 namespace repo{
36  namespace manipulator{
37  namespace modelconvertor{//x3d shader
39  {
40  public:
45  const repo::core::model::RepoScene *scene);
46 
50  virtual ~AssimpModelExport();
51 
58  bool exportToFile(
59  const std::string &filePath);
60 
64  static std::string getSupportedFormats();
65 
66  private:
67 
85  aiNode* constructAiSceneRecursively(
86  const repo::core::model::RepoScene *scene,
87  const repo::core::model::RepoNode *currNode,
88  std::vector<aiMesh*> &meshVec,
89  std::vector<aiMaterial*> &matVec,
90  std::vector<aiCamera*> &camVec,
91  repo::core::model::RepoNodeSet &textNodes,
93  = repo::core::model::RepoScene::GraphType::DEFAULT);
94 
114  aiNode* constructAiSceneRecursively(
115  const repo::core::model::RepoScene *scene,
116  const repo::core::model::RepoNode *currNode,
117  std::vector<aiMesh*> &meshVec,
118  std::vector<aiMaterial*> &matVec,
119  std::vector<aiCamera*> &camVec,
120  std::unordered_map<repoUUID, aiMesh*, RepoUUIDHasher> &meshMap,
121  std::unordered_map<repoUUID, aiMaterial*, RepoUUIDHasher> &materialMap,
122  std::unordered_map<repoUUID, aiCamera*, RepoUUIDHasher> &camMap,
123  repo::core::model::RepoNodeSet &textNodes,
125  = repo::core::model::RepoScene::GraphType::DEFAULT);
126 
135  aiCamera* convertCamera(
136  const repo::core::model::RepoScene *scene,
137  const repo::core::model::CameraNode *camNode,
138  const std::string &name = std::string());
139 
147  aiMaterial* convertMaterial(
148  const repo::core::model::RepoScene *scene,
149  const repo::core::model::MaterialNode *matNode,
150  repo::core::model::RepoNodeSet &textNodes,
152  = repo::core::model::RepoScene::GraphType::DEFAULT);
153 
165  aiMesh* convertMesh(
166  const repo::core::model::RepoScene *scene,
167  const repo::core::model::MeshNode *meshNode,
168  std::vector<aiMaterial*> &matVec,
169  std::unordered_map<repoUUID, aiMaterial*, RepoUUIDHasher> &matMap,
170  repo::core::model::RepoNodeSet &textNodes,
172  = repo::core::model::RepoScene::GraphType::DEFAULT);
173 
181  aiScene* convertToAssimp(
182  const repo::core::model::RepoScene *scene,
183  repo::core::model::RepoNodeSet &textNodes,
185  = repo::core::model::RepoScene::GraphType::DEFAULT);
186 
192  std::string getExportFormatID(
193  const std::string &fileExtension);
194 
202  bool writeTexturesToFiles(
203  const repo::core::model::RepoNodeSet &nodes,
204  const std::string &filePath);
205 
212  bool writeSceneToFile(
213  const aiScene *scene,
214  const std::string &filePath);
215  };
216  } //namespace modelconvertor
217  } //namespace manipulator
218 } //namespace repo
bool exportToFile(const std::string &filePath)
Definition: repo_model_export_assimp.cpp:633
Definition: repo_connection_pool_mongo.h:32
Definition: repo_node_camera.h:41
Definition: repo_node_material.h:43
Definition: repo_scene.h:44
static std::string getSupportedFormats()
Definition: repo_model_export_assimp.cpp:675
virtual ~AssimpModelExport()
Definition: repo_model_export_assimp.cpp:38
Definition: repo_model_export_abstract.h:31
AssimpModelExport(const repo::core::model::RepoScene *scene)
Definition: repo_model_export_assimp.cpp:33
Definition: repo_node_mesh.h:62
Definition: repo_node.h:33
Definition: repo_model_export_assimp.h:38
GraphType
Definition: repo_scene.h:75