Animation problem--meshes wander off their axis

The issue I’m having is with meshes that have simple translate/rotate/scale animations. No joints or morph targets. The timeline is 5950 frames, so it’s somewhat long. The animated objects seem to wander off their axis later in the timeline. At the beginning of the timeline, they behave the same way as they do in Maya, but if you scrub through quickly you can see them drifting all over the place. I centered the default view on a radar dish which is a good example of this behavior. It starts spinning on top of its post, but moves outward in a spiral path. It has no translate or scale keys, only rotation on the Y axis. All animated objects wander, including ones that do not rotate. Some of the turrets are especially bad: they seem to translate up and down in an oscillating manner along the y axis while steadily drifting off on the z axis. They only have one rotate channel keyed.

I initially exported an fbx from Maya with keyframes that cycle with offset. Next I tried baking the animation, in case there was some small offset error cumulatively adding up. No change in the problem. I went back to Maya and deleted keys from all redundant channels, e.g. all translate channels on objects that only rotate. No effect. I thought the scene might be too small and coordinates might be drifting due to rounding errors, so I increased the scale 20x and re-exported. Still no effect. I can import the same fbx into various software suites and this glitch doesn’t happen, so I don’t think it’s a problem with the export. I’ve also tried binary, ascii, and various older versions of the fbx format. I’m considering making this a skeletal animation, but that wouldn’t be ideal so I figured I’d ask first.

Thanks for you time, community! Sorry about the wall of text.

Before exporting, you should reset all transformations (axis, scale, rotation, translation). 3d Graphics programs use more complex procedures, even for simple operations translation/rotation/scale, which parser (the code that “understands” your FBX file) cannot translate.

In your case, perhaps your antenna has defined a local coordinate system, while parser treats as a global coordinate system.

Solution: I don’t know for Maya, but for 3dsMax you have a Reset Transform Utility

Thanks for the prompt response! Good idea. I applied your suggestion. I moved and unparented all objects to the scene root, ungrouped them, froze their transformations (the maya equivalent of resetting them to 0,0,0) and animated them. Only the Y axis is keyframed, as before. I uploaded the scene as a test, and it still seems to present the same issue. The objects definitely have a global coordinate system now, with no local or nested transformations. I should add that I’ve tried both Euler and Quaternion rotation interpolation.

Did you apply some scale operations? It seems that at beginning of animation you have a small antenna and at the end, a scaled one.
I have gone through the same problems. The solution has been reset geometries, delete all keys and perform the animation again.

No scale operations of any kind. All objects have a constant scale of 1,1,1 and are not parented. No scale channels have incoming animation. I believe the scale is drifting upon import to sketchfab along with the translate and rotate, so it does indeed seem to be scaling. All geometry has been reset and all keys redone in maya, with no inputs to any object’s scale whatsoever aside from the default value.

Did you selected Bake animation and Resample all options on FBX exporter? Also you can try the OPEN Collada (not just Collada from Autodesk) exporter for Maya. Sketchfab accept .dae files. OPEN Collada worked for me.

I did try those options during my many iterations of twiddling with export settings. I even attempted a Collada DAE FBX export. Strangely enough, the Collada export didn’t seem to have animation in sketchfab. It came up as a static mesh. I did make sure that the animation checkbox was checked when I did the export. I did it twice. Strange. Does sketchfab currently support DAE animation?

Here I tried a fresh copy of the radar dish mesh, which I animated with only two keyframes on the rotate-y channel. One key at the beginning of the timeline with a value of 0, and a second at frame 5950 with a value of -9000. The other dish has baked keyframes from a looping animation. Both show the same problem.

No, Sketchfab doesn’t support Open COLLADA animation. You have to export as Collada, import in Maya that .dae file and resave in FBX format.

Ah, I see. Thanks again for the suggestion. I went ahead and tried that route, and the same drifting off-axis manifests, in addition to new random, jerky movements. The collada re-import has done some strange things. It has moved the pivot point for all objects to the scene origin (0,0,0 in world space) and it has generated translate keyframes to keep the objects in position as if they retained their original, centered pivots. In other words, the object now rotates around a distant point instead of its pivot and the translate keys calculate per-frame how far to move it so it stays centered.

This produces a real mess in the graph editor, and a swollen file size since it’s filled with 9050 keyframes for every attribute of every object. I would think this brute force method would fix the issue, but the radar dishes still wander off their post and fly out in a spiral shape near the end of the timeline.

I’m beginning to think this is an issue with longer timelines using non-skeletal animation in sketchfab, not a problem with tweaking parameters during export or resetting transformations. The behavior is the same regardless of whether it’s nested inside several groups with local transforms and re-orients (my first iteration,) ungrouped and frozen transforms in the root, or totally reset with a DAE re-import and back to FBX, causing not only the transformations but the pivot point to be reset and compensated by per-frame translation. I’m out of ideas, personally. I’m open to trying different techniques, but I may just rebuild the scene to use skeletal animation.

No. You can try to animate a dummy. Then link the dish to that dummy. Ofcourse you have to reset, unlink and delete all keys from the dish. I couldn’t figure out what else could influence dish.

On the other hand I am very interested about sketchfab mechanical animation.

Same here. I tried creating a null object and parenting a non-animated mesh (with reset transforms) to it and animated the null object. Animation was built from scratch, y rotate only. Same result. Something’s got to be wrong with sketchfab’s interpretation of the keyframes.

Not sure but could be the same issue Animation breaking

@cedric Yes, I think you’re right. Same hallmarks with translate and rotate keyframing.

We just shipped a fix and this should be ok now!