[BUG] FBX Importer broken (binormals/tangeants)

I already did in the past (with the UDK betas) a long search about this problem, I detailed it in two places :
->Polycount thread and on my blog
->froFBX exporter

Here is my test inside the UE4 :

fbx_bug_maya2013

As you can see the bug is still here (the mesh named “blender” is correct). From what I know, since Maya 2013 Autodesk changed the way they compute the tangents on their polygonal meshes, which is probably why the UE4 always broke the mesh imported.

This problem also affect the skeletal meshes. If I import a skel mesh and let the editor to compute my normals, I will get a faceted mesh, while if I import my normals I get what I’m expecting (in UE3/UDK my mesh imported was not faceted).
Here is the skel mesh if you want to test by yourself : Download “rig_body.fbx”.

skeletal mesh


Bug Report:


Build version: 1623704

Install Path: C:\UDK\\Rocket\

Specs: Win 7 x64, 16 GB, GTX 470 (Drivers 301.42), UAC off


Description : The Editor doesn’t read properly the normals/vertices in a FBX mesh exported from Maya 2013 (with the FBX plug-in 2013.1 or even 2013.3) and break the vertices count. (This is also true for Maya 2014.)

Repro Steps : Download my test mesh (obj file), import it in Maya 2013/2014, export the mesh as an FBX file and import it in the UE4 Editor.

Expected : The FBX Importer should read properly the vertices count registered by Maya and should import the FBX as it would do with 3DS Max 2012 or Blender 2.63.

Screenshot : see above for the UE4 bug, see my blog for the UE3/UDK bug.

Well I wouldn’t say the importer itself is broken. If I set it to import normals the model always imports fine. However if I set it to calculate the normals I get a faceted mesh. I am using 3DS Max 2013 and it is the same situation. So maybe it would be better to make the import normals the default option, rather than recalculate normals.

Well, I say it’s broken because with the UE3 editor, if you import a mesh and let the engine to compute the normals, it gives you normally a mesh with one smoothing group (averaged normals), while with meshes created with Maya and now with the last FBX version (both Maya and Max) it breaks all the normals and gives the faceted look.

Yes the calculate the normals option is broken. However you made it sound a bit like importing normals is broken too. ^^ Especially since the repro steps don’t mention changing the setting to calculate the normals. Anyway I get what you mean now, and I got confused when importing my first model as well.

I did some new test and it looks like I had some problems with my geometry. In the end the mesh imports fine. So it’s looks line the pipeline is fine, yeah ! :smiley:

I don’ think the calculate normals option is broken. Calculate normals uses smoothing groups to find faces that are smoothly connected. The file you provided has 0 for the smoothing group in each triangle which is not a valid smoothing group (Smoothing groups much match at least one bit in a binary AND or else they arent connected. 0 & 0 is still 0). Please note that Maya doesn’t use smoothing groups so when you import into Maya it recalculates the normals differently which is why it looks correct in maya. I also have tested this in UE3 and it functions the same way and the mesh comes in faceted. The large vertex count difference is because we cannot share any vertices across triangles when every edge is a hard edge. In this case you get 3 unique vertices per triangle.

I’ve seen this happen when importing OBJ files without smoothing groups into Maya. Once I export your mesh again with the “geometry->smoothing groups” option checked in the maya exporter dialog, it comes in fine.

That’s strange, I always had the option “Smoothing Groups” enabled in my FBX exporter. I can guarantee that my meshes are fine under Maya. I’m also not the only one that get this problem. (Also I don’t import meshes in Maya, I create them from scratch in Maya and export them as FBX file.)

My export options are : Smoothing groups enabled, Split per-vertex normals disabled, Tangents and Binormals Enabled, Triangulate enabled.

I have tested it again and I get a wrong polycount. If the fault is on my side I apology, but I checked again and again, something is probably missing in your explanation I guess.

What are the differences in poly count?
The vertex count in Maya is not guaranteed to be exactly the same as the imported version. Vertex count is determined by how many unique vertices we have to create. This depends on normals, tangents and binormals, all uv sets , and color. If two or more triangles share a vertex at the same position but any of these are different then there will be a new vertex created. Maya doesn’t display this information anywhere to my knowledge.

Ha sorry, I was comparing my mesh exported from and Blender and my mesh exporter from Maya when imported in the editor. Like what my first screenshot is showing. The only vertex count difference I can get is when I keep my normals AND my tangents when importing, but the vertex count is still too high to be correct.

I can record a video of my current process and host it on youtube (as a private video) if you want.

I did a new series of tests to be sure. I fixed the problem on the “x letter” mesh (it was my fault, under Maya I forgot to soften the normals), however I have an other mesh that is not working correctly.

The second mesh is a multi-material mesh, under UE3 it gave mesh 9930 vertices if the mesh comes from blender, while I get 12267 from Maya.

With Rocket I get a little change, but there still a difference of polycount : 10796 vertices form Blender, 12834 from Maya 2013.

I used the same export options as above, I checked to be sure that my normals were soften and locked in Maya before exporting. I don’t understand why I get this difference.

download test mesh

alt text

alt text

For the difference in vertices I’m guessing that Blender is just welding some vertices together, which your Maya isn’t doing by default?