3D三角形网格模型补洞算法源代码,原为linux平台下编译,现已改为Windows环境下;由于使用了C++11新特性,需通过VS2013或更高版本编译。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 40448 2018-06-28 21:41 MeshFixer.vsMeshFixerv14.suo
文件 365818 2018-02-27 05:24 MeshFixerunnyhole.off
文件 2189824 2018-06-28 21:36 MeshFixerDebugMeshFixer.exe
文件 12838568 2018-06-28 21:36 MeshFixerDebugMeshFixer.ilk
文件 50393088 2018-06-28 21:36 MeshFixerDebugMeshFixer.pdb
文件 365818 2018-02-27 05:24 MeshFixerhole_fixer-masterunnyhole.off
文件 137 2018-02-27 05:24 MeshFixerhole_fixer-masterCMakeLists.txt
文件 338153 2018-02-27 05:24 MeshFixerhole_fixer-masterimgunnymontage.png
文件 221121 2018-02-27 05:24 MeshFixerhole_fixer-masterimgspheremontage.png
文件 304 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenArray
文件 775 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenCholesky
文件 1670 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenCholmodSupport
文件 607 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenCMakeLists.txt
文件 12826 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenCore
文件 122 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenDense
文件 37 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenEigen
文件 3295 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenEigen2Support
文件 1394 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenEigenvalues
文件 1605 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenGeometry
文件 580 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenHouseholder
文件 1594 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenIterativeLinearSolvers
文件 645 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenJacobi
文件 712 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenLeastSquares
文件 983 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenLU
文件 697 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenMetisSupport
文件 2189 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenOrderingMethods
文件 864 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenPardisoSupport
文件 1467 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenPaStiXSupport
文件 926 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenQR
文件 637 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenQtAlignedMalloc
............此处省略1697个文件信息
#pragma warning(disable:4996)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using Eigen::VectorXi;
using Eigen::MatrixXd;
using Eigen::MatrixXi;
using Eigen::VectorXd;
typedef Eigen::SparseMatrix SpMat;
typedef Eigen::Triplet Tri;
void printHelpExit() {
printf(“Invalid command line arguments specified!
“);
printf(“USAGE: hole_fixer [options]
“);
printf(“OPTIONS:
“);
printf(“ -in target mesh file in .off-format with a hole
“);
printf(“ -out output mesh file in .off-format
“);
printf(“ -outfaces How many faces to decimate the mesh to
“);
printf(“ -upsample How much upsampling to use when creating the patch
“);
exit(1);
}
const char* findToken(const char* param int argc char* argv[]) {
const char* token = nullptr;
for (int i = 0; i < argc; ++i) {
if (strcmp(argv[i] param) == 0) {
if (i + 1 < argc) {
token = argv[i + 1];
break;
}
}
}
if (token == nullptr) {
printf(“Could not find command-line parameter %s
“ param);
return nullptr;
}
return token;
}
const char* parseStringParam(const char* param int argc char* argv[]) {
const char* token = findToken(param argc argv);
return token;
}
bool parseIntParam(const char* param int argc char* argv[] unsigned int& out) {
const char* token = findToken(param argc argv);
if (token == nullptr)
return false;
int r = sscanf(token “%u“ &out);
if (r != 1 || r == EOF) {
return false;
}
else {
return true;
}
}
int main(/*int argc char *argv[]*/)
{
//
// command line parsing.
//
int argc = 2;
char* argv[] = { “hole_fixer“ “-in“ “bunnyhole.off“ “-out“ “out.off“ “-outfaces“ “8000“ “-upsample“ “2“ };
const char* inFile = “bunnyhole.off“;
/*const char* inFile = parseStringParam(“-in“ argc argv);*/
if (inFile == nullptr) printHelpExit();
const char* outFile = “example.off“;
//const char* outFile = parseStringParam(“-out“ argc argv);
if (outFile == nullptr) printHelpExit();
unsigned int outFacesN = 8000;
//if (!parseIntParam(“-outfaces“ argc argv outFacesN)) printHelpExit();
unsigned int upsampleN = 2;
//if (!parseIntParam(“-upsample“ argc argv upsampleN)) printHelpExit();
// original mesh vertices and indices. This is the original mesh which has a hole.
MatrixXd originalV;
MatrixXi originalF;
if (!igl::readOFF(inFile originalV originalF)) {
printHelpExit();
}
VectorXi originalLoop; // indices of the boundary of the hole.
igl::boundary_loop(originalF originalLoop);
if (originalLoop.size() == 0) {
printf(“Mesh has no hole!“);
printHelpExit();
}
// upsample the original mesh. this makes fusing the original mesh with the patch much easier.
igl::upsample(Eigen::MatrixXd(originalV) Eigen::MatrixXi(originalF) originalV
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 40448 2018-06-28 21:41 MeshFixer.vsMeshFixerv14.suo
文件 365818 2018-02-27 05:24 MeshFixerunnyhole.off
文件 2189824 2018-06-28 21:36 MeshFixerDebugMeshFixer.exe
文件 12838568 2018-06-28 21:36 MeshFixerDebugMeshFixer.ilk
文件 50393088 2018-06-28 21:36 MeshFixerDebugMeshFixer.pdb
文件 365818 2018-02-27 05:24 MeshFixerhole_fixer-masterunnyhole.off
文件 137 2018-02-27 05:24 MeshFixerhole_fixer-masterCMakeLists.txt
文件 338153 2018-02-27 05:24 MeshFixerhole_fixer-masterimgunnymontage.png
文件 221121 2018-02-27 05:24 MeshFixerhole_fixer-masterimgspheremontage.png
文件 304 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenArray
文件 775 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenCholesky
文件 1670 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenCholmodSupport
文件 607 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenCMakeLists.txt
文件 12826 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenCore
文件 122 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenDense
文件 37 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenEigen
文件 3295 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenEigen2Support
文件 1394 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenEigenvalues
文件 1605 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenGeometry
文件 580 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenHouseholder
文件 1594 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenIterativeLinearSolvers
文件 645 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenJacobi
文件 712 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenLeastSquares
文件 983 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenLU
文件 697 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenMetisSupport
文件 2189 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenOrderingMethods
文件 864 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenPardisoSupport
文件 1467 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenPaStiXSupport
文件 926 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenQR
文件 637 2018-02-27 05:24 MeshFixerhole_fixer-masterlibigleigenEigenQtAlignedMalloc
............此处省略1697个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)