GDC 2015

Hey everyone, I’ll be giving a talk at GDC for Intro to Photoshop Scripting for Artists. It’s on March 2nd at 4:30pm-5:00pm in Room 2014, West Hall.

If you wanna learn some Photoshop scripting come check it out! We also have other talks about our platform and various other topics starting at 10:00am in the same room.

Rigging Dojo Apprenticeship

I recently finished the one month Rigging Dojo Apprenticeship focusing on AAA game facial rigging. I learned a lot of cool stuff and highly recommend it to anyone that was thinking about signing up.

It was a lot of hard work, but my facial rigging skills went from zero to hero!

Thanks to Rigging Dojo and Daniel McCrummen for the class!

Single Shading Switch Utility Node

In this video I show you a couple of nifty things you can do with the Single Shading Switch utility node within Maya.

Here is the source code that I use in the video:

First Example

// switchNodeName.input[element #].inSingle

setAttr "singleShadingSwitch1.input[0].inSingle" 0.5;


Sphere Example

for ($i = 0; $i < 16; $i++)
    setAttr ("singleShadingSwitch1" + ".input[" + $i + "].inSingle") (rand(0, 1));


Glow Intensity Example

for ($i = 0; $i < 17; $i++)
    setAttr ("singleShadingSwitch1" + ".input[" + $i + "].inSingle") (($i + 1) / 17.0);


MEL Tip 005: Toggle Booleans

In this video I explain what a boolean data type is and how to easily toggle them on or off.

A boolean is a data type that represents two different states. Those states could be true/false, on/off, yes/no, or one/zero.

In MEL we don’t have an actual data type called boolean, but instead we use the integer data type to represent them.

int $boolean = true;

$boolean = (!$boolean);
print $boolean;
// 0 will now print since the number zero represents false

In the above code we have an integer named $boolean and we’re assigning it to be true. The words true and false are keywords in MEL and they’re the equivalent to one and zero, so the following all mean the same thing:

int $boolean = true;    is the same as   int $boolean = 1;

int $boolean = false;    is the same as   int $boolean = 0;

Once line 3 is executed the $boolean variable will now equal false.

When you read line 3 you can think of the exclamation point as representing the word not. On line 1 we assign the $boolean variable to equal true, so when you read line 3 you can say $boolean is equal to not true, which in turn makes it false, because if something is not true then it must be false.

If the $boolean variable were false and we execute line 3 then the $boolean variable will equal true because if it’s not false then it must be true.

int $boolean = false;

$boolean = (!$boolean);
print $boolean;
// 1 will now print since the number one represents true


Here are a couple of practical examples using this technique. In this first example is a script that will toggle the Isolate Select on or off.

string $panel = `getPanel -withFocus`;

int $isolateState = `isolateSelect -q -state $panel`;

enableIsolateSelect $panel (!$isolateState);


And this example shows how you can use the technique to toggle the -lock flag on each of the attributes in the Channel Box:

string $objects[] = `ls -sl`;

for ($object in $objects)
    string $keyableAttrs[] = `listAttr -keyable $object`;
    for ($keyableAttr in $keyableAttrs)
        string $objectAttr = ($object + "." + $keyableAttr);
        int $lock = `getAttr -lock $objectAttr`;
        setAttr -lock (!$lock) $objectAttr;

Toggling boolean data types is a technique you can basically use in any of the programming languages you may learn in the future, so it’s a useful thing to know!

Key Takeaways

1. Using an exclamation point in front of a boolean variable will toggle it to the opposite state.

2. getPanel -withFocus will tell you which panel currently has focus.

3. Using enableIsolateSelect $panel $isolateState will allow you to turn on/off Isolate Select.

4. listAttr -keyable $object will return a list of all the keyable attributes within the Channel Box.

MEL Tip 004: Select Attributes in Graph Editor

In this MEL Tip I’ll be showing you how to create a script that will take the selected attributes in the Graph Editor and select those same attributes for every object you have selected.

Here is the script:

string $objects[] = `ls -sl`;

string $attrs[] = `selectionConnection -q -object graphEditor1FromOutliner`;

for ($attr in $attrs)
    string $buffer[];
    tokenize $attr "." $buffer;
    string $attribute = $buffer[1];

    for ($object in $objects)
        if (`attributeExists $attribute $object`)
           selectionConnection -e -select ($object + "." + $attribute) graphEditor1FromOutliner;

Key Takeaways

1. graphEditor1FromOutliner is the name Maya gives the outliner panel within the Graph Editor.

2. Use selectionConnection -q -object graphEditor1FromOutliner to query the selected attributes in the Graph Editor.

3. Use the tokenize command to separate a string based on the split character you give it.

4. The attributeExists command will check if an attribute exists on the the given node.

5. Using the command selectionConnection -e -select “objectName.AttributeName” graphEditor1FromOutliner will allow you to tell Maya what attribute you want to select inside the Graph Editor’s outliner.

Free Autodesk MasterClasses

Came across a whole bunch of free MasterClasses on Autodesk’s web site.

They have videos for all their different products featuring a wide range of different topics like 3D math, rigging, animation, texturing, plug-in development, and using Qt.

Great stuff!

HandBrake Video Converter

handbrake logo HandBrake Video Converter

I needed to convert an 8.5 gigabyte .AVI file into a .MP4 file with a more manageable file size without too much of a loss of quality. After trying many different kinds of video conversion software I came across one that was not only the best one I found, but also free, multi-platform, and open source.

It’s called HandBrake and you can download it here.

It quickly converted an 8.5 gigabyte .AVI file to a 207 megabyte .MP4 file with a negligible loss of quality. I tried Xilisoft Video Converter, QuickTime, and After Effects to create a decent looking .MP4 file and they didn’t come close to the quality and ease of use I got with HandBrake.

Rigging Demo Reel 2014

Woohoo! Just finished my rigging demo reel featuring some of the work I’ve done in the mobile games industry. You can click here to watch it on Vimeo.

downloadDemoReel Rigging Demo Reel 2014


The Last of Us Keynote

Creative director Neil Druckmann gives a keynote speech about the story development for The Last of Us.

He talks about the different iterations of the story, why they failed, and
what they did to make them better. He also goes over how female characters are sexualized in entertainment and how they wanted to create a game that avoided the typical stereotypes you find in games.

Personally I’m sick of the same story of a guy rescuing a female wearing an outfit showing her cleavage. I hope more games do what games like The Last of Us and Beyond: Two Souls have done and create strong female characters.

Here are the links to the speech:

Part 1: A Cop, A Mute Girl, and Mankind
Part 2: Developing a Story
Part 3: A Feminist Ending

Autodesk Python Videos

Came across the Autodesk Scripting and SDK Learning Channel on YouTube today.

They have a bunch of useful tutorial videos about Python scripting. Here are the links:

Introduction to Python Scripting in Maya
Introduction to Maya Python Plug-ins
Introduction to the Python FBX SDK
Introduction to Python in MotionBuilder