Selecting the option to “Import normals and tangents” when importing a skeletal mesh no longer works in 4.11
Selecting the same option in 4.9 works great and I have no seams between my characters body parts, however in 4.11 there are visible seams between each body part.
I can only assume that, despite selecting the option to import normals from the FBX, the engine is still recalculating them on import.
Also, really wish UE-23368 could be fixed. Can’t believe it never got patched in 4.10.
I have to stick with 4.9 because the FBX import pipeline has been bugged since 4.10, but I really want to try out the new hair and eye shaders
I have similar issue, but I can provide additional information. I’m doing custom mesh importer for the engine and using the same API as FBX (MeshUtilities). Working with preview version of UE4.11 (not recent version, but MeshUtiliuties code wasn’t changes since then).
StaticMesh import works well.
MeshUtilities.BuildSkeletalMesh ignores normal building options. As I see, 4.11 has major changes in this area, probably because of Mikk_TSpace support. Current code ignores normals passed with mesh data and always tries to regenerate them.
However, generated normals are not good - I’m getting garbage for all meshes. If I’m flipping-out a mesh (reversing vertex order in all triangles), I’m getting good normals (and inside-out mesh), but correct triangle data generates weird normals.
The same code in 4.10 (with adaptation for API changes) works correctly.
I was able to solve all issues with normals and tangents in my mesh importer. However I was forced to work around bugs (?) in new MikkTSpace code made for SkeletalMesh. Perhaps the following information could be useful for developers.
If you want to IMPORT normals from file, you should set IMeshUtilities::MeshBuildOptions::bUseMikkTSpace to false, to use “legacy” mesh building code (BuildSkeletalMesh_Legacy function), which will reuse provided normals. “New” code completely ignores normals and always rebuilds them.
If you want to reverse order of vertices in triangle (in a case of swapping left or right handed coordinate system), you can’t do it with reordering VTriangle::WedgeIndex values, but corresponding FSkeletalMeshImportData::Wedges and VTriangle::Tangent[XYZ] should be swapped instead. Perhaps this is a bug in MikkTSpace binding or in MikkTSpace library itself, which ignores WedgeIndices. If you will use WedgeIndices swapping, generated normals will be weird. BuildIn normal generation mode (“legacy code”) works well with swapping of WedgeIndices.