Blog Post

Compiling C++ Plugins for Maya


Get a taste for the basics of plugin compiling from Raf and The Cult Of Rig then check out our courses both the Maya C++ API 101 mentor led course and our more advanced 201 on demand plugin coding course.



You can also check out our free API compiling guide book to pair with the Cult of Rig video.

rigtip tutorial video

Skinning Rigtip for a little known tool

Move Weights tool, a little known tool that you should be using to make skinning easier and allow for added control in a pinch. TDs can use it to speed up skinning by copying good weighting to new joints for twist, like shoulders to a few new twist joints in the upper arm for example.

Mesh and Rig from AnimRig – Amazing Spiderman – Free Download

Rig free from that we used for this #rigTip video.


Blog Post rigtip video

Cult of Rig : Season 00 day 001 Naming and Components

season 00 day001 stream – namingAndComps

What the first Season will be about:

  • Show was inspired by HandMade Hero format
  • Few streams leading up to SIGGRAPH and first season will be after SIGGRAPH
  • New rig every season getting more complex
    • Season 1 will be rigging¬† a Unicycle in Vanilla out of box Maya
    • How to organize the rig
  • Performance is a big part of this “The absolute #1 important thing in a rig”
    • Check out what can be a bottleneck
    • If we hit a node we are missing we will write it
  • Escalation of concepts- not just a button combo of clicks and “named” technique taught as if they were something special. Learning the maths and ideas and design of a rig
  • Start with the simple rig needs and as we hit something like algebra or a need for vectors, we will dig into them piecemeal.

First Principles “8:00”

  • Rig by first principles – something you assume to be true and base your thinking on.
  • Have to be simple and bullet proof basic building blocks.
  • Nothing should drop the performance of a rig unless necessary. (feature vs. performance)
  • Great ideas that are slow don’t get adopted (clunky demos) so make them fast

