Creating a Control Rig for the Synty Skeleton in Unreal Engine
- Watchman

- Sep 2
- 6 min read
In this guide I am going to be covering how to take the Polygon Synty Character which is part of the animation packs for Synty and we are going to create a control rig from that Skeletal Mesh.
Getting Started
The first thing we want to do is open out project with our imported asset, then we are going to right click on the "PolygonSyntyCharacter" skeletal mesh. From here we can find the Create menu and then select Control Rig.

Explaining the Elements of a Control Rig
Now that we have a control rig asset, let's break down the elements of a control rig; controls, nulls, and solvers.
Controls are the primary elements used for interacting with and animating rigs inside Unreal Engine, functioning as the animator’s “handles” for manipulating a character or object’s skeleton. They are used to drive bone chains, meaning that moving a control automatically drives the connected bones, such as dragging a hand control to move the entire arm, and they can be recorded and animated directly in Sequencer for both gameplay and cinematic purposes. Controls are highly customizable to improve clarity and workflow efficiency: you can assign different shapes like circles, cubes, or arrows to represent specific types of interaction, color-code them to distinguish sides of the body or categories of movement.
Nulls are container elements used to collect, group, and transform multiple rig elements together, serving as an organizational tool within a rig hierarchy. They allow you to manage and manipulate sets of controls or bones in a structured way, making it easier to maintain complex rigs.
Solvers define the direction of evaluation for how animation data flows between controls, rig elements, and the skeleton. There are two main types: Forward Solve and Backward Solve, each serving a distinct purpose in animation workflows.
Forward Solve is the process of driving the skeleton using controls, variables, and other rig elements. This is the primary solve direction used in Control Rig, as it allows animators to manipulate controls to drive bones and animate directly within Sequencer or Animation Blueprints. In short, Forward Solve takes input from the animator and applies it to the rig to produce motion.
Backward Solve, on the other hand, works in the opposite direction, driving the controls from the skeleton. This is the inverse of Forward Solve and is commonly used when baking animation—transferring motion from an existing animation sequence onto the Control Rig inside Sequencer. By doing so, animators can edit, refine, or repurpose animations while maintaining control through rig handles rather than only baked bone data.
Creating and Explaining a Control
In the Rig Hierarchy we are going to start with the Root. Right click the Root Bone and select New Element, then New Control.
In the details panel of the control, we have a lot of information that we can work through. First, we can see our Control Name which we should name to reflect our Bone being controlled (such as Root Control). We can rename our control or any other element that we have selected with F2.
Next, we have the Animation Type which is comprised of four options. An animation control which is our standard control that is used to move and manipulate the bones. Other options that we have is an Animation Channel, which acts an invisible control like a slider to manage variables like stretch, morph, or custom toggles. Another option is Proxy control which allows you to manipulate other set controls on behalf of the proxy. Lastly is a Visual Cue which is specifically made for visual feedback and reference and does not control anything. After Animation Type we have Value Type which is the type of variable that our control will inherit.
We have a Transform category after that which is where you can view the information for how the control is currently behaving. We start with the initial values and as you manipulate them it affects the current values. You can also set the offset of the control from the initial position to the current position through moving the location then right clicking on the current control and "Set Offset Transform from Current". Lastly you can set clamp values like min and max rotations, locations or scales.
Below our Transform category we have our Shape category. This is where we can choose the shape, color, scale and visibility.
Controls for creating a movement rig fall under two categories FK (Forward Kinematics) or IK (Inverse Kinematics). FK is where you move or rotate each joint in order, and the child joints follow. IK is where you move the end point, and the rig figures out how to rotate the joints to reach it. We are going to start with FK controls then create some IK controls.
Creating FK Controls for a Forward Solver
Now that we have a control for our Root Bone, we can use our Shape Transform to set the shape to "Circle_Thick" and the color to Red. We can also rotate the control to be parallel to the floor. With any control, it is personal preference, but the goal should be making sure that your control communicates visibility and intention of how it interacts with the control rig. I choose a circle to indicate that my character can rotate along the direction of the shape for clarity.
Once we create our Control, we now can set it to transform the bone. From the Forward Solve drag off and create a sequence. Now drag your control from the Rig Hierarchy into the graph and Get Control. Now from the Rig Hierarchy again drag the Root bone we used and Set the Bone. Connect the Transform of the control into the Value of the Bone and connect from our sequence into our execute. This is the first controller inside of our control rig.


Each control is going to follow the same process, so for example we can create a control for the bone then we can adjust its shape, size, color, and location. After we are comfortable with our control, we need to drag our control into the graph and "Get Control" then drag the Bone that it will be manipulating and "Set Bone", then plug our transform from the control into the bone.
Ensure that as you are creating your controls that they match the hierarchy of your skeleton. This is to ensure that the movement is carried from the parent to the child bone and down the chain. For example, if you move at the shoulder bone then the rest of the bones below going down to the fingers will update their position to match. To parent controls all you need to do is drag the control using the left click onto the bone you want to act as the parent.

Here you can see the full list of bones and controls for the Synty Skeleton. The only bones that we did not utilize are the last bone in each finger and the toes of the character.


As a reference this is the configuration we have currently. The Shape, Color, Position, and Scale of the Controls are configurable and do not directly represent a correct or incorrect control, but rather personal preference for manipulation. I style my controls, so they are similar to the control rig provided by the default mannequin.


We can test to see if our FK Controls are working with our Forward Solve by manipulating some joints and watching as the bones move. If we move the shoulder this should affect the position of the joints below. Afterwards we can hit Compile, and it will reset.

Creating a Backwards Solver
Our backwards solver is going to act inversely to our Forwards Solver, this means that instead of using our controls to set the positions of the bones, we are going to be using the position of the bones to set the position of the controls. Once more we are going to use our Root Bone and Control as our example.
So, let's find our Backwards Solve event, if you don't have it already you will need to right click in our graph and search for Backwards Solve. From here we can drag from it and create a sequence. Now we can drag from our Rig Hierarchy and find our Root Control, then drag it into our graph. This time we are going to Set Control instead of Get Control.
Now find our Root Bone, we can drag this from our Rig Hierarchy into our graph and Get Bone instead of Set Bone this time. Now just as we did before our Get Transform is going to go into our Set Transform.

You are going to repeat this just as we did for our Forward Solve. These should be identical to each other with the exception being instead of Setting the position of the Bone from the Position of the Control, we are going to be setting the Control from the Position of the Bone.

We can test and see if our Backwards Solve is working by navigating to our Preview Settings tabbed with our Details Panel. In the Animation Category we have the Preview Controller dropdown and we can set that to "Use Specific Animation" and then set it to any animation you want. Here I test it with the "A_Idle_Base_Sword" from the Sword Animations Pack and the "A_InAir_FallLarge_Masc" from the Base Locomotion Pack.





Comments