Skip to content

Dynamics Parameters

Hiroyuki Akasaki edited this page Jun 25, 2025 · 2 revisions

Basic

Enable

When this checkbox is disabled, all calculations are bypassed and the output Rotate values will always be [0,0,0].

Time

Connect the Output Time from the existing time1 node in the scene. This is used in comparison with Reset Time to determine when to reset the pose.

# Select the time1 node in the scene
from maya import cmds
cmds.select('time1')

Reset Time

When the current frame (=Time) is before this value, the simulation will not execute and will reset to the initial pose. This effectively sets the simulation start frame. The initial pose will only reflect the Rotation Offset (see Advanced Features for details).

FPS

Set the same value as the scene's FPS. This is used internally to calculate $\Delta t$, which is multiplied by velocity and force values.

However, since this is not performing accurate physics calculations, using a different value from the scene settings will not cause major issues. Additionally, as shown in the image below, the results from 30 / 30 and 60 / 60 will not be identical.

fps_settings

Dynamics Parameters

These attributes are related to pseudo-physics simulation. While there are multiple parameters, Damping and Elasticity (+ Gravity Multiply) are the most important.

Damping

Reduces velocity. This value determines how much to suppress the current "velocity" obtained from the previous state (previous frame during playback). Range is 0 - 1. Setting it to 0 preserves the velocity as-is, while 1 completely eliminates velocity.

"Gravity" and "Elastic Force" cannot be completely suppressed, so as long as other forces are applied, it will not stop completely even if it is set to 1.

$v'= v \cdot (1.0 - Damping)$

damping

Elasticity

This is the "force that return to the original pose". Range is 0 - ∞. When this value is 0, it will not return to the original pose.

If gravity is also enabled, need to set a larger Elasticity value to prevent gravity from overpowering it. Conversely, reducing gravity can also be effective. Be careful not to set the value too high as it may cause erratic behavior.

$F_{elastic} = ((x^0 - x) \cdot Elasticity) / Mass$

elasticity

Elastic Force Function (*Experimental)

The type of elastic force calculation.

  • Linear: Normal linear elastic force.
  • Quadratic: The elastic force increases quadratically when moved away from the original posture.
  • Cubic: The elastic force increases even more (cubically) when moved away from the original posture.

Stiffness

This represents "resistance to movement". It scales the movement amount at each step by this value. Unlike Damping, this suppresses all influences including "Gravity" and "Elastic force". Range is 0 - 1. At 0 there is no effect, and at 1 all movement is completely canceled.

$x^t= x^t + (x^{t-1} - x^t) \cdot Stiffness$

stiffness

The following shows a comparison with Damping. Since the resulting effects appear similar to Damping, recommend adjusting Damping first.

damping_vs_stiffness

Mass

Affects "force" calculations. Larger mass require greater force to move, so increasing Mass increases resistance to Elasticity and Additional Force. Range is 0.001 - ∞. If Mass is too small, force effects are maximized and may cause erratic behavior. Normally, there is no need to change from the default value of 1.

mass

Gravity

Assuming Y-up coordinate system with centimeter units, Gravity defaults to -980[cm] on the Y-axis. Gravity Multiply is multiplied by Gravity in the calculation, so it can be used to control the influence of gravity. Gravity is not affected by Mass.

$F_{gravity} = Gravity \cdot GravityMultiply$

gravity

When enabling Gravity, adjust Elasticity accordingly as a counteracting force.

gravity_and_elasticity

Additional Force

This allows arbitrary external forces to be applied, such as wind. You can specify any vector. Unlike gravity, this is affected by mass. Additional Force Scale is the scaling value for the vector.

$F_{add} = (AdditionalForce \cdot AdditionalForceScale) / Mass$

Turbulence

Adds a randomly changing directional vector to external forces. Enabling Enable Turbulence adds a vector that changes direction randomly to the external force. The change accumulates starting from the Reset Time. Nodes with the same Turbulence Seed and Reset Time will generate identical turbulence vectors.

Turbulence Vector Change Scale controls the rate of change in the turbulence force vector. Turbulence Vector Change Max sets the maximum change in the turbulence force vector.

$ChangeVec^t = ChangeVec^{t-1} + Random(-Scale, Scale)$
$[-Max < ChangeVec < Max]$
$TurbulenceVector^t = TurbulenceVector^{t-1} + ChangeVec$
$F_{turbulence} = (TurbulenceVector^t \cdot Strength) / Mass$

💡Turbulent wind effects can be achieved by combining Additional Force and Turbulence.

turbulence_wind

turbulence_wind_settings


For collisions, see Collision Guide, and for other features, see Advanced Features.

Clone this wiki locally