This is an implementation of the method presented in the paper Layout Embedding via Combinatorial Optimization at Eurographics 2021.
This repository contains:
- The core
LayoutEmbeddinglibrary. - Example applications that replicate experiments and figures from the Eurographics 2021 paper.
- Command-line utilities.
The following instructions have been tested on Linux (Debian 10 and Linux Mint 19.3). Other platforms might require slightly different build steps.
Make sure to checkout all Git submodules:
Clone via git clone --recursive ...
or do git submodule update --init --recursive afterwards.
If not already present, install a C++17 compiler (GCC >= 8) and the following dependencies:
- CMake (
sudo apt install cmake) - OpenGL (
sudo apt install libgl1-mesa-dev mesa-utils) - GLFW build dependencies (
sudo apt install build-dep glfw3)
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j4
Source code for experiments and figures 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_layoutsshrec07_embed_layouts(data for Fig. 10, requiresshrec07_generate_layouts)shrec07_figure(Fig. 11, requiresshrec07_embed_layouts)shrec07_ablation(Fig. 12, requiresshrec07_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.
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.
This project is released under the MIT License.
