# DeformationExpression

### From K-3D

## Description

Displace a mesh using functional expressions in x, y, and z. |

Plugin Status: | Stable |

Categories: | All Plugins, Stable Plugins, Deformation Plugins |

## Metadata

Name | Value |
---|

## Properties

Label | Description | Type | Script Name |
---|---|---|---|

Input Mesh
| Input mesh | k3d::mesh* | input_mesh |

Output Mesh
| Output mesh | k3d::mesh* | output_mesh |

Mesh Selection
| Input Mesh Selection | k3d::selection::set | mesh_selection |

X Function
| Output X coordinate function, in terms of x, y, z, and any user-defined scalars. | k3d::string_t | x_function |

Y Function
| Output Y coordinate function, in terms of x, y, z, and any user-defined scalars. | k3d::string_t | y_function |

Z Function
| Output Z coordinate function, in terms of x, y, z, and any user-defined scalars. | k3d::string_t | z_function |

### Description

DeformationExpression lets you create a deformation modifier based on a mathematical expression.

This means each point's position is recalculated based on its X,Y and Z components.

**Note:**Take in count that the evaluation is on the object's local space and not in the global space.

### Example

Lets suppose the object has the following points:

(1,1,0) (1,0,2)

Now lets suppose we have the following expressions:

For the X component: x+y For the Y component: y^2 For the Z component: z-x

The evaluation in the corresponding order

First point ( 1+1, 1^2, 0-1) = ( 2, 1,-1) Second point ( 1+0, 0^2, 2-1) = ( 1, 0, 1)

### Creating complex modifiers

One technique for creating complex modifiers is thinking of vectors, then replacing this vectors on the components functions.

For example this vector expression creates like a bulge near the coordinates center.

|x| is the module of x pi: initial point vector pf: final point vector pf = pi + (pi / |pi|) * exp(-|pi|^2)

That means adding to the initial vector a vector in the same direction, proportional to the Gauss function of its module. Translating to components:

pi -> the corresponding component of the function (x,y,z) |pi| -> sqrt(x^2+y^2+z^2)

The resulting functions:

For the X component: x + x/sqrt(x^2+y^2+z^2) * exp(-(x^2+y^2+z^2)) For the Y component: y + y/sqrt(x^2+y^2+z^2) * exp(-(x^2+y^2+z^2)) For the Z component: z + z/sqrt(x^2+y^2+z^2) * exp(-(x^2+y^2+z^2))

You will notice I directly optimized **sqrt(x^2+y^2+z^2)^2** to **(x^2+y^2+z^2)**