Skip to content

Commit

Permalink
[mesh] minor code style
Browse files Browse the repository at this point in the history
  • Loading branch information
fabiencastan committed Sep 3, 2021
1 parent b69839d commit 8232794
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 52 deletions.
60 changes: 28 additions & 32 deletions src/aliceVision/mesh/Mesh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,11 @@ std::istream& operator>>(std::istream& in, EFileType& meshFileType)
return in;
}

void Mesh::save(const std::string& filename, EFileType filetype)
void Mesh::save(const std::string& filepath, EFileType fileType)
{
const std::string filetypeStr = EFileType_enumToString(filetype);
const std::string fileTypeStr = EFileType_enumToString(fileType);

ALICEVISION_LOG_INFO("Save " << filetypeStr << " mesh file");
ALICEVISION_LOG_INFO("Save " << fileTypeStr << " mesh file");

aiScene scene;

Expand Down Expand Up @@ -133,40 +133,36 @@ void Mesh::save(const std::string& filename, EFileType filetype)
}
}

std::string formatId;
std::string formatId = fileTypeStr;
unsigned int pPreprocessing = 0u;
// If gltf, use gltf 2.0
if (filetypeStr == "gltf")
if (fileType == EFileType::GLTF)
{
formatId = "gltf2";
// gen normals in order to have correct shading in Qt 3D Scene
// but cause problems with assimp importer
pPreprocessing |= aiProcess_GenNormals;
}
// If obj, do not use material
else if (filetypeStr == "obj")
else if (fileType == EFileType::OBJ)
{
formatId = "objnomtl";
}
else
{
formatId = filetypeStr;
}

Assimp::Exporter exporter;
exporter.Export(&scene, formatId, filename, pPreprocessing);
exporter.Export(&scene, formatId, filepath, pPreprocessing);

ALICEVISION_LOG_INFO("Save mesh to " << filetypeStr << " done.");
ALICEVISION_LOG_INFO("Save mesh to " << fileTypeStr << " done.");

ALICEVISION_LOG_DEBUG("Vertices: " << pts.size());
ALICEVISION_LOG_DEBUG("Triangles: " << tris.size());
ALICEVISION_LOG_DEBUG("UVs: " << uvCoords.size());
ALICEVISION_LOG_DEBUG("Normals: " << normals.size());
}

bool Mesh::loadFromBin(const std::string& binFileName)
bool Mesh::loadFromBin(const std::string& binFilepath)
{
FILE* f = fopen(binFileName.c_str(), "rb");
FILE* f = fopen(binFilepath.c_str(), "rb");

if(f == nullptr)
return false;
Expand All @@ -187,12 +183,12 @@ bool Mesh::loadFromBin(const std::string& binFileName)
return true;
}

void Mesh::saveToBin(const std::string& binFileName)
void Mesh::saveToBin(const std::string& binFilepath)
{
long t = std::clock();
ALICEVISION_LOG_DEBUG("Save mesh to bin.");
// printf("open\n");
FILE* f = fopen(binFileName.c_str(), "wb");
FILE* f = fopen(binFilepath.c_str(), "wb");

int npts = pts.size();
// printf("write npts %i\n",npts);
Expand Down Expand Up @@ -958,26 +954,26 @@ void Mesh::getDepthMap(StaticVector<float>& depthMap, StaticVector<StaticVector<
} // for pix.x
}

