

NET and C# are all Microsoft's gifts designed to sow incompatibility in the marketplace. Unity decided to focus on Microsoft's standards first: DirectX and.

If you know latin, you'll understand why I call this a sinister plot on behalf of Microsoft. However, it had the intended effect: game developers who wanted to sell for Microsoft platforms found it to be enough of a pain to support both left- and right-handed math, that they stopped trying to make games that were cross-platform compatible. It broke with all the traditions of OpenGL, SGI, and even traditional mathematics in general. It was an arbitrary decision with deep impact, as you see here. Ultimately, Microsoft wanted to differentiate themselves from the competition and set some standards, so they chose to go with a left-handed system for Direct3D (an early part of the DirectX suite).

For example, electrical flow and magnetism are described in textbooks assuming the user will work with the right hand rule. They follow centuries of mathematics tradition that came from observing the natural world. You can't fix this distinction with a simple "rotate ninety degrees" because no combination of rotations will align the two systems.īlender and OpenGL use a "right handed" coordinate system. The upshot is that if you asymmetrically scale an object (as opposed to its vertices) in Blender, then Blender and Unity will come to different conclusions about the normals that should accompany that shape.There is a fundamental difference between Blender and Unity's coordinate system, which incidentally is the same fundamental difference between Microsoft DirectX and OpenGL.

All Blender did was bake that distortion into the bones. In short, Blender hadn't distorted the mesh at all - I had, right at the start. However, it seems that at some stage in the Blender->FBX->Unity workflow, the ability to cope with asymmetrically scaled normals is lost. This obliged Blender to similarly apply an asymmetric scale to the bones of the armature when parenting the rig to the mesh, in order to preserve its appearance. I tracked down the cause: in the very first edit I had made when sculpting the model (after adding and subdividing a cylinder primitive) I had accidentally scaled the object rather than the vertices to make the shape longer and narrower. I'm only accepting this answer rather than Aster17's because this answer explains what happened in this specific case in more detail. EDIT: The video posted by Aster17 includes a step correcting for object scale prior to export, along with many other steps, so refer to that for your exporting needs.
