added framework to figure out the input and output filenames and load the input file into an Assimp scene object
This commit is contained in:
parent
61f67a9f34
commit
9e8b06fa9d
|
@ -81,6 +81,10 @@
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="src\main.cpp" />
|
<ClCompile Include="src\main.cpp" />
|
||||||
|
<ClCompile Include="src\utils\fileutils.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="src\utils\utils.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
|
|
@ -18,5 +18,13 @@
|
||||||
<ClCompile Include="src\main.cpp">
|
<ClCompile Include="src\main.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\utils\fileutils.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="src\utils\utils.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -1,7 +1,50 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <string>
|
||||||
|
#include <exception>
|
||||||
|
|
||||||
|
#include <assimp.hpp>
|
||||||
|
#include <aiScene.h>
|
||||||
|
#include <aiPostProcess.h>
|
||||||
|
|
||||||
|
#include "utils/utils.h"
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
18
AssimpToMesh/src/utils/fileutils.cpp
Normal file
18
AssimpToMesh/src/utils/fileutils.cpp
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
8
AssimpToMesh/src/utils/utils.h
Normal file
8
AssimpToMesh/src/utils/utils.h
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
#ifndef __UTILS_UTILS_H_INCLUDED__
|
||||||
|
#define __UTILS_UTILS_H_INCLUDED__
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
std::string GetMeshFilenameFromInput(const std::string &filename);
|
||||||
|
|
||||||
|
#endif
|
Reference in a new issue