diff --git a/AssimpToMesh/AssimpToMesh.vcxproj b/AssimpToMesh/AssimpToMesh.vcxproj index 9a6409e..dd52f56 100644 --- a/AssimpToMesh/AssimpToMesh.vcxproj +++ b/AssimpToMesh/AssimpToMesh.vcxproj @@ -81,6 +81,10 @@ + + + + diff --git a/AssimpToMesh/AssimpToMesh.vcxproj.filters b/AssimpToMesh/AssimpToMesh.vcxproj.filters index 7271fed..5b5e15e 100644 --- a/AssimpToMesh/AssimpToMesh.vcxproj.filters +++ b/AssimpToMesh/AssimpToMesh.vcxproj.filters @@ -18,5 +18,13 @@ Source Files + + Source Files + + + + + Header Files + \ No newline at end of file diff --git a/AssimpToMesh/src/main.cpp b/AssimpToMesh/src/main.cpp index 01ad754..3b44270 100644 --- a/AssimpToMesh/src/main.cpp +++ b/AssimpToMesh/src/main.cpp @@ -1,7 +1,50 @@ #include +#include +#include + +#include +#include +#include + +#include "utils/utils.h" int main(int argc, char *argv[]) { - printf("Hello world!\n"); + printf("ASSIMP-to-MESH Converter.\n"); + + if (argc == 1) + { + printf("Usage: assimptomesh.exe [inputfile]\n\n"); + return 0; + } + + std::string file = argv[1]; + std::string outputFile = GetMeshFilenameFromInput(file); + + if (outputFile.length() == 0) + { + printf("Unable to determine output mesh filename from the input file name.\n\n"); + return 1; + } + + printf("Input file: %s\n", file.c_str()); + printf("Output file: %s\n", outputFile.c_str()); + + Assimp::Importer importer; + const aiScene *scene = importer.ReadFile(file, + aiProcess_JoinIdenticalVertices | + aiProcess_Triangulate | + aiProcess_RemoveRedundantMaterials | + aiProcess_SortByPType | + aiProcess_OptimizeMeshes | + aiProcess_OptimizeGraph + ); + + if (!scene) + { + printf("Failed to load input file: %s\n\n", importer.GetErrorString()); + return 1; + } + return 0; } diff --git a/AssimpToMesh/src/utils/fileutils.cpp b/AssimpToMesh/src/utils/fileutils.cpp new file mode 100644 index 0000000..f397ab4 --- /dev/null +++ b/AssimpToMesh/src/utils/fileutils.cpp @@ -0,0 +1,18 @@ +#include "utils.h" + +#include + +std::string GetMeshFilenameFromInput(const std::string &filename) +{ + std::string meshFilename = ""; + + // strip off the existing extension, and replace it with ".mesh" + size_t extStart = filename.find_last_of('.'); + if (extStart != std::string::npos) + { + meshFilename = filename.substr(0, extStart); + meshFilename += ".mesh"; + } + + return meshFilename; +} diff --git a/AssimpToMesh/src/utils/utils.h b/AssimpToMesh/src/utils/utils.h new file mode 100644 index 0000000..3b3bc06 --- /dev/null +++ b/AssimpToMesh/src/utils/utils.h @@ -0,0 +1,8 @@ +#ifndef __UTILS_UTILS_H_INCLUDED__ +#define __UTILS_UTILS_H_INCLUDED__ + +#include + +std::string GetMeshFilenameFromInput(const std::string &filename); + +#endif