fix hole filling
This commit is contained in:
parent
9aac4d09e6
commit
908114858d
@ -308,12 +308,12 @@ MyMesh fillHoleImplicit(MyMesh &mesh, Hole_Filling &hf,
|
|||||||
for (HalfedgeHandle hh : hole) {
|
for (HalfedgeHandle hh : hole) {
|
||||||
verts.push_back(mesh.to_vertex_handle(hh));
|
verts.push_back(mesh.to_vertex_handle(hh));
|
||||||
}
|
}
|
||||||
|
auto bb = hf.estimate_BB(verts) ;
|
||||||
verts = hf.next_neighbors(verts);
|
verts = hf.next_neighbors(verts);
|
||||||
auto [system, pts_list] = hf.compute_approx_mat(verts);
|
auto [system, pts_list] = hf.compute_approx_mat(verts);
|
||||||
auto [alpha, beta] = hf.solve_approx(system, pts_list.size(), 10);
|
auto [alpha, beta] = hf.solve_approx(system, pts_list.size(), 10);
|
||||||
Implicit_RBF rbf(alpha, beta, pts_list);
|
Implicit_RBF rbf(alpha, beta, pts_list);
|
||||||
|
|
||||||
auto bb = hf.estimate_BB(verts) ;
|
|
||||||
Mesh filling = hf.poly_n_out(rbf, bb);
|
Mesh filling = hf.poly_n_out(rbf, bb);
|
||||||
MyMesh ret;
|
MyMesh ret;
|
||||||
for (const Vec3 &v : filling.vertices) {
|
for (const Vec3 &v : filling.vertices) {
|
||||||
@ -331,27 +331,11 @@ MyMesh fillHoleImplicit(MyMesh &mesh, Hole_Filling &hf,
|
|||||||
|
|
||||||
std::vector<MyMesh> fillHolesImplicit(MyMesh &mesh,
|
std::vector<MyMesh> fillHolesImplicit(MyMesh &mesh,
|
||||||
float scale, float discr) {
|
float scale, float discr) {
|
||||||
Hole_Filling hf(mesh, scale, discr);
|
|
||||||
mesh.holes = findHoles(mesh);
|
mesh.holes = findHoles(mesh);
|
||||||
std::vector<MyMesh> fillings;
|
std::vector<MyMesh> fillings;
|
||||||
for (auto hole : mesh.holes) {
|
for (auto hole : mesh.holes) {
|
||||||
|
Hole_Filling hf(mesh, scale, discr);
|
||||||
fillings.push_back(fillHoleImplicit(mesh, hf, hole));
|
fillings.push_back(fillHoleImplicit(mesh, hf, hole));
|
||||||
}
|
}
|
||||||
return fillings;
|
return fillings;
|
||||||
|
|
||||||
// auto sdf = [&](Vec3 const& v) { return v.Norm() - 10.; };
|
|
||||||
// Rect3 domain {{-10, -10, -10}, {20, 20, 20}};
|
|
||||||
// auto filling = MarchCube(sdf, domain);
|
|
||||||
// WriteObjFile(filling, "out.obj");
|
|
||||||
// MyMesh ret;
|
|
||||||
// for (const Vec3 &v : filling.vertices) {
|
|
||||||
// VertexHandle vh = ret.new_vertex({v.x, v.y, v.z});
|
|
||||||
// ret.set_color(vh, ret.default_color);
|
|
||||||
// }
|
|
||||||
// for (const Triangle &t : filling.triangles) {
|
|
||||||
// ret.add_face(ret.vertex_handle(t[0]),
|
|
||||||
// ret.vertex_handle(t[1]),
|
|
||||||
// ret.vertex_handle(t[2]));
|
|
||||||
// }
|
|
||||||
// return {ret};
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user