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)