Skip to content

Source code for Transaction on Graphics 2018 paper "Axis-Aligned Height-Field Block Decomposition of 3D Shapes"

License

Notifications You must be signed in to change notification settings

cg3hci/HeightFieldDecomposition

This branch is up to date with alemuntoni/HeightFieldDecomposition:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

bb10a92 · Jan 16, 2020
Jan 16, 2020
Jan 16, 2020
Jan 16, 2020
Jan 16, 2020
May 2, 2018
Jun 15, 2016
Aug 21, 2017
Nov 7, 2017
Jan 16, 2020
May 3, 2018
May 25, 2018
Mar 28, 2018
Jan 16, 2020
Jan 16, 2020
Jun 15, 2016
Oct 20, 2016
Oct 20, 2016
Jan 6, 2017
Aug 22, 2017
Jan 16, 2020

Repository files navigation

Axis-Aligned Height-Field Block Decomposition of 3D Shapes

Alessandro Muntoni, Marco Livesu, Riccardo Scateni, Alla Sheffer, Daniele Panozzo
ACM Transaction on Graphics (2018)

alt text

Abstract

We propose a novel algorithm for decomposing general 3D geometries into a small set of overlap-free height-field blocks, volumes enclosed by a flat base and a height-field surface defined with respect to this base. This decomposition is useful for fabrication methodologies such as 3-axis CNC milling, where a single milling pass can only carve a single height-field surface defined with respect to the machine tray, but can also benefit other fabrication settings. Computing our desired decomposition requires solving a highly constrained discrete optimization problem, variants of which are known to be NP-hard. We effectively compute a high-quality decomposition by using a two-step process that leverages the unique characteristics of our setup. Specifically, we notice that if the height-field directions are constrained to the major axes we can always produce a valid decomposition starting from a suitable surface segmentation. Our method first produces a compact set of large, possibly overlapping, height-field blocks that jointly cover the model surface by recasting this discrete constrained optimization problem as an unconstrained optimization of a continuous function, which allows for an efficient solution. We then cast the computation of an overlap-free, final decomposition as an ordering problem on a graph, and solve it via a combination of cycle elimination and topological sorting. The combined algorithm produces a compact set of height-field blocks that jointly describe the input model within a user given tolerance. We demonstrate our method on a range of inputs, and showcase a number of real life models manufactured using our technique.

[Paper] [Web Site] [Data]

Source Code

Source code is hosted on this GitHub repository. The program is built and tested on Ubuntu 18.04 system with GCC 7.3.

Downloading

git clone --recursive https://github.com/muntonialessandro/HeightFieldDecomposition.git

Build and Run (Ubuntu 18.04)

sudo apt-get install qt5-default
sudo apt-get install libboost-all-dev libcgal-dev libgmp-dev libqglviewer-dev-qt5 libeigen3-dev

clone libigl and create an environment variable named LIBIGL_HOME containing its directory (https://github.com/libigl/libigl/) install gurobi and create an environment variable named GUROBI_HOME containing its directory (https://www.gurobi.com/) clone cinolib and create an environment variable named CINOLIB_HOME containing its directory (https://github.com/maxicino/cinolib)

qmake HeightFieldDecomposition.pro
make

License

MPL2 licensed (FAQ)

About

Source code for Transaction on Graphics 2018 paper "Axis-Aligned Height-Field Block Decomposition of 3D Shapes"

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 99.5%
  • Other 0.5%