how does FBX exporter mark hard edges? When I export FBX with default settings, I mean 'Smoothing' option on 'Geometry' tab, which by default reads 'Normals Only', this setup makes the whole mesh smooth-shaded and marks certain edges sharp.

When I change this option to 'Faces', I receive unmodified mesh.

Both meshes are identical visually, but first one, smoothed, has less vertices count because of that smoothing.

I tried looking at the code, but it is very complicated for me. The only thing that I understood, that 'Normals Only' represents switched off smoothing in exporter, so it appears to do nothing with smoothing, when this option is selected.

But exporter uses some mesh functions like calc_normals_split.

How this exporter does this thing with edges? What is that magic function?
To summarize, FBX supports two kinds of smoothing:


Smooth groups (inherited from 3DMax), i.e. groups of faces that have smooth edges inside, and sharp edges on their boundaries.
Normals per vertex per face (aka split normals in Blender), where the whole mesh is set smooth, but shading of each face is influenced by its vertex (or corner) normals - two faces sharing a common edge which vertices have different normals will show a sharp edge (if shader system of target supports it of course).