Maya & Python Scripting / Character FX & Animation / Maya / Python
Creating Center Joints With Python | Maya Python Rigging Series
Written guide

Playing loads YouTube content. YouTube processes data after activation.
Watch on YouTubeIf the player is blocked or unavailable, use Watch on YouTube.
This lesson turns the previously placed center-line reference joints into scripted joint creation. Its main task is to separate usable position data from a parented hierarchy, then organize that data into a reusable helper with a consistent naming scheme. The output remains unparented so that the user can adjust the joints for a character before later rig-building stages.
You need the manual reference skeleton from the preceding lesson and access to Maya’s Python Script Editor. The demonstrated coordinates belong to that character. They are not a general-purpose human skeleton, and the exact Maya release is not established.
Read placement in the intended coordinate context
During 00:02–03:01, the instructor notices that a child joint’s translation values do not match its apparent height. The values are offsets from its parent rather than the world placement he wants to reuse.
He selects the reference hierarchy and unparents the joints with Shift+P. In the demonstrated scene, the resulting translation values now resemble the positions he expects to record. This changes the reference hierarchy, so it is part of preparing the placement template, not a harmless display toggle.
The root and a child can occupy plausible positions while displaying different kinds of translation information. Check the parent relationship before copying values into a new joint-creation call. This source uses unparenting to expose useful coordinates; it does not implement a general world-space query for arbitrary nested transforms.
Create independent joints with one helper
Around 03:01–08:01, the instructor begins a skeleton-building function. Its first joint unexpectedly becomes parented because an existing object was selected. Clearing selection before creation produces an independent joint instead.
That behavior is deliberate for this tool. The user will fit the generated joints before a later operation connects them. Allowing selection to create an accidental chain would change that editing stage.
The creation command is then moved into a smaller helper. The overall skeleton function calls the helper for each joint, while the helper receives position, alignment/side and name. It builds the final identifier from the side designation, an underscore, the joint name and a joint suffix.
The first center hip example uses (0, 83, -3). Inspect the resulting name and position together. The X value of zero expresses this example’s center placement; a center prefix in the name does not itself enforce that coordinate.
Add the center landmarks through short tests
From approximately 12:02–25:10, the instructor works upward through the lower waist, waist, rib-cage/chest landmarks, neck and head. After adding a call, he runs the script and compares the new joint with the reference before proceeding.
Several errors are ordinary data-entry mistakes: a capital letter does not match a parameter name, a helper name is copied incompletely, and a landmark name is reconsidered. Later, a head reference is created too high and another is placed on the wrong side of Z because the typed values do not match the intended ones. Those are corrected in a subsequent run.
The repeated tests make the failing addition easier to locate. Check the newly added call’s identifier, argument order and three position values before changing the general creation helper that already worked for earlier joints.
The spoken sequence contains revised and occasionally inconsistent numbers. For example, a waist value is discussed as 92.5 and then spoken as 92. This article therefore does not assemble an authoritative full coordinate table from the captions. Use the final on-screen values and your own character reference when reproducing the template.
Distinguish bind joints from reference markers
Around 25:10, the helper gains another naming argument: a suffix describing the joint’s role. Most center joints receive a bind designation. The top-of-head and head-aim points are treated as reference markers, since the instructor does not intend them as functional bind joints in this auto-rig.
Adding that argument breaks calls that do not supply it. The instructor first considers an empty value, notices the resulting trailing underscore, then uses a reference designation. A helper-interface change must therefore be reflected in every caller, including the exceptional markers.
This is a naming distinction at this stage; no mesh is bound in the lesson. The script has not established deformation weights merely by adding a bind suffix.
Review the generated placement before continuing
At the end, the center set can be recreated by the script, while limb construction is left for the next lesson. Check that the joints are independent, center positions match the intended reference, and bind/reference names remain distinguishable.
The useful progression is from inspected reference data to a small creation helper and then to an explicit list of calls. Automation makes that list repeatable, but it also repeats any wrong coordinate or name. The short creation-and-comparison cycle is what makes the source’s repetitive work technically useful.