Why are Max rigs so much slower than Maya rigs?


I don’t understand it, Just about every rig I’ve used in Max has always been kind of slow, where as the rigs in maya, are usually pretty quick. Anyone know why?

Are there any tricks you guys can offer to speed up Max rigs? I suspect the Skin modifier has a lot to do with it. Thanks


Actualy the skin modifier in Max is faster then that in Maya and XSI. As for rig speed well that always was a problem mostly due to redunent calls in many of the rigging tools. Over the last couple of years all that has been cleaned up, at this point there is no reason why you should be seeing slow downs in Max rigs. Just like in Maya there are ways you should and should not build a rig.

What are the rigs like that you are using that feel slow and did you build them or some one else? If you did then what tools have you used to drive all the parts?


I don’t know, maybe I’ve just had bad luck. Last year I skinned my character to the biped, and used skin morphs for corrective deformations, and the morpher modifier for some facial animation. It seemed quick enough till I’d been animating for a while, then all of a sudden it was taking me 4+ seconds to set a key on all the biped parts (this is in max 8 mind you)

The last two characters I’ve made, I’ve used Brad Noble’s rig for the body, and then I used the reaction manager to hook up the floating UI for facial animation. It seems like the slowest part is setting keys. For example with Nobles rig, when I select all of the controls and key them, there’s a 3-4 second lag on my system. Yet I never have this problem in maya when keying controls

For the character I’m currently working on, I built a low poly proxy mesh, that I’d use to animate with, to try to compensate for the slow rig, Unfortunantly it didn’t seem to help much. So I tried disabling the skin modifier, and that didn’t make a huge difference either, but if I DELETED the skin modifier all together, then it sped up the rig considerably. Granted there is a lot of geometry in the scene (400,000 polys), but I didn’t think it would matter since it was hidden.

I guess what I’m after is… what are the things NOT to do when building a rig?

-Does adding more bones than is neccesary to the skin modifier slow things down?
-Does having a lot of HIDDEN geometry slow things down?
-Should I not be using the reaction manager?
-Would it be a bad idea to save out the skin weights and then re-load the skin after animation has been completed?

Sorry, I know that’s a lot of questions. Any help is appreciated =D


400k polys is a lot for a scene to handle, especially with animation data being pushed onto a rig system. For that sort of scene I’d recommend using a proxy rig, and have your high-res skinned model in another scene and transfer the animation data to it for rendering. Just a thought.

I have experienced the slowness though, but I’ve also experienced it in Maya too! :slight_smile:


Okay well in that case, what’s the best way to go about saving and loading animation from one rig to another?

I’ve used File>Save Animation feature before, but it burned me once by tranfering all of the animation except for one arm. Maybe I wasn’t using it properly, maybe it was a bug in the software that’s since been improved? at any rate, I’d love to hear what kind of experiences others have had


Well you have a few things going against you. First off Brads rig is old and has lots of old methods working in it, I’m basing that on the last time that I looked through it for one of my students.

Second having skin morph turned on while animating will slow down any rig in Max or Maya. Turn it off till render time so that it doesn’t have to calc in the viewport.

Reaction manager is the slowest way to connect values due to the curves that it has to calculate. This also is the same in Maya with set driven key, for the most part good Maya TD’s will not use SDK’s for this reason and others in major productions. If you can use a wire params you should and or instanced controllers.


please delete


I agree completely with paul, Its the way we build rigs. I have seen a good number of rigs which are very fast to animate, i have always optimised the scene by hiding the unwanted controls, organise the objects in layers, having a lo-poly version of the original mesh etc…it helps a lot to quickly start working on the scene instead of constantly have to catchup with our creativity.
Some times it the workflow we follow which makes it hard to go in the flow of our thoughts.
Actually Max and maya are kinda feels the same for me since i have optimised my workflow according to my way ( shorcuts etc) makes it lot faster to work on both.


I’ll just chime in here on a slightly defensive note to say my rig does have its slow moments but I think it’s mainly due to the trackview. Creating keys using the key button and/or dopesheet is very fast but with the curve editor is very slow.

