You are on page 1of 5

AET 339 Technical Art I: Project 3

Yasmin Haq
Spring 2022

Project Details:

The tech art team in the studio requires an auto rigging tool for Maya that automates the
process of creating IK limbs for robotic NPCs.

They've given you a file with an example NPC (see Mech_Spider.mb file) for testing.

A python script is needed with the following functionality:

● Ability to create a modular IK arm rig


● The user must be able to define the position and orientation of the module
components (i.e. build the rig on top of an existing model)
● The user must NEVER have direct access to the joints.
● All components must be named with a consistent naming system.
● There must be a nicely designed UI for the tool.

Assets Used:
- My brain
- Robot from tech art folder:
https://utexas.instructure.com/courses/1326378/files/folder/Project%20Materials?preview
=64691583
Video showing functionality: https://youtu.be/PiCFKHdgJMQ
Playable executable: https://yasminhaq.itch.io/auto-rig

Analysis:
Based on the required features, a few questions were asked:
● How should the UI be friendly and aesthetic ?
● How can i add a component that makes the system reusable
● How modifiable should the rig be?

I just wanted to make the lightning as extravagant and juicy as possible. I was also inspired by
the upcoming aesthetic of 2d effects in a 3d world like in the league of legends show or
spiderman into the spiderverse.

Approach:
After research and testing __how to code in Python__,__UI___, and ___The rigging
process_____, the following approach was chosen:

● A function that creates the controls


● A UI system for simple navigation
● Creating a modular system for reusability

Breakdown of Approach:
CREATING CONTROLS
The first thing I did for actual control
creation was create 3 cones with
different names and variables.

When the create joint button is pressed, the position


of the cone is stored using the get attribute and
then applied to the instantiation of the joints at their
respective areas.

After that, the joints are


oriented in code and an ik
handle between the claw and
shoulder joint is created.

Then padding groups are


made for each type of joint
(shoulder, Elbow, Claw).
These padding groups
require a curve circle to be instantiated at the origin and then to be grouped. The group is
parented to the respective joint and the transformations are zeroed out. Then the group is
unparented and constraints are added if necessary.

Lastly, all padding groups and joints are parented in the correct order and grouped together
under an arm folder.
UI SYSTEM

The UI I system was developed by creating a window with a title in it. Then there is a text box
giving simple context to the buttons. The window is split into 3 rows for clarity. There is one
button that holds the function “place joints” and another called “Create joints”.

Another feature of the UI is that if the place joints button has already been pressed, it cannot be
pressed again until the create joints button has been pressed. And vice versa for the create
joints button.
MODULAR SYSTEM

To create the modular system I simply created an int before any functions and
then declared it global in the create joints function.

After declaring it global I


set it equal to itself plus 1.
Meaning everytime the
button is pressed it adds
one to the int.

Then that int is applied to any names that appear in the outliner by attaching it to the end of
every name as a string. This way, whenever new joints and controls are created, it names them
all differently based on number.

You might also like