I modelled and rigged a desk lamp and now I am adding some animations to it.
One of the animations is a spinning animation.
Please check it here: https://youtu.be/DwGKepct370
I am happy with the result, however, there is one thing which bothers me - is that I had to do a lot of things manually, frame by frame.
Let me explain, what I mean. In the video, I show that there is an IK bone - a base bone for the whole rig. I added a spin to it. That was easy - in one of the frames I just rotated a bone and keyframed it. Blender did the rest.
But unfortunately, this base bone center does not match the lamp center, and that is why while rotating, the lamp is wiggling from side to side. To fix that, I had to manually adjust X and Y of the base bone in each frame. You can see it in the video.
What could I do? Is there a way to make it easier? Unfortunately, I cannot change the position of the base bone relative to the lamp.
Doing rotation off-center means every frame has to be a keyframe.
Instead, make another bone at the center of your rotation, or an empty (or a non-rendering monkey, it doesn’t matter), parent your root to it, and rotate that instead.
I cannot add a bone - other animations and in-game skeleton depend on the current rig.
As for an empty - I don’t quite get it. I added an empty to the scene, now I parented the rig to that empty. What next? If switch to the pose mode, and start rotating the base bone, it ignores the empty. it rotates the rig and the bone around its center (which is not a center of the model I need)
What are you trying to do? Render in Blender? Or export an animation to Unity or something? If the former, you can add a bone, just unlink the armature and it becomes its own copy.
Once you parent something to the empty, rotate the empty instead of the root. I suppose you could do this with a parented armature, but I don’t like transforming armature objects-- I’d use a child-of constraint instead.
If you need exported to .fbx for Unity, then bake animations to visuals to capture the way that the empty controls the root. (Not sure how Unity, baking would affect animation of the armature object itself, which is one reason I’d prefer a child-of.)
Next time you make a rig that can’t be changed, plan on (probably) two particular bones: one “origin” bone that lives at 0,0,0 and one center-of-gravity bone that exists at, well, the center of the model’s gravity. These will make life easier for you. (For example, here, if you had either, you wouldn’t have a problem.)
In general, you can’t just make a rig at the beginning of a project and call it a day; you have to plan what you need your rig to do. Otherwise, yes, you get yourself into these positions where your rig doesn’t do what you need it to (like rotate about CoG.) This is one of the reasons why game designers do obscene amounts of planning and pre-development documentation.
I am missing something: once I parented the rig to an empty and started rotating the empty instead - whole my object broke apart. Please see screenshots.