The way max seems to work with its rigs is that when you scrub the time slider, the connections are cached to facilitate smooth scrubbing of your animation. However, when you adjust the keyframe values in the trackview, the calculations are performed from scratch again and again for each new value. It feels like there are some major inefficiencies going on when you can adjust the position of the waist of the rig in the viewport in real-time, but moving those position keys in the curve editor chugs.

The way maya works with its rigs is that calculations are all made when scrubbing, transforming and when adjusting key values but the connections move through a more straightforward hierarchy of connections (when made well) making it quicker to calculate.
The result is that in maya, if you have a complex rig, how fast it is to scrub is how fast it will to be to manipulate across the board. While in max, for a complex rig you’ll always have quick scrubbing playback but adjusting keys in the curve editor will be painfully slow.

This is all of course without adding on extra mesh deformation things like skin modifiers, skin wraps, skin morphs, etc. Keeping your scene poly counts low for animation is a basic must, but also keeping your mesh deformations simple and/or being able to be turn them off when you don’t need them is important.

Regarding that last line, archanex’s point about deleting the skin modifier is an issue that’s annoyed me for years. Skinning a character slows down a rig, but if you hide that character, the skinning is still calculated and even if you turn the skin modifier off, it’s still calculated! This is unlike maya where if the skinned character is hidden, the playback speed is increased.

Max has some great rigging options but is constantly let down by its slow animation handling. The example I use is: create 100 point helpers, put some position animation on them, open up the trackview in curve editor mode, move all their keys around with interactive update turned on and it’ll chug. Do the same thing in maya with 100 locators and it’s real-time.


P.S. Paul’s point about avoiding the reaction manager and using wiring and/or instanced controllers is bang on the money.


Hey Brad, I hope that you don’t think I was ditching your rig. I just remember seeing some old methods in the one that I was looking at.

As for your test with the point helpers I have just tested this in Max 9 and I don’t see any slow downs at all. Same speed as it was in Maya. What version of Max are you seeing the slow downs in. There has been a great amount of work done in these areas over the last several versions.

Part of the old issues came from redundent calls. Like script controllers that were being called 20 times when they only needed to be called once. There were many little things that were adding up once a complex hierarchy was trying to be calculated.

At this point the only minor slow downs I see in rigs are with spline based systems as there appears to be slow downs in the splines them selves. To get around this I script a quadratic curve that drives the spine or tenticles in a character instead of using Max splines. A pain but I’m hoping that it gets corrected soon.


Okay so reaction manager is slow - say I wanted to use a wire parameter method instead of using the reaction manager to set up the face GUI. The way I have it set up now, the there is a vertical shaped rectangular slider, with a zero point at the bottom. There is a separate circle shape that is used as the master control, When you move the master control to the top of the rectangle, it drives the morph target to 100%. So my question is how could I do this type of a thing using the wire parameters? I want to be able to align the master control to the zero to zero out the morpher. In my experience, you can get sort of close, but it’s hard to be precise with expressions, (though my knowledge of expressions is pretty limited)

Secondly, Brad, have you or anyone else tried deleting the skin modifier and then loading the skin weights back on after animation was completed? I’m considering using this technique, I’m just a little nervous that something may not line up correctly when I go to put the skin back on. I always Key all the controls at frame -10 so that it’s easy to get back to the skin pose, but it seems like by the end, that always gets altered slightly… probably just me


Brad what tests have you done that show that Max skin is still calculating when it is turned off? I would like to test this as I’m not seeing it in simple tests.


interesting thread, i always tought of max rigs as kind of slow but im not an expert at all, anyway a friend of mine, animator in PDI came to visit us a few months ago ( ilion, where i work) and he was pretty amazed on how fas our rigs are, using max…so i guess they are not so slow anymore? dunno…also i feel that handling the uv´s of a dense mesh in max is so much slower than i maya…still in max2008 is still slower…whatever!


I’ll do some tests when I get a hold of a machine with maya 8.5 and max 2008 and get back to you.

