.. _bpy.types.LaplacianDeformModifier:
*************************
Laplacian Deform Modifier
*************************
The *Laplacian Deform* modifier allows you to pose a mesh while preserving
geometric details of the surface.
The user defines a set of "anchor" vertices, and then moves some of them around.
The modifier keeps the rest of the anchor vertices in fixed positions and
calculates the optimal locations of all the remaining vertices to preserve the original geometric details.
This modifier captures the geometric details with the use of differential coordinates.
The differential coordinates capture the local geometric information, the curvature and
direction of a vertex based on its neighbors.
.. note::
You must define an *Anchors Vertex Group*. Without it the modifier does nothing.
Options
=======
.. figure:: /images/modeling_modifiers_deform_laplacian-deform_panel.png
:align: right
The Laplacian Deform modifier.
Repeat
How many iterations to do to improve the found solution.
The objective is to find the rotation of the differential coordinates
preserving the best possible geometric details.
Details are retained better if more iterations are used,
however, it will take longer to calculate.
.. list-table:: Deform horse example
`blend-file `__.
* - .. figure:: /images/modeling_modifiers_deform_laplacian-deform_cactus09.png
:width: 130px
Original Model.
- .. figure:: /images/modeling_modifiers_deform_laplacian-deform_cactus-repeat1.png
:width: 130px
Repeat: 1.
- .. figure:: /images/modeling_modifiers_deform_laplacian-deform_cactus-repeat2.png
:width: 130px
Repeat: 2.
- .. figure:: /images/modeling_modifiers_deform_laplacian-deform_cactus-repeat5.png
:width: 130px
Repeat: 5.
* - .. figure:: /images/modeling_modifiers_deform_laplacian-deform_horse-repeat0.jpg
:width: 130px
Original Model.
- .. figure:: /images/modeling_modifiers_deform_laplacian-deform_horse-repeat1.jpg
:width: 130px
Repeat: 1.
- .. figure:: /images/modeling_modifiers_deform_laplacian-deform_horse-repeat2.jpg
:width: 130px
Repeat: 2.
- .. figure:: /images/modeling_modifiers_deform_laplacian-deform_horse-repeat10.jpg
:width: 130px
Repeat: 10.
Anchors Vertex Group
The group of vertices that the user will use to transform the model.
The weight of each vertex does not affect the behavior of the modifier,
the method only takes into account vertices with weight greater than 0.
Bind
The *Bind* button is what tells the *Laplacian Deform* modifier to actually capture the geometry details
of the object, so that altering the anchor vertices actually alters the shape of the deformed object.
Unbind
After binding the modifier, you may later decide to make changes to the *Anchors Vertex Group*.
To do so you will first need to *Unbind* the modifier before binding it again.
Error Messages
==============
Vertex group *group_name* is not valid
This message is displayed when a user deletes the vertex group or changes its the name.
Vertices changed from X to Y
This message is displayed when a user adds or deletes vertices to/from the mesh.
Edges changed from X to Y
This message is displayed when a user adds or deletes edges to/from the mesh.
The system did not find a solution
This message is displayed if the solver could not find a solution for the linear system.
.. note::
If the mesh is dense, with a number of vertices greater than 100,000,
then it is possible that the non-linear optimization system will fail.
History
=======
`Laplacian Surface Editing
`__
is a method developed by Olga Sorkine and others in 2004.
This method preserves geometric details as much as possible while the user makes editing operations.
This method uses `differential coordinates
`__
corresponding to the difference between a vector and the weighted average
of its neighbors to represent the local geometric detail of the mesh.
.. figure:: /images/modeling_modifiers_deform_laplacian-deform_diagram-differential-coordinate.png
:width: 369px
Differential Coordinate.
.. seealso::
- `Laplacian Surface Editing (Original paper)
`__
- `Differential Coordinates for Interactive Mesh Editing
`__