Loading...
Loading...
Use when rigging a character, creature or prop in Maya: "rig this character", placing or orienting joints, Orient Joint doing nothing, IK/FK switch and matching, pole vector flips or elbow drift, space switching, foot roll, spline IK spine, offsetParentMatrix, blendMatrix or matrix rigging, controls and lockdown for animators, Quick Rig, HumanIK, AdvancedSkeleton or mGear, a game skeleton for Unreal or Unity, or a slow rig (parallel evaluation, profiling, GPU Override not kicking in).
npx skill4agent add scenario-labs/skills scenario-maya-riggingnpx skills add scenario-labs/skills --skill <name>scripts/mx_rig.pysys.path.insert(0, "<skills>/scenario-maya-rigging/scripts"); import mx_rig as Rtest_rig_offline.pytests/code/maya-rigging/run_all.shtest_rig_probeworld = local * OPM * dagParentWorld.matrixworldMatrixworldInverseMatrix-orientJointR.joint_chainR.pole_vector_positionfrozen| Input | Changes | Default when silent ([added] unless attributed) |
|---|---|---|
| Target | film keyframe rig vs engine skeleton (names, axes, influences, one root) | feature keyframe rig, custom |
| Camera distance, style | auto-rigger or custom; twist and corrective joints; stylized: crude proportion rig and art-direction paintovers first, final-aim notes from day one (Miquel Campos) | hero: custom; crowd: Quick Rig |
| Skeleton convention | reusing engine animation needs its names and hierarchy | X down the bone, bend on local Z, positive Z flexes |
| Animator conventions | IK/FK default, spaces, colors, pickers | arms FK, legs IK; spaces world, cog, chest, head; ask |
| Shot load | characters per shot, dense meshes | three referenced characters |
| Face, mocap, budget | face to scenario-maya-deformation; HumanIK; joint and influence counts | jaw, eyes, aim control; ask the lead (antCGi: "it pays to be frugal") |
| Quick Rig + HumanIK | AdvancedSkeleton | mGear Shifter | Custom ( |
|---|---|---|---|
| biped facing +Z; game or background character "not looked at closely" (Maya Learning Channel); HumanIK when animation is retargeted (2027 Help); 15 nodes, strict T-stance | body plus face from a fit skeleton, rebuilt by toggling fit; engine export via Convert to BlendShapes Only | many characters, a team, Unreal exporter; confirm a 2027 build for the OS first [verify] | hero rig, strict engine skeleton, rigs the agent must rebuild and verify: this workflow |
mx_validate.validate(profile="model")R.chain_planeR.joint_chain(spec, parent, up="plane")up=(0, 0, 1), up_axis="y"world=[...]end_aim=R.orient_with_cmdsR.mirror_chainR.rotate_order(twist, main)R.set_preferred_angles(root)R.rig_check(joints=bind)rig_checkR.ikfk_limb(bind[:3], name, rig_parent, ctrl_parent, own_solver=char + "_ikRPsolver")extra=[ball, toe], orient_end=FalseR.reverse_footR.foot_pivots_from_meshR.space_switch(ctrl, [None, cog, chest], names=[...])R.ikfk_match(meta, to="fk"|"ik", key=True)R.neutral_switch_testR.space_testR.blend_sweep_testR.scale_testR.lockdownR.lockdown_auditR.opm_audit(rig)R.rom_keysR.eval_census(rig)R.eval_ab(bind, meshes, frames)R.prepare_eval_graph(root=rig)R.gpu_override_census(meshes)deformerEvaluator -meshesR.rom_keysmx_review.playblastR.pose_reviewR.precision_testreferences/critique.mdvalidate(profile="rig")| Value | Relative to | Source |
|---|---|---|
| Twist joints: upper arm 2 (top, mid), lower arm 1, thigh 2, calf 1, plus wrist and foot | bone | antCGi |
| Pole locator 30 units out by hand; computed pole distance = longer segment | elbow | antCGi; [added] |
| Switch, drift, scale error below 1e-3 cm; mid-blend path within max(1 deg, 5%) of the direct angle | bind joints | [added] gates |
| Foot break 25 deg: ball = roll to 25, then 50 - roll; toe = roll - 25; limits footRoll -40..80, footBank -60..60 | footRoll | antCGi |
| Mid spine twist falloff 1, 0.5, 0.25 | ribbon joints | antCGi |
| Precision: problems at 1e5 units, flicker at 1e6 | rig top node | Fragapane |
| Hosts out of limbs: 20 to 17 ms per frame | one character | Miquel Campos |
GPU Override: over 2000 vertices (NVIDIA), 500 (AMD); | per mesh | Using Parallel Maya 2027 |
| blendMatrix equal shares: 1, 1/2, 1/3 ...; counting the inputMatrix: 1/2, 1/3 ... | ordered stack | 2027 Help; [added] |
| HumanIK 15 nodes; Unity 4 influences; Unreal FBX 2020.2 | engine contract | docs |
mx_rigrig_checkneutral_switch_testblend_sweep_testspace_testscale_testprecision_testeval_abgpu_override_censusgame_skeleton_checkvalidate(profile="rig")| Mistake | What it looks like | Fix |
|---|---|---|
| Orient Joint on a joint with rotations | nothing changes, no error | freeze rotations first, or |
| Secondary world axis along the bone ('yup' on a leg, world Z on forward toes) | thigh and calf axes disagree | an axis across the bone; |
| Straight elbow or knee | IK bends the wrong way or backwards | pre-bend, rebuild, set preferred angle |
| Pole off the chain plane; pole too close | elbow drifts when constrained; arm flips as the hand moves | |
| worldMatrix into OPM under a moving parent, or values left under an OPM drive | double transform, reversed rotation | parent's worldInverseMatrix or |
| Equal blendMatrix weights for an average | the last target wins | 1, 1/2, 1/3, or a parentMatrix node |
| Blending to a space's own matrix | control snaps onto the target, IK flips | offset targets ( |
| Handles on the scene's shared solver | referenced characters conflict; one edit changes every rig | |
| Settings host inside the limb | slow playback (node-level cycle) | host on the limb's parent space |
| Flip mid IK/FK blend | toes or wrist spin halfway | constraint blend: interpType Shortest (antCGi); matrix blend: measure with |
| Profiling a keyless rig | numbers collapse once animated; stutter on first keys | keys first; controller tags plus prepopulation |
| GPU Override HUD "Enabled (0 k)" | nothing deforms on the GPU | |
| Scale wired twice, or stretch not normalized | double scaling; limbs stretch when the rig scales | scale non-inheriting groups only; base length times root scaleY |
| Groups, handles, locators unlocked | "key all" breaks the rig | |
| Spline curve under its start joint; helpers under bind joints | dependency cycle; engine export errors | keep both outside the bind skeleton |
validate(profile="model")rig_checkvalidate(profile="rig")game_skeleton_checkaddDLmultiplyDLpointMatrixMultDLaxisFromMatrixikHandlereferences/procedures.mdreferences/expert-notes.mdreferences/critique.mdreferences/gui-paths.mdreferences/sources.md