A Blender add-on, I developed for my bachelor's thesis, that enables the physically-based deformation of meshes based on different shape matching algorithms.
Tested on Linux and Blender versions 4.1.1 and 4.2.1
Works on Windows as well but with some caveats (see below)
- clone the repo
- Make sure you have cmake and eigen installed on your system.
- Go to
/cpp_extensionand change theCMakeLists.txtso that it will work for you:- In the line
find_package(Python 3.11 COMPONENTS Interpreter ${DEV_MODULE} REQUIRED)modify the python version to match the python version of Blender - In the line
INCLUDE_DIRECTORIES ( "/usr/include/eigen3" )make sure the given path points to your eigen installation
- In the line
- Run
cmake -S . -B buildin the/cpp_extensiondirectory of the project (make sure you are in an environment with the same python version as blender and nanobind installed) - To actually build the c file, run
cmake --build build - Execute
makezip.pyto build the addon zip that can be installed in Blender- This can fail if there are multiple or none
"c_functions.*.so"files in the build directory
- This can fail if there are multiple or none
The Blender python version can be found in the console in the scripting environment of Blender
Notes for the installation on windows:
- For some reason, the add-on is slower on Windows, so I recommend working with it on Linux
- For the Neo-Hookean and the Hookean method, the precomputation throws many assertion errors which can be ignored. The first simulation step after the precomputation will then collapse the object but after resetting the mesh, it works as intended.
- The Volume Conservation Constraint also throws an error which can be ignored without consequences
- I had trouble getting cmake to find the C and C++ compilers. Installing Visual Studio 17 (2022) with the C++ development packages and then specifying this generator in the cmake command solved this issue.
- When specifying paths in the
CMakeLists.txt, backslashes need to be replaced by slashes - After step 5 the build files are not in
build\but rather inbuild\Debugand it isnt a*.sofile, it is a*.pydfile. - Because of this
makezip.pydoes not work. Please usemakezipWindows.pyinstead.

