Ben Traje
← Back to rigging

Auto connect rigs via String Parsing and Constraint

23 Sep 26 (1mo ago)

Once controllers are built, linking them back to the base skeleton or target transforms manually is tedious. By enforcing naming conventions (e.g., matching HairBackC1_con to HairBackC1), you can parse suffixes and apply parent constraints automatically.

Using rsplit() prevents accidental mid-string replacements, while cmds.objExists() guards against missing scene targets:

import maya.cmds as cmds

def constraint_rig_to_base():
    selection = cmds.ls(sl=True)
    if not selection:
        cmds.warning("Please select the '_con' objects.")
        return

    for item in selection:
        if item.lower().endswith("_con"):
            base_name = item.rsplit("_con", 1)[0]
            
            if cmds.objExists(base_name):
                cmds.parentConstraint(item, base_name, mo=True, name=f"{base_name}_parentConstraint")
                print(f"Constrained {base_name} to {item}")
            else:
                cmds.warning(f"Target base '{base_name}' not found.")

constraint_rig_to_base()

Best Practices for Python Rigging in Maya

  • Freeze Transforms Early: Always ensure your driver curves have clean transformations before shape parenting to avoid unpredicted spatial offsets.
  • Maintain Offset (mo=True): Keeps world-space coordinates stable upon applying parent or orient constraints.
  • Pair with Scale Constraints: If your rig requires squash-and-stretch or uniform scaling, complement cmds.parentConstraint with cmds.scaleConstraint.