void Mesh::getVisibleTrianglesIndexes(StaticVector<int>& out_visTri, const std::string& depthMapFileName, const std::string& trisMapFileName,
void Mesh::getVisibleTrianglesIndexes(StaticVector<int>& out_visTri, const std::string& depthMapFilepath, const std::string& trisMapFilepath,
const mvsUtils::MultiViewParams& mp, int rc, int w, int h)
{
StaticVector<float> depthMap;
loadArrayFromFile<float>(depthMap, depthMapFileName);
loadArrayFromFile<float>(depthMap, depthMapFilepath);
StaticVector<StaticVector<int>> trisMap;
loadArrayOfArraysFromFile<int>(trisMap, trisMapFileName);
loadArrayOfArraysFromFile<int>(trisMap, trisMapFilepath);

getVisibleTrianglesIndexes(out_visTri, trisMap, depthMap, mp, rc, w, h);
}

void Mesh::getVisibleTrianglesIndexes(StaticVector<int>& out_visTri, const std::string& tmpDir, const mvsUtils::MultiViewParams& mp, int rc, int w, int h)
{
std::string depthMapFileName = tmpDir + "depthMap" + std::to_string(mp.getViewId(rc)) + ".bin";
std::string trisMapFileName = tmpDir + "trisMap" + std::to_string(mp.getViewId(rc)) + ".bin";
std::string depthMapFilepath = tmpDir + "depthMap" + std::to_string(mp.getViewId(rc)) + ".bin";
std::string trisMapFilepath = tmpDir + "trisMap" + std::to_string(mp.getViewId(rc)) + ".bin";

StaticVector<float> depthMap;
loadArrayFromFile<float>(depthMap, depthMapFileName);
loadArrayFromFile<float>(depthMap, depthMapFilepath);
StaticVector<StaticVector<int>> trisMap;
loadArrayOfArraysFromFile<int>(trisMap, trisMapFileName);
loadArrayOfArraysFromFile<int>(trisMap, trisMapFilepath);

getVisibleTrianglesIndexes(out_visTri, trisMap, depthMap, mp, rc, w, h);
}
Expand Down Expand Up @@ -1928,9 +1924,9 @@ void Mesh::computeTrisCams(StaticVector<StaticVector<int>>& trisCams, const mvsU
long t1 = mvsUtils::initEstimate();
for(int rc = 0; rc < mp.ncams; ++rc)
{
std::string visTrisFileName = tmpDir + "visTris" + std::to_string(mp.getViewId(rc)) + ".bin";
std::string visTrisFilepath = tmpDir + "visTris" + std::to_string(mp.getViewId(rc)) + ".bin";
StaticVector<int> visTris;
loadArrayFromFile<int>(visTris, visTrisFileName);
loadArrayFromFile<int>(visTris, visTrisFilepath);
if(!visTris.empty())
{
for(int i = 0; i < visTris.size(); ++i)
Expand All @@ -1956,9 +1952,9 @@ void Mesh::computeTrisCams(StaticVector<StaticVector<int>>& trisCams, const mvsU
t1 = mvsUtils::initEstimate();
for(int rc = 0; rc < mp.ncams; ++rc)
{
std::string visTrisFileName = tmpDir + "visTris" + std::to_string(mp.getViewId(rc)) + ".bin";
std::string visTrisFilepath = tmpDir + "visTris" + std::to_string(mp.getViewId(rc)) + ".bin";
StaticVector<int> visTris;
loadArrayFromFile<int>(visTris, visTrisFileName);
loadArrayFromFile<int>(visTris, visTrisFilepath);
if(!visTris.empty())
{
for(int i = 0; i < visTris.size(); ++i)
Expand Down Expand Up @@ -2352,7 +2348,7 @@ void Mesh::getLargestConnectedComponentTrisIds(StaticVector<int>& out) const
}
}

void Mesh::load(const std::string& fileName)
void Mesh::load(const std::string& filepath)
{
Assimp::Importer importer;

Expand All @@ -2367,9 +2363,9 @@ void Mesh::load(const std::string& fileName)
normals.clear();
pointsVisibilities.clear();

if(!boost::filesystem::exists(fileName))
if(!boost::filesystem::exists(filepath))
{
ALICEVISION_THROW_ERROR("Mesh::load: no such file: " << fileName);
ALICEVISION_THROW_ERROR("Mesh::load: no such file: " << filepath);
}

// see https://github.com/assimp/assimp/blob/master/include/assimp/postprocess.h#L85
Expand Down Expand Up @@ -2415,10 +2411,10 @@ void Mesh::load(const std::string& fileName)
// As we don't want this extra-behavior, we set the property AI_CONFIG_PP_FD_CHECKAREA to false.
importer.SetPropertyBool(AI_CONFIG_PP_FD_CHECKAREA, false);

const aiScene* scene = importer.ReadFile(fileName, pFlags);
const aiScene* scene = importer.ReadFile(filepath, pFlags);
if (!scene)
{
ALICEVISION_THROW_ERROR("Failed loading mesh from file: " << fileName);
ALICEVISION_THROW_ERROR("Failed loading mesh from file: " << filepath);
}

std::list<aiNode *> nodes;
Expand Down
10 changes: 5 additions & 5 deletions src/aliceVision/mesh/Mesh.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -164,11 +164,11 @@ class Mesh
Mesh();
~Mesh();

void save(const std::string& filename, EFileType filetype = EFileType::OBJ);
void save(const std::string& filepath, EFileType filetype = EFileType::OBJ);

bool loadFromBin(const std::string& binFileName);
void saveToBin(const std::string& binFileName);
void load(const std::string& filename);
bool loadFromBin(const std::string& binFilepath);
void saveToBin(const std::string& binFilepath);
void load(const std::string& filepath);

void addMesh(const Mesh& mesh);

Expand All @@ -193,7 +193,7 @@ class Mesh
void getPtsNeighPtsOrdered(StaticVector<StaticVector<int>>& out_ptsNeighTris) const;

void getVisibleTrianglesIndexes(StaticVector<int>& out_visTri, const std::string& tmpDir, const mvsUtils::MultiViewParams& mp, int rc, int w, int h);
void getVisibleTrianglesIndexes(StaticVector<int>& out_visTri, const std::string& depthMapFileName, const std::string& trisMapFileName,
void getVisibleTrianglesIndexes(StaticVector<int>& out_visTri, const std::string& depthMapFilepath, const std::string& trisMapFilepath,
const mvsUtils::MultiViewParams& mp, int rc, int w, int h);
void getVisibleTrianglesIndexes(StaticVector<int>& out_visTri, StaticVector<StaticVector<int>>& trisMap,
StaticVector<float>& depthMap, const mvsUtils::MultiViewParams& mp, int rc, int w,
Expand Down
24 changes: 10 additions & 14 deletions src/aliceVision/mesh/Texturing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -905,13 +905,13 @@ void Texturing::clear()
mesh = nullptr;
}

void Texturing::loadWithAtlas(const std::string& filename, bool flipNormals)
void Texturing::loadWithAtlas(const std::string& filepath, bool flipNormals)
{
// Clear internal data
clear();
mesh = new Mesh();
// Load .obj
mesh->load(filename);
mesh->load(filepath);

// Handle normals flipping
if(flipNormals)
Expand Down Expand Up @@ -1020,14 +1020,14 @@ void Texturing::unwrap(mvsUtils::MultiViewParams& mp, EUnwrapMethod method)
}

void Texturing::saveAs(const bfs::path& dir, const std::string& basename,
aliceVision::mesh::EFileType meshFileType,
EFileType meshFileType,
imageIO::EImageFileType textureFileType,
const BumpMappingParams& bumpMappingParams)
{
const std::string filetypeStr = EFileType_enumToString(meshFileType);
const std::string filename = (dir / (basename + "." + filetypeStr)).string();
const std::string meshFileTypeStr = EFileType_enumToString(meshFileType);
const std::string filepath = (dir / (basename + "." + meshFileTypeStr)).string();

ALICEVISION_LOG_INFO("Save " << filename << " mesh file");
ALICEVISION_LOG_INFO("Save " << filepath << " mesh file");

if (_atlases.empty())
{
Expand Down Expand Up @@ -1158,25 +1158,21 @@ void Texturing::saveAs(const bfs::path& dir, const std::string& basename,
}
}

std::string formatId;
std::string formatId = meshFileTypeStr;
unsigned int pPreprocessing = 0u;
// If gltf, use gltf 2.0
if(filetypeStr == "gltf")
if(meshFileType == EFileType::GLTF)
{
formatId = "gltf2";
// Flip UVs when exporting (issue with UV origin for gltf2)
// https://github.com/around-media/ue4-custom-prompto/commit/044dbad90fc2172f4c5a8b67c779b80ceace5e1e
pPreprocessing |= aiPostProcessSteps::aiProcess_FlipUVs | aiProcess_GenNormals;
}
else
{
formatId = filetypeStr;
}

Assimp::Exporter exporter;
exporter.Export(&scene, formatId, filename, pPreprocessing);
exporter.Export(&scene, formatId, filepath, pPreprocessing);

ALICEVISION_LOG_INFO("Save mesh to " << filetypeStr << " done.");
ALICEVISION_LOG_INFO("Save mesh to " << meshFileTypeStr << " done.");
}


Expand Down
2 changes: 1 addition & 1 deletion src/aliceVision/mesh/Texturing.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ struct Texturing
void clear();

/// Load a mesh from a .obj file and initialize internal structures
void loadWithAtlas(const std::string& filename, bool flipNormals=false);
void loadWithAtlas(const std::string& filepath, bool flipNormals=false);

/**
* @brief Remap visibilities
Expand Down

0 comments on commit 8232794

Please sign in to comment.