Understanding tangent and binormal workflows between programs?

polycounter lvl 2
Offline / Send Message
jordank95 polycounter lvl 2
Am I the only one who can't seem to wrap my head around tangent/bi-normals and when to "recompute"?

What I understand: different programs interpret tangents and bi-normals differently, so it's best to recompute the tangents and binormals each time you import a mesh into a program? And Mikkt space is the main one you want to use? What I've been doing is not exporting my tangent/binormal information from maya and just letting whatever program I work in, recompute it. Is this correct?

I find that trying to figure out a workflow between programs and keeping everything correct is really confusing. I've tried to read into this, but for some reason I'm just not understanding it.

Can someone dumb it down for me? :neutral:


  • jordank95
    Offline / Send Message
    jordank95 polycounter lvl 2
  • demilich
    Offline / Send Message
    demilich polycounter lvl 7
       Still a very confusing topic for me but from what I learned is that most programs now, like Substance, Xnormal, and Knald all use Mikkt space as the tangent space calculator to bake normal maps. Maya and 3ds max use a different tangent space calculator to bake normal maps.
       If you are exporting a mesh from Maya/3ds max to Substance Painter, I believe it is able to calculate the tangents/binormals through the ""compute tangent space per fragment" checkbox when importing your fbx. I'm not 100% certain but Substance Designer might us e a different tangent space calculator than SP. But this is all dependent in what the engine you are exporting your final model to. If it accepts pre-computed tangents and binormals from a different calculator then let Substance Painter/Designer pre-compute, but if your engine is expecting tangents and binormals from Maya or 3ds max then you have to click on the tangents and binormals checkbox in in the FBX exporter and not "compute tangent space per fragment" in Substance Painter/Designer.
       The tricky part is that with 3ds max when exporting an fbx with tangents and binormals the mesh has to be triangulated and the version/year of the fbx has to be a certain one. I think this is the same with Maya but I'm not sure. I don't know of a non-destructive way to triangulate a mesh in Maya since quads are preferred for animation. A workaround for 3ds max is to check the "preserve edge orientation" checkbox so that it triangulates the mesh automatically. Maya's option might work the same. This is I know there was a bug when exporting fbx from Maya/3ds max to Substance where random triangles would be not visible in the Substance Designer model viewer. Not sure if this affected anything when baking a normal map. Another bug with Maya was that the latest 2015/2016 fbx exporter would not import properly to Substance.
       3ds max FBX export bug:
       There are other factors that come into play when syncing tangents and binormals. For example if your lowpoly mesh is imported from Topogun/3d coat to Maya/3ds max. You have to make sure you check the correct options when exporting to Substance Painter/Designer or whatever app is used to bake textures.
     Also the most important is how your UVs are unwrapped, if you are mirroring parts of the mesh, and how you bake your mesh.

    3ds max Tangent and Binormal info:

       I may be wrong with some of this info, but these are things I have come across and tried to figure out ways to solve.

  • jordank95
    Offline / Send Message
    jordank95 polycounter lvl 2
    This is great. Thank you so much!
Sign In or Register to comment.