Derek Siddle shared an animation technique with me that I'd like to pass along.
You may have read elsewhere that I have been struggling trying to smooth out the animations for some steam-locomotive siderods. The most problematic ones for me were the main rods, the ones that connect the piston rods to the main driver wheel. Although the animations worked smoothly in the modeling program, in my case 3ds Max, they would invariably "bump" or "jerk" at a certain point in the simulator.
My piston rods are animated using an "Expression Controller" which calculates the precise position of the piston based on the rotation angle of the driver wheel, and the connecting geometry. Thank you Pythagoras! The piston worked fine, both in Max and in the sim. The main rod, on the other hand, uses a "LookAt" constraint. The rod is attached to the wheel at the rod's pivot point. The rod then always "looks at" the piston, which is moving back and forth as the wheel turns. It's a complex piece of animation involving translation of the rod's pivot point around the wheel, and rotation of the rod to keep it pointed at the piston. it looked great in Max, but unfortunately not so great in the sim.
Derek suggested I try a different approach. The key term that he used was "rotoscope" which is a cinematic technique used in animated cartoons wherein each cel is drawn by tracing over a live-action image, frame by frame. Here's what I did.
For each animated object, I made a copy using Shift-click. The new, cloned copy exists at the exact location of its original, and it preserves the animation and hierarchy attributes of the original. If I play the animation, the original object and its clone move in unison. The only difference is that the clone has a different name, assigned by Max.
Next, I removed all of the animation attributes from the original object and un-linked it from its hierarchy. Now when I play the animation it just sits there.
I selected the now motionless original object and turned on Auto Key. Then, for each frame of the animation sequence, I repositioned the original object to match the location and orientation of its clone. You can do that manually or by using the Align tool. Eventually a complete set of hard-coded keys is created for the original object. At this point the clone object can be deleted. The original object, now fully keyframed, moves just as if it were still "rigged" with an animation controller.
If desired or if needed, the motion can be further refined using the Curve Editor. After all the animations are made over in this fashion, any remaining helpers and dummy objects can be deleted. In my case, I only applied this procedure to a few of the siderods. The other bits and pieces of animation seemed to export cleanly.
That's it. Export the animation then export the entire model, convert it in the Blueprint Editor and have fun!