Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Discrete orthogonal geodesic net (DOG) editor

A simple DOG editor, implementing methods from the following papers:

"Discrete geodesic nets for modeling developable surfaces"
Michael Rabinovich, Tim Hoffmann and Olga Sorkine-Hornung

"The shape space of discrete orthogonal geodesic nets"
Michael Rabinovich, Tim Hoffmann and Olga Sorkine-Hornung

The editor currently does not support editing of curved folded surfaces, but I will update another version that does soon. Please contact me via email ( in case you have any questions or issues.

The content is as follows:

ext/ -- External dependencies (libigl, Pardiso solver)
src/ -- Source code

The implementation needs to solve a sparse linear system, and requires PARDISO.

Due to licensing restrictions, we unfortunately cannot include PARDISO in this archive. To use the PARDISO solver please save the .dylib/.so/.dll file of the latest release (6.0.0) in the directory 'ext/pardiso' and compile using CMake.

To load a planar mesh invoke the binary as follows (e.g. on OSX):
$ ./dog_edtior planar

To specify a different resolution (height width), load it by:
$ ./dog_edtior planar 40 30

After editing, one can save the mesh in the editor. The resulting mesh could later be loaded by calling:
$ ./dog_edtior MESH_PATH.obj

This simple editor supports vertex based editing, similar to the one demonstrated here:

The user can select vertex handles by first moving to selection mode (by rolling the corresponding 'Edit mode' button or simply pressing 's') and then marking vertices.

Alt text
After vertices have been selected, the user can translate them by moving to translate mode (by rolling the corresponding 'Edit mode' button or simply pressing 'd').

Alt text
The handles can be cleared/resetted by pressing 'c'. Optimization can be turned off/on by unticking/ticking the "is_optimizing" box or by pressing the space button. This can be useful if one wants to set new constraints after a short deformation, as otherwise the sheet will often quickly flatten.

The default editing scheme use a bending objective and an isometry objective with a high weight. The objective weights can be changed in the menu. Note that one can remove the isometry objective entirely, but in that case it is important to add some weight for the edge regularizing objective.

To visualize the Gauss Map or the surface rulings, simple change the ViewMode. Alt text


A simple editor for discrete orthogonal geodesic nets







No releases published


No packages published