SimDeform.Demo.Web.mp4
This project is an implementation of a similarity-based selection & deformation system (Done during my Masters' studies). It allows the user to quickly select deformation regions through a "cutting" UX-metaphor, and deform these using as-rigid-as-possible. The system can then search for geometrically similar regions (based on conformal factor histograms), allowing the user to quickly edit similar regions of the mesh (as seen when editing the legs in the demo video above).
The implementation in this project is largely based on (subsets) the following papers:
- "SimSelect: Similarity Based selection for 3D Surfaces" - Emilie Guy, Jean-Marc Thiery, Tamy Boubekeur, in particular sections
- "Mesh Decomposition with Cross-Boundary Brushes" - Youyi Zheng and Chiew-Lan Tai
- As-rigid-as-possible deformation
Requires basic cmake build toolchain. Dependencies (libigl, Eigen, glm) are download automatically.
git clone --recurse-submodules git@github.com:berendbaas/SimDeform.git
cd SimDeform
mkdir build && cd build
cmake ..
makeFrom within the build directory, you can run the following to start the demo app as follows:
./SimDeform # Loads the default low-res "Armadillo" mesh
./SimDeform ../data/armadillo.off # Loads a higher quality mesh, requires more precomputation (or pick your own!)In case you get strange isolines during selection (if the selection heuristic fails), you can select one of the alternative candidates in the "Isoline Candidates" submenu in the GUI panel.
This project makes a few alterations to the algorithm proposed in SimSelect:
- Descriptor uses vertex dual-area weighted contributions to the histogram (improves invariance to tesselation)
- Instead of computing (part) expansion candidates using the mean conformal factor of the brush strokes, this project computes the mean conformal factor of the selected isoline, to be less sensitive to noise.
Additionally, our deformation handle expansion/transfer works as follows:
- Compute the expansion of the fixed region (as described in SimSelect)
- Run an additional expansion on the handle region, but constrain our search to only consider isolines that lie within the expanded part of part 1.
- Compute the reference frame of both regions, by computing the center of mass and principal component decomposition of the point cloud of the selection. We keep the principal ordering.