LOD0 vs Static Mesh Settings & Import Settings

Hello. I have trouble understanding the difference between seemingly similar options under LOD0, Static Mesh Settings and Import Settings, in mesh details window/tab.

Recompute Normals, Recompute Tangents, use MikkTSpace Tangent Space
vs
Normal Import method & Normal Generation Method

Source Lightmap Index, Destination Lightmap Index
vs
Light Map Coordinate Index

Min Lightmap Resolution
vs
Light Map Resolution

Could you please explain all of those, or point me to a documentation page where all of the options on this tab are explained? It seems they are poorly documented, or not documented at all.

Regarding tangent space, I’m working in 3ds Max and it seems exporting my models into FBX with tangents and binormals is the safest option, as all the software I work in later (Mudbox, Substance Painter, Marmoset Toolbag) reads those tangents and binormals and they are consistent throughout the pipeline. What would be the correct settings in UE4 for this type of workflow?

Regarding lightmap resolution, I was able to find some info suggesting that “Min Lightmap Resolution” has something to do with padding, which I’m able to verify by previewing UV Channel 1, but it’s still not clear to me how this works.

I will greatly appreciate any help, as right now all of this has created a big area of uncertainty in my knowledge which impairs my learning process. So thank you in advance.

To elaborate on what I mean by “poorly documented”. The help feature in the editor leads me from the mesh window to the “Static Mesh Editor UI” documentation page, where in turn I can navigate to the “Details Panel” documentation page, which offers no help at all on the topic.

I was able to find some answers in the FBX pipeline documentation, but it’s still unclear to me why I would want to, let’s say, import normals and tangents, and then recompute them in LODs. Also, if I import only normals, what is the “Built-in” Normal Generation Method (as opposed to “Mikk TSpace”)? Built-in, as in UE4’s native?

Hi rosenand,

Break down of Build Settings:

  • Recompute Normals: This option will rebuild normals depending on if the mesh has been scaled in particular non-uniform fashion using the Build Scale options.
  • Recompute Tangents: This option will rebuild the tangents depending on if the mesh has been scaled in a particular non-uniform fashion using the Builds Scale options. Also, disabling the option for MikkTSpace Tangent Space will recompute using the built in method.
  • Use MikkTSpace Tangent Space: https://wiki.blender.org/index.php/Dev:Shading/Tangent_Space_Normal_Maps This tangent method was introduced in 4.8. It’s an industry standard and replaced the default one, while still giving you the option to go back. In 99.99999% of circumstances you shouldn’t ever need to adjust this unless you have a specific reason to. This method does require properly laid out UVs though otherwise you’ll get a degenerate tangent warning. There are plenty of posts on AnswerHub to help answer this one.
  • Remove Degenerates: This option will remove any degenerate triangles that are found. In general this option should always be left on.
  • Build Adjacency Buffer: This is required for any meshes using PNT Tessellation, but can be slow to do. If using larger meshes this is recommended to be disabled.
  • Use Full Precision UVs: By default static meshes use half precision (16 bit) UVs in order to save memory. Enabling this option forces the mesh to use full precision (32 bit) UVs. This might be needed for certain cases when seeing artifacts with texture mapping the mesh.
  • Generate Lightmap UVs: Will generate a lightmap UV and assign to Lightmap Index 1.
  • Min Lightmap Resolution: This is the minimum lightmap resolution to set for your packed lightmap UV. It takes into account the padding that is needed between faces to help prevent light bleed. If you plan to use a higher lightmap resolution (set in the Static Mesh Settings tab), you will want to increase this to take advantage of better padding for that specified lightmap resolution.
  • Source Lightmap Index: This is the source UV channel you will use to generate the lightmap UV from. So for instance this should typically be set to 0 to use the texture UV to generate the lightmap UV.
  • Destination Lightmap Index: The UV channel number to assign the lightmap to. Typically this should be one, but for some meshes where you would require multiple UVs, you can set a new lightmap destination. This is where the lightmap will be set for it’s UV channel, but this does NOT set the lightmap index. You must manually do that in the Static Mesh Settings tab.
  • Build Scale: Adjust the uniform/non-uniform scaling you would like to for your mesh.

There are some instances where you would want to import your normals/binormals/tangents from your modeling program for instance if you had grass where you’ve edited the normals to point straight up and don’t want them to be computed based on the direction of the face geometry.

I hope this helps.

Tim

Thank you very much for your time. So if I import a mesh with bent normals, like in the case of foliage, I would want to uncheck Recompute Normals, correct? Or perhaps it doesn’t matter as long as I don’t scale non-uniformly? And if I do scale the foliage non-uniformly, and check Recompute Normals, does it recompute based on my custom normals, or does it totally reset the normals?

Again, there’s one thing regarding which I would really appreciate your comment. I like to export my models from 3ds Max WITH tangents and binormals, so that the FBX file carries them all the way through various programs. The reason is, despite MikkT gaining popularity, I believe Mudbox for example doesn’t use this tangent space. When I bake normals in Mudbox, I can only choose between Max or Maya target tangent space. So I just make sure the FBX includes my 3ds Max tangents and binormals, and whatever software I use (Mudbox, Substance Painter, UE4), it just reads them and I’m good. The workflow is consistent.

In this scenario, if I choose to import normals and tangents in UE4, the MikkT space is never used. Is there any downside to this? Again, in this case, should I uncheck Recompute Normals/Tangents, or maybe it doesn’t matter if I don’t scale?

Thank you.

Typically you wouldn’t even need to mess with the Build Settings. These are there so you don’t have to reimport to get these options, for the most part.

When you import your mesh initially you would change the “Normal Import Method” to Import Normals and Tangent to use your own from your FBX file.

If you scale the mesh and hit apply, anything that is checked will be applied. So if you were to have recompute normals it would use the MikkTSpace or Build in methods depending on the options selected.

MikkTSpace provides a more accurate workflow for some, but requires properly laid out UVs otherwise you’ll get Degenerate Tangent warnings and tangents that don’t look correct when viewing them in the Static Mesh Editor. Others it may not. if you have a flow down that works for you, and you are exporting and importing your normals and tangents into UE4 it will not use the Built In or MikkTSpace generation method. So long as you don’t apply any build settings with these enabled it shouldn’t recompute or change the way your normals/tangents that were imported.