OpenABF 2.1.0
Loading...
Searching...
No Matches
FlattenTool.cpp

Flattening tool

Demo utility for flattening the geometry of an OBJ mesh.

#include <filesystem>
#include "OpenABF/OpenABF.hpp"
using T = float;
namespace fs = std::filesystem;
auto main(const int argc, char* argv[]) -> int
{
if (argc < 3) {
std::cerr << "Usage: " << fs::path(argv[0]).filename().c_str()
<< " [input.(obj|ply)] [output.(obj|ply)]";
std::cerr << "\n";
return EXIT_FAILURE;
}
const fs::path input_path = argv[1];
const fs::path output_path = argv[2];
std::cout << "Reading mesh...\n";
auto mesh = OpenABF::ReadMesh<ABF::Mesh>(input_path);
std::cout << "Mesh info:\n";
std::cout << " - Num. vertices: " << mesh->num_vertices() << "\n";
std::cout << " - Num. faces: " << mesh->num_faces() << "\n\n";
std::cout << "Computing ABF++...\n";
std::size_t iters{0};
T grad{OpenABF::INF<T>};
ABF::Compute(mesh, iters, grad);
std::cout << "ABF++ :: Iterations: " << iters << " :: Gradient: " << grad << "\n";
std::cout << "Computing LSCM...\n";
std::cout << "Writing mesh...\n";
OpenABF::WriteMesh(output_path, mesh);
std::cout << "Done.\n";
}
Compute parameterized interior angles using ABF++.
Definition OpenABF.hpp:2640
static void Compute(typename Mesh::Pointer &mesh, std::size_t &iters, T &gradient, const std::size_t maxIters=10, T gradThreshold=T(0.001))
Compute parameterized interior angles.
Definition OpenABF.hpp:2678
Compute parameterized mesh using Angle-based LSCM.
Definition OpenABF.hpp:2987
static void Compute(typename Mesh::Pointer &mesh)
Compute the parameterized mesh using automatic pin selection.
Definition OpenABF.hpp:3018
void WriteMesh(const std::filesystem::path &path, const MeshPtr &mesh)
Write a HalfEdgeMesh to a file.
Definition OpenABF.hpp:5000
constexpr T INF
Inf, templated for floating-point type.
Definition OpenABF.hpp:69