3 #ifdef ASSIMP_VERSION_3
4 #include <assimp/Exporter.hpp>
5 #include <assimp/scene.h>
6 #include <assimp/mesh.h>
8 #include <assimp/assimp.hpp>
9 #include <assimp/aiScene.h>
10 #include <assimp/aiMesh.h>
13 #include <console_bridge/console.h>
31 aScene.mMeshes =
new aiMesh*[1];
32 aScene.mMeshes[0] =
new aiMesh();
33 auto aMesh = aScene.mMeshes[0];
34 aScene.mNumMeshes = 1;
36 aScene.mMaterials =
new aiMaterial*[1];
37 aScene.mMaterials[0] =
new aiMaterial;
38 aScene.mNumMaterials = 1;
39 aMesh->mMaterialIndex = 0;
41 aScene.mRootNode =
new aiNode;
42 auto aNode = aScene.mRootNode;
43 aNode->mMeshes =
new uint[1];
44 aNode->mMeshes[0] = uint(0);
45 aNode->mNumMeshes = 1;
53 aMesh->mVertices =
new aiVector3D[ points.
size() ];
54 aMesh->mNumVertices = points.
size();
58 aMesh->mVertices[it - points.
begin()] = aiVector3D( v.
x, v.
y, v.
z );
62 aMesh->mFaces =
new aiFace[triangleIs.
size()];
63 aMesh->mNumFaces = triangleIs.
size();
66 aiFace& aFace = aMesh->mFaces[it - triangleIs.
begin()];
67 aFace.mIndices =
new uint[ 3 ];
68 aFace.mNumIndices = 3;
70 aFace.mIndices[0] = it->i1_;
71 aFace.mIndices[1] = it->i2_;
72 aFace.mIndices[2] = it->i3_;
76 std::transform(format.begin(), format.end(), format.begin(), ::tolower);
79 if (filename.
substr(filename.
size() - 3) ==
"3ds")
81 else if (filename.
substr(filename.
size() - 3) ==
"3mf")
83 else if (filename.
substr(filename.
size() - 3) ==
"dae")
85 else if (filename.
substr(filename.
size() - 3) ==
"ply")
87 else if (filename.
substr(filename.
size() - 3) ==
"obj")
89 else if (filename.
substr(filename.
size() - 3) ==
"stp")
91 else if (filename.
substr(filename.
size() - 3) ==
"stl")
93 else if (filename.
substr(filename.
size() - 1) ==
"x")
95 else if (filename.
substr(filename.
size() - 3) ==
"x3d")
99 Assimp::Exporter aExp;
100 aiReturn result = aExp.Export(&aScene, format, filename);
101 if (result != AI_SUCCESS)
106 CONSOLE_BRIDGE_logError(str.
c_str());