Advanced Max Character TD needing to convert skillset over to Maya

I searched in here for this topic, and it looks like the most recent one was a long time ago, so I wanted to post a new one to see if anything had changed instead of necroing an old thread. I also don’t know how I ended up getting an Advanced Maya tag on here; I’m really just functional enough to get stuff out of it into Max.

I was recently laid off from my senior rigging position at a studio. The studio’s animation was 100% Max, and I consider myself an advanced animation TD in Max. I was also doing a ton of Maxscript tool development for the studio.

Can anyone recommend decent Maya rigging tutorials? I am also looking for Python stuff related to rigging and tool development as well. I live in Southern Ontario, and it is all pretty much Maya work here. I have a few DT/Pluralsight tutorials from years ago when I was still in school, but they all seem pretty out of date. Also, if anyone has any links to places that help transfer Max terminology and processes to Maya, that would be great. I have Paul Neale’s info, but I would love anything above and beyond that.

I have googled stuff and have some links already, but I am not sure if they are actually any good or not as anyone can throw something online. I would trust fellow TDs more for vetting what is actually used in a Maya pipeline.

Finally, when it comes to UI work, what are the pros and cons to Qt vs PySide? What is more commonly used and why?

Thanks.

j

PySide(1/2) are python bindings for Qt. So there really isn’t a difference there.

Sadly I can’t speak to the state of rigging tutorials as I’ve been out of the rigging game for 10 years or so.

Hi @Dstinct, welcome back :slight_smile: - I went through a similar process. Worked at BioWare for 6 years before moving to EA. BioWare was back then a Max house - changed to Maya I think now. This is exactly the approach I took:

  1. As Maya’s backend is the DG/DAG I read up on how it works and built some very basic plugin nodes in Python. A good python reference was “Learn Python the hard way.” - I hadn’t used python at this point.

  2. Write lots and lots of little scripts in python just to get you understanding how Maya does its stuff. I haven’t used Max since 2011 but i still have times when i want to press F4 or M to bring up the material editor! Turn on Echo all commands in the script editor.

  3. Use Maya’s cmds.window and UI library first before moving to PyQT - its different from Max’s interface mechanic and i kid you not you will insistently miss custom attributes - embedding interfaces into the scene via a modifier stack - think again sadly.

  4. Don’t force your workflow into Max - try to take some of its niceties and pull them into Maya - Its not a modifier stack/controller tree its a DG with dirty propagation.

  5. Reaffirming @bob.w - PySide2 is essentially the standard for Maya - it wraps PyQt with some convenience functions and PyQt is just the bindings to the c++ QT back end. Unless you’re using C++ you’re be using PySide in Maya.

Hope this helps - reach out here if you need a hand on the Maya stuff. :+1:

Get Rob Galanakis’ excellent Practical Maya Programming with Python. It’s probably the best Intro to Maya python from a TA perspective, and has a strong emphasis on PyMel which many find easier to use than the maya.cmds.

Maya Python for Games and Film by Adam Mechtley and Ryan Trowbridge is also excellent.

My Colleague Sean Hewitt has a several (old) you tube videos that are a strong introduction to rigging via Maya’s built in tools, and fundamental considerations.

Having worked on scripted rigging tools in both, I find Maya much preferable. Max/ Max script is rather kludgey and inconsistently implemented, where as maya/pymel has uniform under the hood organization.

Also: Pay careful attention to maya joint orientation. (aka Local Rotation Axes -LRAs) Max bones enforced an “X axis points to the child joint” orientation, Maya lets you control that - and often does a poor job with its defaults.

1 Like

You should take a look at the Cult of Rig vids.
Its really good but complex. You will go deep into the inner workings of Maya. https://www.youtube.com/channel/UCX0OBmpsTUCeGaTDbHSb88g/videos

And there is a lot to learn if you take a look at the code from the mGear autorigger on gitHub.
http://www.mgear-framework.com/

1 Like

+1 for mGear and the mGear forums.

Though I wouldn’t say it would be a good learning resource for rigging itself. Though in these days, you’ll likely be using a rig build system like this in a production, rather than rigging from scratch. I consider mGear a great choice, and I’m using it to rig a film with 75 characters alone, with part-time help from an animator.

I don’t know any good foundational rigging tutorials these days. Several people and animator friends have said they feel lost trying to find good stuff, and most tutorials feel painfully slow like this: https://www.youtube.com/watch?v=9bUtZzi6hag

Some essential tools you should look into:

  • ngSkinTools for skinning. It lets you paint in layers, which is extremely powerful. And it has some powerful tools which respect soft selection. (If you have a soft selection of components, and flood or smooth weights, it will respect your soft selection map.)
  • Maya’s built-in Shape Editor is the new modern way to edit blendshapes (morph targets) since Maya 2016.5. You can edit shapes directly on the mesh now, using Mudbox brushes. No need to duplicate 100 meshes anymore.
  • BraveRabbit Shapes is also a great tool for blendshapes. Many people love it, but I don’t have any experience with it.
  • If you want to set up basic linear relationships between attributes, consider using the remapValue node instead of driven keys. Driven keys are animation curves, so you can do more complex things like cycling. But remapValue can handle basic curves and remapping.

