Skip to content

Unoptimized, guarantee-free C++ implementation of the algorithm described in the SIGGRAPH 2020 paper "Developability of Heightfields via Rank Minimization" by Silvia Sellán, Noam Aigerman and Alec Jacobson

License

Notifications You must be signed in to change notification settings

sgsellan/developability-of-heightfields-cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Developability of Heightfields via Rank Minimization

⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ DISCLAIMER PLEASE READ THIS ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️

This is a bad, unoptimized, restricted implementation of the core functionality of the SIGGRAPH 2020 "Developability of Heightfields via Rank Minimization" by Silvia Sellán, Noam Aigerman and Alec Jacobson. The proper code release for the paper, including scripts to recreate most paper figures, is here <- That hyperlink is most likely what you are looking for.

⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️ ⚠️

Still, if running our algorithm would help with your own research or you want to be able to compare to our algorithm and you don't have access to Matlab, I provide this C++ implementation without any guarantees at all. I wrote this after the paper's publication as an exercise in learning C++ and may occassionally add functionality. Please do not hesitate to contact sgsellan@cs.toronto.edu if you find any issues or bugs in this code, or you need any additional functionality.

Please also note that while this C++ implementation of our method is hereby released under MIT License, the method itself is pending a US patent filed in 2020 by Adobe Inc.

Compile

Compile this project using the standard cmake routine:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ../ 
make

This will create a main binary. A pre-compiled MacOS binary is also provided here.

Run

From within the main directory just issue:

./main

A viewer app should launch showing a 3D mesh of a mountain range, and instructions should appear on the console.

You can begin by hitting H in your keyboard to convert this 3D mesh into a heightfield from above, which will appear on screen.

Now, you can further hit S to get the closest developable heightfield (this can take around a minute).

You are not limited to our sample. In general, you can run our code as

./main -i input_shape.obj -n grid_size -o omega

and follow the same instructions.

About

Unoptimized, guarantee-free C++ implementation of the algorithm described in the SIGGRAPH 2020 paper "Developability of Heightfields via Rank Minimization" by Silvia Sellán, Noam Aigerman and Alec Jacobson

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published