FRawMesh data: inconsistent behavior between IsValid and IsValidOrFixable

There are two different methods used for mesh validation in FRawMeshData.

The problem is that they are using very different checks and it is entirely possible to reach situation where IsValid returns true while IsValidOrFixable returns false.

Both subroutines are located within RawMesh.cpp:

The main difference is that IsValidOrFixable requires FaceSmoothingMasks to be present, while IsValid allows that array to be empty. I’m not entirely sure if FaceSmoothingMasks are ALWAYS necessary, and it does not seem to be the case.

IsValidOrFixable is called from within UStaticMesh::Build(), and will result in failure if face smoothing masks are not available.

I’m not 100% certain if that’s how it is supposed to work, which is why I’m reporting it as a bug.

Hello NegInfinity,

Thank you for reporting this issue. While I’m not entirely sure if this is intended myself, from what I understand it isn’t. Due to that, I’ve placed a bug in for the issue under the number UE-28404. It’ll be reviewed and rejected / worked on depending on if it was intended or not. I’ll be sure to let you know of any updates made to the bug report.

Have a nice day!