[Modular Rig][5.8.4] Leg module detecting wrong side foot

Summary

In a Modular Rig, when dropping a leg module on one of the procedurally created leg sockets the foot socket then appears on the wrong side.

What Type of Bug are you experiencing?

Animation

Steps to Reproduce

  1. Create a modular rig for any skeletal mesh character (issue happens with Metahuman or non-Metahuman humanoid characters)
  2. Drop the spine module on the corresponding automatic socket
  3. Drop a leg module on the left leg socket

Expected Result

The foot socket appears on the same leg where the leg module was added.

Observed Result

The foot bones and controllers are swapped between left and right leg resulting in deformed animation when the control rig is used in a sequence.

Affects Versions

5.8

Platform(s)

Windows

Upload an image

This bug is still present in the recently released 5.8.4 release. This bug has rendered biped modular rigging creation basically no-functional. This is a feature important for my teaching so I hope it can be fixed soon.

And this is Claude’s assessment of the issue:

What’s wrong

The Leg module creates the socket that the Foot module attaches to, inside ConstructionGraph → Spawn Socket. When the skeleton has toe metadata, it decides where the socket goes like this:

  1. It guesses the leg’s side by running Get Side from Metadata on the Leg Primary bone.
  2. It picks Toe R if the guess is “right”, otherwise Toe L.
  3. It adds the socket under that toe.

In 5.6 there was a safety check between steps 2 and 3, and 5.8 removed it. The 5.6 version also:

  • got every bone under the leg (ResolveConnector_4 on Leg Primary → CollectionChildrenArray_2_1, recursive, including the parent);
  • checked that the chosen toe is actually in that list (Find_2);
  • only added the socket if it was (RigVMFunction_ControlFlowBranch_3).

In 5.8, the side check now leads straight to the “add socket” step. The diff against 5.6 shows only those four removed nodes and the rewired connections; nothing else in the Leg changed. The Foot module matched 5.6 on every pin.

Why the socket ends up on the wrong side

Without the check, the socket’s placement depends entirely on the side guess. Get Side from Metadata decides by multiplying the bone’s position by the rig’s Mirror Axis metadata. If that metadata isn’t set, its default is (0,0,0), so the result is always “not right” and both legs pick Toe L. The right leg’s foot socket then appears on the left toe. A skeleton whose left/right axis sign doesn’t match the convention fails the same way. In 5.6, the check would catch the wrong toe (it isn’t under this leg) and skip it.

I found this by reading and comparing the graphs.

Could someone in here point me in the direction to getting my creator code issue fixed? It was removed and I have no reason as to why. Also have not been able to connect with support to fix the issue.