We have a team of pretty experienced guys trying to do a project where we let different depts use different ADSK products (Max/Maya/XSI/Mobu). FBX and ‘send to’ was sold to us as a solution, but we are really just hitting some frustrating walls.
I understand there’s a lot that FBX doesn’t transfer, but in many situations, joint weights don’t come through, animations doesn’t come through.. Whether you are using FBX or ‘send to’, a skinned mesh shows up in the other app with no skinning or animation.
Open a Maya skeleton in Max, then back to Maya and all joint orientations are borked. (Probably because max doesn’t have a joint offset matrix.. not a difficult thing to fix guys). OBJ has become our mesh transfer format because FBX just triangulates at will, this is ultra frustrating when the file format borks the artists work.
Seriously? OBJ? The whole industry is still clinging to a format that doesn’t even have a pivot?
ADSK, you own this format and all the apps, please fix this stuff; or don’t sell it as a solution.
We’re sorry that you’re having difficulty with the tools. I will try and address some of the issues you are bringing up in your post. Before I do, I just want to put up a reminder that if you haven’t done so already, you should download the latest version of the plug-in, 2012.2 at the following link: http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=10775855
You refer to the transfer of skinned meshes being broken. If you are finding that the Send-to feature is not working for your transfer, you can try to export as FBX. The Export has different, customizable settings than the one-click. Under the Animation tab, you have to make sure have the following:
1. “Deformed models” is checked
2. “Skins” is checked
3. Further down, you’ll see “Contraints”, make sure this is checked if you have any sort of Constraining going on in your rig.
I’ve run through several tests using custom rigs, rigs from clients, and HIK rigs and they are all working correctly for me, through the Send-to feaure and the Export to FBX. If you send me an example of a file that is not working, I will be happy to try and find an answer as to why it’s not working for you.
As for the triangulation, it can happen if you are sending Max primitives through the Send-to feature to Maya. You can avoid the triangles by doing the following:
1. Convert your geometry to Editable Poly
2. Use the Export to FBX
3. Make sure to uncheck “Preserve Edge Orientation”
This workflow should give you the quads expected when importing into Maya. Another important thing to remember is that, if your geos are Editable Patches, you will lose any deformation information because the plug-in does not support Editable Patches.
If none of these solutions help, give us some step by step instructions and the versions of the software you are using to that we can help you get past your obstacles. There are limitations with the plug-in and Send-to workflow, but what you are describing should be working.
- We have a character in Maya, all joints zeroed out
- Bring in mocap data from the outsourcers (FBX from MotionBuilder), just import animation from FBX - importing nothing else!
- Expectation would be curves are loaded, but no.. seems the FBX importer butchers all joint orient matrices of our Maya character, without our knowledge!
Does motionbuilder not have a joint orient matrix or way of zeroing out orientations?
In your linked PDF file I see a green checkbox saying that ‘skeleton nodes’ have ‘perfect compatibility’ between Maya and MotionBuilder. Is there something we are doing wrong?
I have a few of questions:
When you say “Bring in mocap data”, do you mean that you have the exact same character in MontionBuilder as you do in Maya, and you are just transfering the animation from one software to the other?
If this is the case, then you should not have any problems at all. When you are importing the FBX file into Maya, you only need to select the root of your character in Maya, and import the MotionBuilder character using “Update Animation” as the File Content in the FBX options menu.
If this is not the case, meaning that the skeleton in MotionBuilder is NOT the same as the skeleton in Maya, then you need to proceed differently. You have to first import the FBX file into Maya using “Add” as the File Content. Then, using the Human IK Took, you retarget your Maya character to the MotionBuilder character by setting the MB character as the Source for the Maya one.
(You should know that you cannot work with marker data, or raw mocap data in Maya. You need to process it in MotionBuilder, bake it to a skeleton, and then bring it into Maya using one of the methods mentioned above.)
Something else to consider is the Quarternion interpolation mode. This is a setting found in the options section of the Import FBX menu. Usually, using the default Resample as Euler interpolation is fine, but I am mentioning it here just so that you are aware of something else that could be checked. For more info on the Import options, you can find it in the docs here: http://download.autodesk.com/us/fbx/2012/maya/index.html
If your skeletons are not the same, and you are not using the HIK Tool to retarget, how are you retargetting your animation?
To answer your question about rotations on MotionBuilder, there isn’t a method to “Zero Out” the values as in Maya. But, the plug-in designed to compensate for this fact. I have run tests with skeletons that have Pre and Post rotations in MotionBuilder and they transfer correctly into Maya.
Finally, if you like, you can send me your character and your animation file. That way, I can see if I can duplicate your problem here and find a solution for you. If you don’t want to post your files online, you can send them directly to me through email. Whatever we receive is considered confidential and private, not the be shared. (Please include the version of the FBX plug-in you are using)
As usual, if you have anymore questions, let us know.
What’s the up axis in your test scene? Our Maya is Z-up. I had said that simply loading the animation from the same skeleton from Mobu blows away our joint orient matrix, that doesn’t repro on your end?
The skeleton in Mobu was generated from Maya, they are the same.
**Sorry, my previous post was thinking that you were exporting from Maya**.
If you are exporting from MotionBuilder and you are working in Z-up in Maya you will run into problems. If you are going to work with HiK Characters in Maya from MotionBuilder, then the reccomendation is to stay in Y-Up. There is presently a limitation with the plug-in where HiK characters cannot be converted to Z-UP if they are defined as HiK. There is also no way to change from Y-UP to Z-UP in MotionBiulder.
One workaround that I might suggest, and I don’t know if you can use it or not depending on your pipeline, is to bake your animation to a skeleton in MotionBuilder, and when you import into Maya, go into the Import options and under Animation, set Skeleton Definition as: to “None”. Your character should be animating correctly.
ps. Excuse the long winded posts above, I usually ask for more precise details before answering questions, I was trying to give you all the possible solutions I could think of. Giving us pieces of information such as the up axis in Maya helps us get to the heart of problems quicker.
CarlosC, these forums have become an excellent source of information, thank for you for your time and responses, even if they are not as precise as you want.
I’m happy that you are finding these forums informative. The FBX plug-in is a really great tool, but as with everything else in the 3D world, there is a learning curve and I’m happy to get as much information out so that usres can get the most out of it.
thank you for your replies.
I would like to shed more light on the situation by giving more details.
We have a skeleton built in Maya in Z-Up.
The skeleton is transferred to MotionBuilder - characterized and animated.
We bake the animation to bones and transfer the animation back to Maya.
HIK or FBIK is not used in Maya.
Now the animation looks correct, but the rotation values in the channelbox are completely different since the mobu to maya sync changed all the joint orients
(attributes: .jointOrientX, .jointOrientY, .jointOrientZ)
Since the joint orients were changed the channelbox values and anim curves are compensating the differences and now we cannot just set all joint rotations to zero to get back to default pose. The skeleton will look wrong.
And the main problem is that we have direct connections from joint rotations to node networks to calculate secondary animations (percentual rotations, ...). If the angles in the channelbox are suddenly completely different all our driven joints break.
Maybe this helps to get a better understanding of what we experience with sync between MotionBuilder and Maya.
Hi again pyralab,
I am not 100% certain, but I have a feeling that what is causing your problems are those “direct connections from joint rotations to node networks”. (I assume these are expressions?)
What happens if you remove those “direct connections” before re-importing anim, and try to reach the bind pose? Does the skeleton still break?
In my latest test, I saw that when I re-imported my anim back into Maya, all my Joint Orient values were reset to zero where in my original set-up they were not zero. Is this what you mean when you say “but the rotation values in the channelbox are completely different since the mobu to maya sync changed all the joint orients”?
(Although, if I choose Skin>Go to Bind Pose, then reset all my Joint Orients back to original values, my skeleton is not broken. Even if I select my skeleton and say Skeleton>Assume Preferred Angle, my character reaches the T-Stance without incident. This is why I am inclined to think it is those special connections.)
Is it possible for you to only apply these “direct connections” after re-importing the animation? Perhaps through a script to re-attach the nodes?
Let me know what happens when you try and import without the “special connections”. If these connections are the problem, I can try and find someone to bounce a question off of, but the principle dev is away for the week so it may take some time.
I saw that when I re-imported my anim back into Maya, all my Joint Orient values were reset to zero where in my original set-up they were not zero.
This is what I meant by: “all joint orientations are borked.”, sorry, Harry has more eloquently described the issue, I was just a bit frustrated above.
Almost all people zero Maya skeletons, the fact that majority of Maya skeletons get their skeleton orientations lost just when travelling through Mobu, to me, this is why I said ‘not a solution for simple work’. Definitely not ‘perfect compatibility’ like the PDF describes. :)
Thanks for your time Carlos, please let us know about any solutions, we would like to use Mobu, but because FBX isnt working well to get data between we may just drop it out of the pipeline unless we are cleaning mocap inhouse.
I just exported a simple Y-up character with FBX export option Y-up and Z-up, both files open in a Z-up Maya with him face down on the grid. Are you guys sure than the export option of up axis is read and applied correctly based on Maya’s up axis? The import option of axis is removed because the docs say it is now ‘automatic’.
Hi Carlos, we just spent a few hours on this lockInfluenceWeights stuff. Could you pleeeeeeease explain to myself/others the liw shortname issue with Maya 2012 and FBX, I see this was fixed in 2013, borked FBX/2012 Maya files now load and can have their weights edited in 2013.
Thank you guys so much for fixing that, but what is the issue? I see the mel loop of getAttr for ‘liw’ in the tool, I also understand that liw doesn’t exist in the MA but is generated at runtime. Could you or someone who knows explain the issue, if we knew what was happening, we could offer a solution probably.
Just wanted to update this thread and tell you that I’ve forwarded your question to the people who should be able to give me an answer. I’ll post the results as soon as I get them.
Maya allows dynamic attributes to have two names: a long name and a short name. For example, the attribute mentioned in your post has a longname of “lockInfluenceWeights” and a shortname of “liw”.
In 2012, FBX was only saving out the long name so when the file from FBX would come back into Maya, the short name was lost and so any scripts in Maya that referred to the short name would fail. There is no way to know when Maya will use a shortname, or when it will use a longname without going into every Maya script and seeing how that particular script works.
Since we (FBX) did not store both versions of the attribute names (always the long one) we made an exception for the liw. So that is why it is currently working in FBX 2013.1.
If you have FBX files saved in .ascii from 2012, you could manually go in and replace all the longnames with the shortones.
We are having more issues, FBX files are coming into maya with multiple UV sets that look like this. This file went from Max to Maya, any idea why there would be 3-4 UV sets looking like this?
Hi again Pangloss,
Can you tell me what exactly you are trying to accomplish? I.E. Are you expecting to see get a sphere with more than 1 UV set in Maya? Also, what are the steps that you did in Max? For example, are you working with an Editable poly in Max and assigning multiple UVW Map modifiers?
I don’t have enough information to help right now, any details you can give would be great.