Laplacian Deformer
Course Project for Geometric Modeling (Graduate Level)
Spring 2025
Project Overview
This project implements a Multiresolution Laplacian Mesh Deformer, a technique used to manipulate 3D models interactively while preserving their high-frequency geometric details.
This implementation is based on course content from Professor Daniele Panozzo (NYU), who provided the initial setup, including the iPyWidget used in the DeformExample.ipynb notebook for interactive visualization and the Selection.ipynb that is used to add handles to a mesh.
Hand deformation example
Real-time interaction
Multiresolution Mesh Editing Pipeline
The overall deformation process is divided into three main phases to achieve detail-preserving manipulation, carried out by methods of the initialized deformer_ instance. The instance is initialized with the original mesh vertices ($V$), faces ($F$), and the indices of the control handles.
- Remove High-Frequency Details (Smoothing): The original mesh vertices ($V$) are smoothed to create a low-frequency base mesh ($B$) by solving a Bilaplacian minimization problem.
B = deformer_.smooth_mesh(v)
- Compute Detail Encoding: The high-frequency details ($\text{details} = V - B$) are calculated and encoded in a local, orthogonal reference frame for each vertex. This frame is defined by the per-vertex normal ($\mathbf{n}$) and two tangent vectors ($\mathbf{x}$ and $\mathbf{y}$).
coeffs, tangents = deformer_.compute_detail_encoding(B)
- Deform the Smooth Mesh and Transfer Details: The low-frequency base mesh ($B$) is deformed based on the user-defined handle movement (
new_pos) to create the new base mesh ($B’$). The stored detail coefficients are then applied to the new reference frames in $B’$ and added back to compute the final, detail-preserved deformed surface ($S’$).
B_prime = deformer_.smooth_mesh(new_pos) # Deformation of the smooth mesh
B_prime_dets = deformer_.apply_detail_encoding(B_prime, coeffs, tangents) # Detail transfer
S_prime = B_prime + B_prime_dets # Final result