Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time
data @ 0c74dad


This is an implementation of the method presented in the paper Layout Embedding via Combinatorial Optimization at Eurographics 2021.


This repository contains:

  • The core LayoutEmbedding library.
  • Example applications that replicate experiments and figures from the Eurographics 2021 paper.
  • Command-line utilities.

Build Instructions

The following instructions have been tested on Linux (Debian 10, Linux Mint 19.3 and Ubuntu LTS 20.04). Other platforms might require different build steps.

Make sure to checkout all Git submodules: Clone via git clone --recursive ... or do git submodule update --init --recursive afterwards.

Please install the required dependencies (using the following commands on Debian-based systems):

  • C++17 compiler (GCC >= 8) (sudo apt install build-essential)
  • CMake (sudo apt install cmake)
  • OpenGL (sudo apt install libgl1-mesa-dev mesa-utils)
  • GLFW build dependencies (sudo apt install libglfw3 libglfw3-dev)
  • libxi dependencies (sudo apt install libxinerama-dev libxcursor-dev libxi-dev)

Then, navigate to the cloned repository and build:

mkdir build
cd build
cmake ..
make -j4

Figures and Experiments

Source code for figures and experiments in the paper is found in the apps/eg2021 folder. Run the following executables to replicate the results:

  • pig_figure (Fig. 1)
  • homotopy_cube_figure (Fig. 2)
  • quad_animals_figure (Fig. 3)
  • optimization_timeline_figure (Fig. 7)
  • jitter_evaluation_figure (Fig. 13)
  • quad_hands_figure (Fig. 14)
  • inter_surface_map_figure (Fig. 15)
  • disk_face_figure (Fig. 16)
  • disk_hand_figure (Fig. 16)

Output files and images will be written to the build/output directory. The above executables accept an optional --viewer argument to open an interactive viewer widget. Executables that produce multiple images will open several viewer widgets successively. Use the following controls:

  • Center camera via double click.
  • Rotate camera via left mouse drag.
  • Close by pressing Esc.

To replicate the SHREC07 evaluation (Figs. 10, 11, and 12), run the following executables in the correct order. Note that shrec07_embed_layouts takes ~24h to run.

  • shrec07_generate_layouts
  • shrec07_embed_layouts (data for Fig. 10, requires shrec07_generate_layouts)
  • shrec07_figure (Fig. 11, requires shrec07_embed_layouts)
  • shrec07_ablation (Fig. 12, requires shrec07_generate_layouts)

Run shrec07_view to inspect the results of shrec07_embed_layouts. Use the Left and Right arrow keys to navigate through the results. You can pass the SHREC07 mesh ID as a command line argument to start at a specific model.

Command Line Interface

The embed command provides a command-line interface to our algorithm. Use view_embedding to inspect previously computed embeddings.

Both commands provide a --help argument for further details.

Authors and Contributors


This project is released under the MIT License.


Implementation of the paper "Layout Embedding via Combinatorial Optimization"