Maya & Python Scripting / Character FX & Animation / Maya / Python
Creating Joints With Python | Maya Python Rigging Series
Legacy TutorialWritten guide
This tutorial is part of the CGI Nerd archive. Some software features, interfaces, or workflows may have changed since it was recorded.

Playing loads YouTube content. YouTube processes data after activation.
Watch on YouTubeIf the player is blocked or unavailable, use Watch on YouTube.
A joint-creation script needs to control three things separately: the joint’s name, its position and its relationship to the previously created joint. This lesson introduces those controls before the series builds a complete skeleton. The result is a small joint-creation experiment and a plan for gathering positions from a manually placed reference skeleton.
You should already be able to run Python in Maya’s Script Editor and inspect objects in the viewport. The character supplies a placement reference; the demonstrated hip height belongs to that character, not to every rig. The recording does not establish an exact Maya release.
Find the command behind the manual operation
At approximately 00:03–02:01, the instructor switches to the Rigging menu set, creates two joints through Skeleton > Create Joints, and examines the Script Editor history. The useful connection is between an operation performed in the viewport and the command Maya records for it.
He imports maya.cmds under the alias mc and runs mc.joint. A joint appears at the base of the scene. Before adding more functionality, inspect that simple result: the Python tab must be executing Maya commands, and the scene must contain the joint you just requested.
The instructor then selects the command text and opens Command Documentation from the context menu. The lesson uses that reference to discover arguments and examples. The documentation displayed in the recording is evidence of his lookup process; this article does not claim a separate review of the current API.
Name the joints and inspect their hierarchy
Around 02:01–04:03, the name argument gives the first joint a recognizable identifier. A second joint is created immediately afterward. Moving that second joint upward reveals that it is already parented to the preceding joint.
This is more than a naming exercise. In the demonstrated sequence, joint creation depends on the current selection: the newly created joint becomes the context for the next creation. Repeating the command can therefore build a chain. A script that appears to create several independent objects may instead produce a connected hierarchy if it carries that selection forward.
Inspect both the names and the parent-child relationship before extending the sequence. The example supports building a chain in order; it does not yet demonstrate a branching skeleton or the selection handling needed for separate limbs. Those are later responsibilities of the rig builder.
Separate inherited placement from explicit position
At approximately 04:03, the instructor estimates the hip location from the character and supplies the position (0, 82, 0). The first joint appears near the pelvis. When the second joint has no explicit position, it appears at the same location as its parent in this test.
The next experiment is especially useful because the instructor’s prediction is corrected by the result. He initially expects that explicitly positioning the second joint at (0, 0, 0) will not work as intended. On execution, it does move to the world origin, and at approximately 06:02 he identifies the supplied position as world-space placement.
Keep the two observations distinct:
- Omitting the second position leaves it at the previous joint’s location in the recorded example.
- Supplying a position places it at that world location in the demonstrated command sequence, while the joint remains part of the chain.
Position and parenting answer different questions. One determines where the joint is placed; the other determines how it belongs to the skeleton. Inspect both after a change instead of treating an apparently correct silhouette as proof of a correct hierarchy.
The transcript does not preserve enough code to provide an audited, executable replacement script. In particular, this placement demonstration should not be read as proof that every resulting local transform channel is zero.
Prepare the reference for the next lesson
During the closing minute, the instructor proposes building a manual template on the character’s left side and using its joint positions as data for the script. That work happens between recordings. This video does not finish the skeleton, mirror it, orient the joints or bind a mesh.
For a useful review of this lesson, check one named joint, a second joint’s parent relationship, the inherited-position case and the explicit-origin case. Then inspect your reference character before choosing positions for a larger skeleton. The transferable idea is to establish a small, observable command behavior before turning a set of manually chosen joint locations into an automated rig-building procedure.