Animations out of sync after exporting to FBX, bug or mistake?

I have noticed an issue while working on an animation project. NDA applies so I cannot share files or recordings.

The scenario is as it follows:

There is a character working with a machine and they interact with several objects during the animation. The animation is pretty long and there are many objects involved. I decided the best way to export this was to export the character in one file and all the related objects in another file, 2 FBX files in total. The project requires several animations.

The reason I want to have them as separated files is because I want to keep all the individual animation clips from the character when I go to Unity. For this I export the character (just armature and mesh) and enable “NLA strips” in the exporter.

On the other hand I export all the objects in a single FBX file, they have constraints related to the character and it is just easier to bake everything so in Unity I find only one animation clip. For this export I disable “NLA strips”

All is good and great until here. I export this FBX 1 and FBX 2 from my blender file where I have both the character and the objects, everything looks good and in sync, timeline starts in frame 1 until frame 2800.

Before going to Unity I open a new blender scene just to import both FBX files and check that they work correctly. It turns out that the baked animation from my objects’ file lags behind for exactly 1 frame in relation to the animation from the character. This is what I don’t understand. Disabling “simplify” in the export settings does not help. Does anyone understand what the cause could be or is this a bug?

I have more information regarding this issue. I would love to hear if anyone else is aware of this or you want to test it out.

I did a couple of tests in a new empty scene. I created a sphere and made a simple quick transform animation. I took the sphere and I exported it, export settings here:

Then, in the same blender scene, I re-imported the sphere fbx and I noticed that it was delayed one frame compared to the original sphere animation. This happened because the FBX importer has an option to offset the animation (in frames) and it is set to 1 frame by default (why?).

I did another test, this time with the files I had problems with, the ones that were out of sync. Two files, a character fbx containing NLA tracks in one file, and a series of objects in another fbx file, export settings same as in the screenshot.

In my blender scene I import the objects fbx and I set the animation offset to 0. Then I import the character with the same import settings and it turns out they are out of sync. To sync both animations as they were originally I need to import the objects’ fbx with the offset set to 0 and the character fbx with the offset set to 1 frame.

I don’t understand why this happens or if it is by design. I just think it is extremely easy to run into a problem like this. I would expect that the animations stay as originally made when exporting and importing files. I understand it is complex but It seems very prone to error otherwise