Rig organization – Naming Conventions

  • Not a matter of opinion (despite your opinion of them ūüôā¬† but don’t follow along blind, explore your own and try it out
  • First principles of naming
    • Names will be strings
    • Facts about strings
      • CPU string processing is slow
      • No long tokens at start of string (token discrete element or name)
        • component_side_ etc_extension or type
        • Note: “Type” is what it should be used for not just what it is “loc” example , DON’T DO THIS
        • Instead the “Type” is what the node is doing, not what it is – examples – “hrc” (hierarchy separator or spacer ) “srt” (scale rotate translate) “srtBuffer” (aka zero or offset or pivot)”leg_R_something_srt”We will look at Apps Hungarian notation as reference
      • Edges of the string are fast to get to in code
        • First block “leg” will be fastest part of string compare
        • End block is second fastest, “FK” checking the string
        • block length doesn’t matter, doesn’t have to be 3 char for example.
      • Capitalization¬† use¬† “lowerCamelCase”
      • _L_ _M_ _R_¬† vs. _Lf_ _Rt_ _Md_¬† etc.. doesn’t matter really it just depends on how you want to do it and how many things you have to describe, what do you do if you have more than just left and right?
      • Name spaces vs. separators? Need to use Name spaces to fully get use out of Maya but the problem is that the tools to deal with them are or can be buggy.
      • NAME shouldn’t have any effect on what happens to the node or what the node actually does on the back end.
      • NAME should be able to made sense of if you have to work through the rig during trouble shooting or tracking down a bug.
      • Context Matters (hiearchy + name) can help make sure you know what the nodes are doing.
      • Remember the name is also for the animators and a good naming convention will help them know what they have selected and what they do and how much space they take up in the graph editor outliner so understand when and where to be flexible.
      • Question – What about fingers or spine Numbering?
        • “hand_L_[finger01_knuckle]_srt or fingerKnuckle_L but more of this will be covered in the next video talking about how to break the rig in to components

Rigging Dojo note: “There is an argument for not putting a buffer node above controls that will be in world space” I will disagree here because of how many cases where having animation be relative to a transform node and not the world is such a great thing,¬† that we will recommend you buffer any animation control nodes. You could argue that you can always move the data to be relative and bake the animation it back out to world but that is a time cost that isn’t worth it.

Rig organization – MetaData 59:00

  • Names can act as redundant work but don’t replace or should be used as MetaData
  • Have as much redundancy that doesn’t cost performance as possible.
  • MetaData can be a source of problems or get broken, causing TD to have to troubleshoot by hand or repair from the name but name isn’t only source.

Intro to components:

  • For you to organize the rig
    Example: Bike
    Wheel + Fork/frame + pedals
  • Help with evaluation of graph not just pure visual
    • What order do you want the components to drive each other
      • Pedals drive wheel?
      • Frame moves Wheel and updates pedals?

Rigging Dojo note: “Raf digs in to some examples on circular logic but the core concept is good component design allows for more flexibility in changing relationships AKA having easy space switching or layers of drivers that don’t break.
Picking what and when is in charge like a multi way constraints
Raf hits a point where he gets to the point of why and what he really means with not labeling techniques like “Broken Hierarchy” or “Flat Hierarchy”¬† He doesn’t have formal names for this part due to the existing names not being clear so he would call a “Flat or a non-hiearchy” a WIDE vs. DEEP hiearchy.¬†¬† It can’t be a hiearchy if it is flat and it isn’t Broken hiearchy because it works and it isn’t a hiearchy either. We Actually agree here that being stuck on the¬† names for things and not being mindful of or creating meaningful ideas of what is really there “seeing the rig” vs. getting stuck on a technique name.

Wrap up QA


Get involved:
Follow me on twitter for announcements and news
Follow the Streams live on Twitch
And keep up to date with news on the website

Blog Post rigtip

3ds Max to Maya : Quick node translation guide

3ds Max¬ģ translation to Maya¬ģ

Character TD jobs require cross discipline understanding and something we get often are artists transitioning to Maya from Max and have a hard time with the way Maya approaches things like transforms. To make it worse, often times the same name means something diffrent in both software but they almost do the same thing so let Rigging Dojo help you out.

If you need more rigging focused training check out our ondemand class

Rigging Dojo Max to Maya Cross-Training Ondemand class – $14

Max speak

Artists coming from Max ask us questions like

What are the accepted use (if any) of Joints(Bones) vs Locators(Point Helpers) and more importantly, when, where, and how to use Groups effectively?
Is it best to group a bunch of objects together first before skinning them to a Joint?
How do you create a Dummy control in Maya?
What are shapeNodes?

There are more but simply understanding the makeup of your 3d objects goes a long way to understanding the software.

Translation to Maya

First lets look at some Max tools compared to Maya then we will talk details.

Bones == Joints
Point Helper == Locators
Expose Transform == Locator + Maya math nodes
Dummy == Null Transform (Group no children and no shapeNode)
Editable Poly Object == Transform + shapeNode
Geometry type (poly/nurbs/shapes) == shapeNodes

For more details read over the node attributes and features in Maya

“Group” nodes in Maya are everywhere. Think of them like a 3ds Max editPoly object with no geometry in it or a “Dummy” helper. It is a simple basic node that exists in Maya…nothing fancy it is a pivot, that can be a child or a parent of other nodes. ( in reality it is a bit more complex than this but lets start with that)

Creating a “group node” with nothing selected creates an empty node automatically named “Null” in Maya

Grouping transform nodes together before skinning doesn’t do anything extra for you because grouping isn’t doing to a mesh combine. You still have separate skin clusters for each piece of geometry, it isn’t like attaching many meshs together under an editPoly mesh object.

If you group geometry together you are just parenting the nodes under a new transform node. It creates a “Null” renames it to “Group” and automatically parents any nodes you had selected under the new “Group” node. These are not like the groups in Max that act like diffrent objects are combined in to one, locking the selection of the children. Maya has “Assets containers” that allow for similar functionally.

If you did wanted to have all your geo and just one skin cluster (for speed sake..the fewer skin clusters the better) you would have to do a mesh-combine operation first to put all the geometry shapes under a single transform node….like attaching mesh objects in Max.

(Note that Maya 2015+ allows you to mesh-combine with an option to also combine skin weights, allowing for some cool workflows and more flexibility to update models later)

Locators in Maya have some extra attributes in addition to just their transform node. They have some independent control over their size and location of the cross shape.

Locators can also output their world space location. You can then connect out their location in world space to other nodes. Similar to the expose transform tool in Max, but not as complex unless combined with other math nodes in Maya.

(example the Maya distance tool uses the locators world location attribute to drive the distance measurement so you can parent them in to any hierarchy and still get their true measurement.)

Joints are the most costly in Maya and have some diffrent attributes than regular transforms. Think of Joints as a transform node + orients (where they aim) and scale inversion (causes child joint to translate instead of scale when parent is scaled) etc..

They offer the most control and act almost like a Max list controller, combining what you would need to use 2 or 3 group transform nodes and some math operations in to a single node.

Note that they are not a “bone” with length.¬† See our Joint orient post for more details.

Shape Nodes are a type of node that is responsible for displaying and holding the geometry and other icons like the locator cross and the cone on a light.¬† They are a child node of the “transform” node (our Null node that holds translate, rotate and scale). If you edit a polygon cube in Maya, moving the points around or extruding faces happens to the “shape”.¬† Shape nodes can be re-parented to other Null nodes but you have to do this with a script, you can’t re-parent them directly in the Maya GUI.

Hope this helps,

If you are looking for some other “translations” in tools check out the post from Paul Neale, Max Master of rigging

Here is a handy infographic quick guide.

Visual repeat of the blog post for easy sharing

news Rigging Dojo AIR

Rigging Dojo’s Artist in Residence (AIR) : August – James Direen from Reel FX

August 2014 (AIR)

With James Direen from Reel FX, Thursday August 21st

We would love to have you join the conversation by subscribe here.¬† We are very excited to have James, who did some excellent work on some complex rigging for the upcoming “Book of Life”, so you might not want to miss this.

meself.jpgDon’t try to take it all in at once.

I like to tell people I’m technically an artist. My passion is really split down the middle between traditional art and straight-up computer science. That is what I love about cg rigging: the more I learn and practice on one side, the better I feel I understand the needs of the other. My career started at Idol Minds, a game studio in Louisville Colorado, where I primarily worked on the PlayStation Network game “Pain.”¬† I loved the small studio environment where I could wear multiple hats — rigging one week, animating the next. Now I’ve been at Reel FX for 4 years, recently finishing work on their second feature animated film, “The Book of Life”. Here I am continually amazed and fueled by what we can accomplish with a large team.

James Direen ProfilePic

Rigging Artist at Reel FX

James has just finished up his work on Reel FX production of “The Book of Life” and has worked on some other great projects, check his Filmography.


 2014 Book of Life (rigging artist) (completed)
 2013 Free Birds (rigging artist)
¬†2012 Daffy’s Rhapsody (Short) (rigger)
 2011 Ice Age: A Mammoth Christmas (TV Short) (rigger)
 2011 I Tawt I Taw a Puddy Tat (Short) (rigger)

Ready to Subscribe and For about the price of a good cup of coffee (we like good coffee) $3.49, you get access to the latest information and top industry artists.

After you complete payment click “return to Rigging Dojo” and then “register”.

Please use FirstnameLastname format.