Squash and Stretch in Puppet 2D

A while ago I found a cheap method of getting squash and stretch working using the Puppet 2D plugin (what we’re using to build puppet rigs in Unity). I did my initial experiments using Damsel’s shotgun; have a look at the results.

Damsel's gun if it were a 1940's Looney Tune prop.

Damsel's gun if it were a 1940's Looney Tune prop.

Here’s what I did to get there. After creating a mesh for the object you’ll need at least 2 bones (I have a third here to anchor the shotgun handle) that aren’t chained together. This is important because we want to be able to move them independently and stretch the mesh out. Attach Parent Controls to them and tick “Scale” in the inspector. Have them parented to something else so that you can move or rotate the whole object.

The way you skin these two bones to the mesh is fairly crucial to getting good looking deformation. Try scaling/moving the Parent controls to their extremes and manually edit the vertex weights so that they look right at these poses. I find that giving the outer vertices more resistance (less bone influence) helps give the deformation more believable mass. You’ll get a better sense of bulging and stretching this way.  

In order to make the rig squash and stretch all you have to do is scale the controls up when you bring them closer together, or scale them down when they’re further apart. You don’t have to scale them uniformly either; vertical and horizontal scaling both work well.

I hope this was helpful to anyone out there using Puppet 2D. The plugin might include squash and stretch support in the future, but this method will probably give you a bit more control over how it looks.