"bilingual" rigs that work in Maya and Max?

I’ll be starting on a new project for a team that prefers Max (yet to budget for Maya), but who outsources work to a Maya studio. They are hoping for a “bilingual” rig/Control solution that would allow both studios to work on the same assets. Ultimately the game assets will be FBX files. I’m trying to find the wisest solution, so I’m appealing to the collective wisdom here…

My personal preference would be to strictly use Max for their modeling (a comfort zone for them) and embrace Maya 100% for animation (a comfort zone fo me,) but they may not have the will/$ to do it.

My first impulse to this “bilingual” rig problem was to declare the FBX file the “master” file to load from/save to. But I haven’t worked too much with FBX, and I’m not sure what kind of rig controls (curves, or?) can be retained and reliably imported to both Max and Maya.

Has anyone worked in a similar situation, needing rigs that support both Max and Maya? Any solutions I should explore?

Or is it considerably wiser to insist on a ‘model in Max / animate in Maya’ workflow?

It kind of stinks no matter what, since youve got to nearly double your workload to support both packages.

It’s very frustrating to attempt any kind of bi-directional workflow in which data gets round-tripped fom max to maya and back – the process is irritating enough if you have just geometry to worry about; if you also have things like custom object types or data stored in attributes its wonky in the extreme. Material settings are hard to coordinate, and sis skinning – if people are trying to modify skinning weights on both ends at the same time, its going to be a lot of work for little benefit.

You can probably take work from outsource animators and import it into max as baked animation data – but you should assume it’s going to be like working with mocap. Trying to create a real rig that has the same controls and meanings in both packages is a fast trip to crazy land – even after all this time the FBX guys, who are supposed to that for a living, can’t do it reliably.

If you really have to do this, I’d try to export skinned characters from max to maya as fbx’s and then have the outsources create a rig that animates those. They return a new fbx of animated bones, but with no rigging data and the skins are intact; import the fbx into max as if it were mocap and then work with it accordingly (animation layers, assume that rotations have have gone euler-flip crazy, data on every keyframe, etc).

If your engine reads fbx’s directly the whole thing might be easier – it’s at least conceivable that they can export animations and see stuff directly themselves without sending things back to max for re-export.

You’ll need tools to make sure that the skeletons match up on both sides – don’t want animators working on bones with bad names or accidentally reparented. Also tools to completely take away user options on the fbx import-export size: get unit scales, time scales, axis orientation, etc correct once and then don’t let users touch it manually…ever!. You’ll also need a system to track when base models have changed in ways that might require re-exports (and which knows what files need to be re-exported) Maya 2011+ lets you reference FBX files; I have no practical experience with that but it’s certainly worth investigating as a way of keeping the problems all in one place.

Minor hassle will be textures, if the animators care about those, you’ll need to work out a system for giving them proxy textures so they don’t get a zillion missing texture messages every time (or, have your max > fbx > maya pipeline just strip the textures on export since they don’t really need them – that s a cultural thing, if the animators really demand it you’re in for a lot of extra noodling).

Make sure you know how the engine binds animations to characters in-game – if it’s a name-based thing the check is easy (but of course, it will break all the time because of maya’s habit of renaming stuff). if it’s attribute-based, make sure to test the pathway thoroughly since fbx likes to rename attributes.

sigh

If it’s culturally possible, it’s safer for the long run to use just one package. It’s certainly easier to build the whole pipeline in Maya and let modellers create geometry in max and import that for final prep / export, or to support static FBX model export from max… Geometry is easier to support on two ends than animation, so build around the animation problem.

I’ve never seen such a system work that didn’t require baking the animation onto the rig when you move between packages. I’m sure you can develop something that doesn’t require it, but it is going to be a steep hill to climb. Autodesk is all about cross package compatibility now, so you might want to look their website over or give your site rep a call.

Thanks for the feedback. I will push for keeping the post-modelling pipeline with Maya as much as possible.

I’ve never done it or seen it, but once you have both rigs working on both packages, sending animation to one to the other would ‘just’ be a matter of exporting the animation curves, with keys and tangents, into some format which could be read by the two programs (after developing a tool for that), for example XML. Having to build and support a rig into two different softwares might be a pain in the ass, but depending on their complexity it could be done, I guess…

You would have to set up your Max rig in a way that is similar to Maya. Max has multiple animation controllers that can be used for animation. If you use a quaternion controller, you’re going to have more difficulty (to say the least) than if you use Euler controllers that have all been configured to closely mimic Maya. Add to this the difficulty of ensuring that tangents appear identical as you transfer data, and you have another issue to solve. It might be solveable, but it is a lot of work. I have a feeling that unless you can find a perfect match in Max for the controller you use in Maya, you are going to have some fidelity loss as you go back and forth (at minimum). If you use biped in Max, heaven have mercy on your soul…

Maybe, just maybe, you could pull it all off with a rig that was 100% IK on both ends. Then the only transformation you need would be the max to maya transform on your control positions. However I would not lay odds on being able to get a rig that was completely input-for-input compatible on both packages and also any fun to animate with.

After all the point of the excercise is suppose to be leveraging the different strenghts of the packages. Insisting on interoperability limits you to the lowest common denominator.

Very succinctly put. Considering I’ll also be delving into Max script for the first time It seems like asking for unnecessary trouble to tackle the “bilingual” problem.

If you’re already good with Python, you should look into the Max Python plugin to minimize extra code costs (although you’ll have to be good about organizaing your code base!)

I think our own Adam Plechter has some experience with Max python, I’ve never used it for more than ‘gee that worked’

Option 1: You have skilled Animators that know how to animate in Max. Show them Maya and they will become even better animators.
Option 2: Your animators are not skilled animators but know how to animate(“place keys”) in Max. Show them Maya and they will become better animators.
Option 3: Your animators are not skilled and don’t know how to animate in Max. They shouldn’t be animating at all, but might as well do it in Maya if they have to.

well I started the new gig, and it turns out we’ll be going 100% 3ds max. time to ramp up…

Do not use biped no matter what anyone says. It is a Frankenstein’s monster.

You can make Max act like Maya to a great extent. Remember that since you can assign different animation controllers, you will probably want to figure this bit out early. The safe answer if you are going to try to do things Maya style is to use Euler controllers. You will get the downsides such as gimbal lock, but you also can key each channel individually. With the default quaternion controllers, you don’t get gimbal lock, but you have to key all your pseudo-channels at the same time. This will drive a Maya fluent animator crazy. If I want continuous linear rotation on one channel, but fragmented stop/start rotations in another channel, it will be a pain in the butt with quaternion controllers.

I’ll let you poke at the humanIK/filmbox stuff to see whether that is applicable. It is always tempting to try it, but our teams have always had specific needs that preclude it.

Also, the hyperstack in Max isn’t nearly as flexible as the connections/hypergraph/history in Maya, but it is much more straightforward and understandable.

Good luck Mr. Bond.

Right now I’m ramping up on no-frills bone rigs in max.
we have a rather strict bone count.
What about CAT rigs? worth looking at?