An implementation of uv-coordinate based optimization for the symmetric Dirichlet energy.
This method takes as input a cut mesh with a uv-parametrization and edge tags marking edges where seamless constraints should be imposed. The edge markings are a list of the form
#seamless-edges
vi0 vj0 vj1 vi1
...
Each line is the vertex pairing for edge vi0 and vj0 in face vj1 and vi1 in face <indput-dir>/<model>_init.obj and the edge correspondence stored in <input-dir>/EE/<model>_EE.txt.
Note that the current input data structure is not optimal or standard, and it requires a particular bookkeeping scheme that is cumbersome exposes too much implementation. It would be better to define separate face matrices for the 3D embedding and uv-coordinates and then infer seamless edges are those cut in the parametric domain but not in the embedding.
To install this project on a Unix-based system, use the following standard CMake build procedure:
git clone https://github.com/rjc8237/symmetric-dirichlet.git
cd symmetric-dirichlet
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j 4The core method is bin/symmetric_dirichlet. This executable takes the following arguments:
| flag | description |
|---|---|
--input |
directory containing meshes and edge markings |
--model |
mesh name |
--output |
(optional) output directory |
--json |
(optional) path to configuration json |
The viewer method bin/view_mesh takes the same input and model arguments and opens a Polyscope viewer. This viewer should be modified to add seamless edge viewing.