That’s all I can think of right now. If you do find any great foundational rigging tutorials, share them back here, because lots of people ask for them.

2 Likes

Oh yeah, one more thing. Today with Maya’s parallel evaluation feature, for 90% of rigging problems, the first thing you should try is to turn parallel off and switch back to DG mode.

That’s not the fix.

That is just the trouble-shooting step to figure out that no, it wasn’t your fault that the rig is exploding, or the geo is not following the rig, or the limbs are flipping or the eyeballs aren’t rotating…

1 Like

In the case of DAG vs Parallel you should go throu this massive doc.
http://download.autodesk.com/us/company/files/2019/UsingParallelMaya.html

and this…
http://download.autodesk.com/us/company/files/MayaCachedPlayback/2019/MayaCachedPlaybackWhitePaper.html

2 Likes

And this article:

1 Like

Wow. Thanks everybody for the info. I’ve bookmarked it all and am going through it as fast as I can. The rigging looks fairly straight forward, although some of the processes seem strange, like grouping the controls for offsets instead of just freezing their transforms after parenting.

Now I’ve just gotta learn Mel and brush up on my Python. I started learning it, but it was so poorly implemented in Max and ran so much slower than Maxscript that I dropped it.

Is this more akin to using Max’s param wire dialog as opposed to SDKs? I never used SDKs in Max, only param wires or script controllers.

Hopefully someone else answers that. I don’t use Max.

remapValue is a node that takes an inputMin and inputMax and remaps it to outputMin and outputMax, like a fit function. And it has a curve which can be set to stepped, linear, spline or smooth, and have 2 or more controls points. Set to linear, it’s a good way to simply map from a controller attribute from 0 to 10, to a blendshape 0 to 1, for example. It also clamps past the limits of the curve, so it can also act as a clamp.

And unlike a driven keyframe, you can connect and drive the control points’ values and positions in the remapValue node. So it can be pretty versatile.

You can freeze transforms, but I am pretty sure you don’t have any sort of access to the neutral pose, like XSI, so I guess it is just better practice not to freeze. Also if you parent something under a frozen transform, and then reset the child’s transform, it doesn’t go to the frozen position. But if you constrain it, it does. So yeah… nah.

I’d skip the mel, or at least just think of it as a stepping off point for working with the maya.cmds namespace, which is a nearly straight mapping of all the mel functions to python.

Basically python offers so much more at a language level, and broader availability of libraries, that it just doesn’t make sense to devote a lot of time to learning mel.

I never heard of remapValue Nodes, they look powerful! but perhaps complex for connecting simple things.

I think Max param wiring is more akin to connecting attributes via Maya’s Node Editor. It’s much easier to use than Max’s clunky param wiring interface. Great for simple stuff like connection the rotate Y of object A to the translate X object B. You just click on one attribute output and drag to another attribute’s input.

image

Because it’s Rotation to Translation, Maya auto inserts unit conversion node.
There are various utility nodes you can insert where you would add an expression in Max. (UnitConversion and Reverse nodes get a lot of mileage.) Super easy for one off rigging needs

for common tasks of course you want to go with scripting those connections.

Approximations:

Max Wire params ~ Maya connection editor.
Max Reaction Manager ~ Maya SDK (Set Driven Keys).
Max Expression Editor ~ Maya Expression Editor.
Max modifier Stack ~ Maya Deformation Order.
Max Controller Stack ~ (pseudo-like) Maya’s evaluation graph.

I would not learn mel or pymel (controversial?) i’d stick to maya.cmds, maya.openMaya and maya.api.OpenMaya (or API 2.0).

Sorry if this is late but 3D Motive is an awesome resource for learning the full Maya Rigging workflow as fast as possible. Here is one tutorial i learned a lot ranging from IK,FK, Skinning, control handles etc: http://3dmotive.com/series/the-bipedal-rigging-series.html

Although the tutorial is slightly dated and based on Maya 2012, it still applies to this day. Plus, newer versions of Maya hasn’t really changed much either.

I’m not adverse to recommending pymel, as it provides a decent bridge between cmds and the API. Its certainly not perfect, but it is completely usable and unless you’re doing a lot of work on components you’ll rarely if ever hit the speed issues it can introduce.

The developer of the Carcoal Editor does have a lot of free videos on vimeo. They are good food for inbetween.

I recommend to jump straight to python 3.
There is a lot comming next year.

Also have a look too cgcircuit.com tutorials. I learned a lot from this one --> Iintro to Pymel
Hope it helps :slight_smile:

Are set driven keys really used as much in Maya as I am seeing in this tutorial (done in 2013)? We avoided them like the plague in Max because they were slower than script controllers and custom attributes.