Ah yes this problem. I am happy to say I have finally figured this out. I have had the EXACT same issue. It turns out there are a few issues at play. I will eventually create a very clear and comprehensive explanation for this but for now, here are some notes:
Main issue: Unity uses a left handed coordinate system. Max & Maya use a right handed coordinate system.
A note about 3ds max: There is an issue when exporting to FBX from 3ds Max where children of the parent object are rotated 270 degrees about the x axis. There is no way around this - Don’t use max to export to FBX if you wish to have objects and their children to be aligned properly! If you need to use MAX, export to FBX then import this max exported FBX into maya before exporting to your final FBX for importing into unity.
FYI: Unity doesn’t look at the up axis property in an FBX. So, if you select either Y or Z during your fbx export in either maya or max, there will be no effect when importing your fbx into unity. Also, theres an option on maya (i believe max has it too) that allows you to specify the up axis. this is not a solution either. In fact, it just rotates the object.
There is a formula to convert from one coordinate system to another - flip, or mirror, one the axis (this is not simply a rotate!). However, you don’t need to do this because there is some sort of conversion being done when unity imports an FBX. That exact transformation that takes place isn’t important.
The solution: If you are starting out in maya, create your model in its proper, right handed orientation. If you are creating it in max. export to maya then orient your model in its proper, right handed orientation.
For example, if you have a person model in Maya, The person’s face should be pointing forward in the Y+ axis direction, the right shoulder is pointing in the X+ axis direction, the top of the head should be pointing in the Z+ axis.
When you are ready to export:
Reset your transformation matrix: Select Modify->Freeze Transformations.
Apply a 180 degree rotation about the Z axis so your character is facing in the opposite direction.
Then rotate the model by 90 degrees about the X axis.
Reset your transformation matrix again.
Import into Maya: you will experience a 270 degree rotation about the X axis on the parent object but thats ok since the children aren’t affected. just reset it to 0.
Voila, your character will be properly oriented in the left handed coordinate system: z+ is forward, x+ is to the right, and y+ is upwards.