Houdini 20.0 Vellum

Animated pressure constraints

On this page


A balloon consists of two types of constraints. A stretchable cloth constraint for the outer surface and a pressure constraint to keep the cloth from collapsing. The pressure constraint uniformly pushes the cloth outwards to maintain a global volume, so squeezing one area will bulge areas further away.

The Pressure constraint, which is set by the Constraint Type parameter on the Vellum Constraints SOP, stores its original volume and a many-point constraint is built to maintain it. A pressurescale point attribute can be used to scale the effect of the pressure constraint on a per-point basis. This attribute can be used for interesting inflation effects, but should be used with care as it can also lead to unbalanced forces if the pressurescale is near zero on only one side of an un-pinned balloon, for example.

Animated pressure example

The Animated Pressure example on the Vellum Solver SOP illustrates how to inflate the rubber toy from tail to head.


Load the digital asset by pressing the Load button above.

This example demonstrates using the pressurescale point attribute to create an animated inflation effect. Vellum pressure constraints can read the pressurescale point attribute to scale how much the pressure constraint can affect individual points. By animating this pressurescale from 0 to 1, you can inflate an object over time.

You will need to animate the restlength of the pressure constraint as well, since this represents the overall volume of the object. If you try to inflate only one small part of the object to its full volume, you will get a very unrealistic response.

This setup shows a way to animate the pressurescale attribute over time as you move a bounding box over the object, and compute the volume of only the part of the object that is inflated. Inside the Vellum Solver, you copy the pressurescale value from the animated source, as well as setting the restlength (i.e. volume) of the pressure constraint.

Dive inside the Vellum Solver to see how the attributes are applied inside the solver.