In this tutorial we’re going to build a simple squash-and-stretch rig in Unreal Engine 5. The goal is straightforward: we’ll take a sphere, give it a single bone, create two controls, and use a little bit of math to make the sphere stretch when the controls move apart and squash when they move together.
SKELETAL MESH
First, you’ll need a sphere mesh.
In this example, the sphere has been created in Blender and imported into Unreal Engine
Make sure your transforms and origin are set properly in your DCC of choice before exporting your mesh
Once the sphere is in your Content Browser, right-click the mesh and choose Convert to Skeletal Mesh
When Unreal asks how you want to convert it, place the root bone at the origin and leave the naming prefix at its default value
Then click Convert
Unreal will create a new Skeletal Mesh from the sphere
Double-click the new Skeletal Mesh to open it
Inside, you’ll see the skeleton
There should be just one bone – the root bone which all we need
For this simple squash-and-stretch setup, there is no reason to build a traditional multi-bone character skeleton
The entire sphere will be driven by this one bone
Save the Skeletal Mesh before moving on
CONTROL RIG (ROOT)
Now that we have a skeletal mesh, let’s give it some controls
Go back to the Content Browser, right-click the Skeletal Mesh, and choose Create → Control Rig
Open the newly created Control Rig
The first thing we’re going to do is create a control for the root bone
In the Rig Hierarchy, right-click the root bone and choose New Element → New Control
This creates our first control
Select the control and look at its Shape Settings
This is where you can change the visual appearance of the controller, including its shape, color, and scale
For this example, choose a Circle Thick shape and increase its scale so you can easily see it
We simply want a controller that’s easy to see and manipulate
We’ll call this our root control
CONTROL RIG
Select the root control and duplicate it with Ctrl + D
We now have two controls
The second one will act as our stretch control
Select the duplicated control and go to its Offset Transform settings
Move it upward on the Z axis so it is on top of the ball
You should now have one control at the bottom and another control at the top
The distance between them is important because we’ll use that distance as the basis for our squash-and-stretch calculation
Before doing the math, let’s make the controls behave like a hierarchy
Drag the second control onto the first control in the Rig Hierarchy so that the second control becomes a child of the root control
NOTE: You may need to reset the Z Location on the second control (not sure if this is a bug or not)
Now try moving the root control
The upper control should follow it
This gives us a useful relationship
The root control determines where the rig is positioned, while the second control can move relative to it to determine how much the sphere stretches
DRIVER
With the controls created, we can finally start building the rig logic
The first thing we want to do is make the root bone follow the root control
Drag the Root bone onto the graph and choose Set Bone
We’ll use this node to drive the transformation of the skeletal root bone
Next, drag the Root Control onto the graph and select Get Bone
Expand the Transform menu, we only need the control’s Location and Rotation
Expand the Value menu on the Set Transform node
Connect the control’s Translation ouput from the Get Transform node to the Set Transform Translation
Connect the control’s Rotation ouput from the Get Transform node to the Set Transform Rotation
DISTANCE
Our squash-and-stretch effect is going to be based on one simple idea – the farther apart the controls are, the more the sphere stretches
The closer they are, the more it squashes
To calculate that, we need to know the distance between the two controls
Drag the second Root Control onto the graph and choose Get Control
We now have the transforms of both controls available
Next, right-click and add a Distance Between Vector node
Take the Translation of the two controls and plug them into the node
When the controls are at their original positions, they are 60 Unreal Units apart (although your distance may be different)
Therefore, the distance calculation initially gives us 60
But 60 isn’t particularly useful as a scale value
We want a ratio where the original configuration equals 1.0
So add a Divide node and divide the calculated distance by 60 or your correct distance
That’s our stretch
STRETCH
Expand the Scale 3D menu on the Set Transform node
Connect the result of our distance calculation to the Z scale
Connect the Forwards Solve node to the Execute input of the Set Transform
Move the upper control upward and the distance increases (the Z scale increases)
The sphere stretches vertically
Move the control downward and the distance decreases (the Z scale decreases)
The sphere becomes shorter
But there’s a problem
If we only change Z, the sphere gets thinner as it stretches, rather than maintaining the characteristic squash-and-stretch shape
So we need to compensate for the change in Z by adjusting X and Y
VOLUME
This is where a little bit of math makes the rig much more convincing
Add a Square Root (Sqrt) and connect the Divide node
Add a second Divide and connect the Square Root to the B-input of the second Divide node
Change the A-value to 1
When we connect this second Divide node to the X and Y Scale, we stretch the sphere while maintaining its volume
CONCLUSION With just one bone, two controls, and a few simple calculations, you can create an effective squash-and-stretch rig in Unreal Engine 5. This simple setup provides a strong foundation for more advanced deformation systems and brings expressive, dynamic motion to your animations.