This is in reference to UE-19861, where morph targets can display really bad normals. FBX’s can only store one set of normal data from the base mesh. I’ve contacted Autodesk about FBX’s storing a morph’s normal information. But it doesn’t sound like that’ll be in a new FBX plugin anytime soon.
An alternative fix that is DCC driven, is to possibly allow users to manually import morph targets outside of the initial skeletal mesh.
Users would export/import to Unreal their base skeletal/static mesh from the FBX as usual. But from the DCC they would also export the morph target with the unique normals each to a separate FBX. In UE4 they’d then import the morph target FBX’s with the unique normals one by one (or batched).
It’s suboptimal, but it’d be a reliable method and option for those wanting to import unique normal data for each morph target.
Aren’t morph target normals already recalculated in realtime? I can see it being an issue for some robot type character with custom normals but for normal characters it should work fine as it is now.
By default, morph normals are not recalculated AFAIK. That has to be enabled through the Skin Cache project setting and enabling “Recompute tangents” on the mesh LOD. And this does a really great job if the base mesh and the morph need to have similar normals/tangents.
But if you need to do a large shift in display normals, like morphing a cube into a sphere (with all soft edges on the sphere, and hard edges on the cube), it doesn’t deal with that well right now.
A lot of games are using low poly stuff these days, so I’m thinking it’d be a good feature to add, even with the probable extra overhead from unique display normals on some morphs.
We’re looking into option to fix this issue. It seems if we export with morphtarget mesh, we could get the normal, but will need some investigation. Thanks for the suggestion.
I had the same problem in 2022. I wrote a post on reddit. (link)
As of now, it seems that morph targets should be used only for subtle shape changes, and skeletal animation or shader animation should be used to cause large shape changes.