BTW, that 100 points/locators test might have been 1000 instead. I do remember doing it recently in maya 7 and 8.5 and max 8, 9 and 2008.

archanex: I do remember a few years back, we wrote a script for a project that deleted the skin modifier when it wasn’t needed and added it and reloaded the weights when it was. It was written basically because of the skin modifier slow-down, but that was a few years back - probably in max 7 days. But I haven’t found there to be any speed increases in current scenes where the skin modifier is turned off. Once again, I’ll do some tests to get to the bottom of it.

On a side note Paul, you’re right, the skeleton rig used to use #node for node storage in the CAs. Now it uses #maxobjecttab and is much quicker for it (but still not as real-time as I’d like).


ah those pesky zeros!

actually I just did this test with 100 locators and 100 point helpers respectively, I put both position AND rotation keys on them, and as Brad was saying, Maya totally wins in this test

I had both max 9 and maya 8.5 open simultaniously btw… this was on my E6600 Core2Duo machine with a QuadroFX1500 and 4 gigs of ram, for all that’s worth

Brad: What are the chances of getting a hold of that script?


I don’t believe that Skin is having this effect at all. I believe in my talks with Peter that skin was not the issue and there were others things that were causing it. These have mostly been corrected at this stage but I will try that point helper speed test again with 1000 and see what happens. Track view has always been slower then Mayas that is for sure.


Archanex: I think that script has been lost in the sands of time (ie. it didn’t get moved over with the last couple of network server changes) and was pretty bespoke to the project it was made for. Sorry.


From some inital tests with max trackview curve editor with 100 points with position keys on them all, it’s seeming to me that it’s not really the calculation of the movement of the keys that is slow in this case but the actual display of the 300 curves updating. It has the same update speed regardless of whether you’re moving the keys with interactive update turned on, turned off or even if you’re not moving the keys at all and just panning around in the key window!

I must say that I was wrong about the skin modifier playback issue as here are the results of some tests of the playback speed of an animated scene with two (skeleton) rigged and skinned characters (no morphers, skin wraps or skin morphs).
Computer used: 2 Ghz core 2 duo, 2 gb ram, geforce 7900 GS.

3dsmax 8 (d3d):
Lo-res skinned mesh with skin modifier on: 9 fps.
Lo-res skinned mesh with skin modifier off: 16 fps.
Lo-res skinned mesh with skin modifier deleted: 16 fps.

Wireframe box bones with skin modifier on: 15 fps.
Wireframe box bones with skin modifier off: 15 fps.
Wireframe box bones with skin modifier deleted: 15 fps.

3dsmax 9/2008 (d3d):
Lo-res skinned mesh with skin modifier on: 6 fps.
Lo-res skinned mesh with skin modifier off: 10 fps.
Lo-res skinned mesh with skin modifier deleted: 10 fps.

Wireframe box bones with skin modifier on: 10 fps.
Wireframe box bones with skin modifier off: 10 fps.
Wireframe box bones with skin modifier deleted: 10 fps.

The skin modifier issue seems to have been fixed from when the problem was first noted. I’ll try not to shoot my mouth off so soon next time.
The big thing I found is that performance speeds with deforming meshes in max 8 are better than max 9 and 2008 (at least on this computer). The latest release may handle large poly counts better but it doesn’t seem to have flowed through to deforming meshes.



interesting…it could be cool to see some comparisons of skinning speed between max and maya, both using the same mesh and same bone structure ( with the same number of joints etc…) maybe using fbx we could export to maya the same test than in max?


I just may be able to provide that as I’ve made my rig as a maya version (though I don’t think I’ll be releasing this publicly any time soon, if ever).
I can say in my first rough tests with it that it’s almost as fast, if not as fast to playback in maya but it’s much faster to edit keys with in the graph editor. This is comparing a straight skeleton rig in max to the equivalent rig in maya. These are rigs without any skinning/mesh binding and there are some discrepancies in terms of number of twist bones on the limbs which will make some difference.
I’ll try to import a character that I have rigged in max into maya, bind the maya rig to it and see what the differences are.