Ryan Capouellez1, Denis Zorin1
1New York University
An implementation of Seamless Parametrization in Penner Coordinates.
This method generates an approximately isometric seamless parameterization of an input obj
mesh with parametric cone angle and holonomy signature constraints. Retriangulation is often necessary to satisfy these constraints, so the initial mesh is intrinsically refined to produce an output mesh with a compatible parameterization.
To install this project on a Unix-based system, use the following standard CMake build procedure:
git clone --recurse-submodules https://github.com/rjc8237/seamless-parametrization-penner.git
cd seamless-parametrization-penner
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 4
The core parameterization method is bin/parametrize_seamless
. This executable takes the following arguments:
flag | description | default |
---|---|---|
--mesh |
Mesh filepath | none |
--cones |
Target cone filepath | none |
--field |
Cross field rotation form filepath | none |
--output |
Output directory | ./ |
--remove_holonomy_constraints |
Only constrain cone angles (parametrization no longer seamless) | false |
--max_itr |
Maximum number of iterations | 500 |
--error_eps |
Maximum allowed angle error | 1e-12 |
--max_triangle_quality |
Regularize initial metric until quality measure below value (0 for no regularization) |
0 |
--use_delaunay |
Perform Newton in Delaunay connectivity | true |
--fit_field |
Fit new cross field instead of using cones and field from file | false |
The input mesh must be a manifold surface with a single connected component. The input cone and field files can be generated with bin/generate_frame_field
, or they can generated algorithmically at runtime with the --fit_field
flag. The output is a refined mesh with a parameterization and a file of metric coordinate values.
Scripts to generate the figures of the paper are included in figures
.
The models (with cone and field data) and cameras used in Seamless Parametrization in Penner Coordinates necessary for these scripts will be available soon; closed-myles
, thingi10k-tetwild
and cameras
must be copied to data/closed-Myles
, data/thingi10k-tetwild
, and data/cameras
respectively.
A Conda environment must be activated (before compiling the code) with
conda env create -f environment.yml
conda activate curvature-metric
The figure bash scripts can then be run independently or in batch with
bash fig-all.sh
Note that most bash scripts generate an output directory with a JSON file specifying parameters for the parameterization and rendering pipeline python script scripts/_pipeline.py
. Such JSON files can also be used for general batch parameterization and analysis.
Penner coordinates are global coordinates on the space of metrics on meshes with a fixed vertex set and topology, but varying connectivity, making it homeomorphic to the Euclidean space of dimension equal to the number of edges in the mesh, without any additional constraints imposed.
These coordinates underly the recent advances in parametrization with cone and holonomy angle constraints. To engender future work in this direction, we provide an independent library containing the data structures and methods for Penner coordinates at geometryprocessing/penner-optimization.
@article{capouellez:2023:seamless,
author = {Capouellez, Ryan and Zorin, Denis},
title = {Seamless Parametrization in Penner Coordinates},
year = {2024},
issue_date = {July 2024},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {43},
number = {4},
issn = {0730-0301},
url = {https://doi.org/10.1145/3658202},
doi = {10.1145/3658202},
journal = {ACM Trans. Graph.},
month = {jul},
articleno = {61},
numpages = {13},
keywords = {parametrization, seamless, discrete metrics, cone metrics, conformal, intrinsic triangulation, penner coordinates}
}