Creating a Control rig For A Skeletal Mesh
Note: we learned from this page: https://www.versluis.com/2024/03/creating-a-control-rig-from-scratch-in-unreal-engine/
A Control rig is a Design time control you create that you can interact with the bone
You are essential assigning this control and mapping it to a existing bone,
from there you can move this control as you would the bone
Step 1: Choose some bones , Drag them to the Graph and select Create Item Array
1. Foward Solve is setting the Bones Transform to the Control Rig Transform
Forward solve requires a 1:1 mapping and dragging and dropping the controls and bone arrays even if you selected them in the correct order won't typically have them match up, so you need to manually do it
2. Backward Solve is setting the Control Transform to the bone Transform (The reverse of Foward Solve)
Below are some quotes explaining why we need Backward Solve
UE needs a Backwards Solve to translate an animation into Control Rig information so we can adjust it.
-https://www.versluis.com/2024/03/creating-a-control-rig-from-scratch-in-unreal-engine/
you need the backward solve to bake the animation to control rig to have access to all the keyframes
-https://forums.unrealengine.com/t/cant-edit-animations-in-sequencer-because-cant-select-control-rig/756274
3. You won't use the skeletal mesh anymore but the control rig you created for it, you can drag this into the level
or sequencer and use it as you would the skeletal mesh.
Bugs
- If your getting compile errors Array index(1) out of bounds (count 4) than a possible fix is to close
the control rig editor window and reopen and recompiled.
I'm able to reproduce this bug if I Add a new Item array To a already existing and working forward/backward solve
Typically when I'm trying to add more bones and having to create new arrays
<li? If you reference the Control rig in your level, than you can't edit the control rig, if you can't edit the control
rig delete all references to the control rig, and
- The Forward and backward Solve arrays require a 1:1 mapping of the bones, and for some reason control selecting them in order doesn't give a 1:1 order, you will typically have to manually set the 1:1 mappings yourself
Notes
At one point I thought I copied to many bones and it doesn't match the control array
however, the item array for the bones will always list all bones, and not just the ones copied
You can verify if you copied the right amount by matching the elements in the array