Server Bug Fix: Blender Armature Rotation causes Scaling

Original Source Link

I’m still new to rigging in Blender, but I’m working on a basic door. I have a door with a doorframe and two doorknobs on either side.

To rig it, I did the following:

  • Create a door. The doorframe, door, 2 x doorknob base, and 2 x knob
    itself are separate meshes joined together with ctrl+j. Make sure it is scaled to 1 in every direction.
  • Create vertex groups: 1 includes the door, doorknob base, and knob.
    Two other groups include each separate doorknob.
  • Create an armature. Enter edit mode and scale slightly smaller.
  • Extrude the root bone and disconnect it. Move the bone into the hinge
    of the door so I can open and close it. Name the bone to match a
    vertex group containing the door and doorknobs.
  • Extrude the root bone and disconnect it. Move it into the center of a
    doorknob so I can rotate it. Name the bone to match the name of the
    knob.

The problem I’m finding is that if I rotate that bone for the doorknob, it also scales the doorknob down and back up. I found an earlier post about it that said maybe there was a problem with the armature, so I deleted my armature and re-did it, making sure to only ever scale, rotate, etc. the bones in edit mode with that bone selected. I’m not sure what else to check to troubleshoot why rotation also causes scaling, since it seems very counter-intuitive.

Link to blend: https://www.mediafire.com/file/y8vh8fvqh41rzva/upload_door.blend/file

I did not realize that if I opened up the object and looked at the modifier for the armature, I would have the option to preserve volume! It seems that is the setting I was looking for. I have an inkling that what was said in the answers here about the distance between the root and other bones might be the reason. Either way, once applied, my doorknob no longer shrinks.

Thanks for clarifying your process. It helped me arrive at a theory. As a rule, don’t scale the armature in Edit Mode. Scale it only in Object Mode. Think of Object Mode as a way to access the master group node for all the bones, since it’s the mode which allows you to directly access the armature object, which itself is a container for all those bones. Think of Edit Mode as a way to access the core blueprint which lays the foundation for your whole construction. You don’t want to make radical changes to the foundation once you’ve started building, or problems arise. Once construction begins, leave the blueprint alone. Only change the construction that is built from it. This analogy isn’t perfect, but hopefully it makes things clearer.

Now, you mentioned building the armature over again. Did you scale in Edit Mode the second time, or no? If not, consider applying the scale of your armature object in Object mode by pressing Ctrl + a and choosing Scale from the menu. If this doesn’t work, maybe you can upload your file and we could take a look at it and see what’s going on.

You appear to have an armature with three bones. The parent-most bone is in the top-center of the door frame, the second is centered within the door’s top-most hinge, and the third is pointing up from the front center of the door knob. The knob bone appears to be parented directly to the hinge bone, and the hinge bone seems to be directly parented to the frame bone. When the frame bone is rotated along the Global Z axis, the hinge bone uses the frame bone as a pivot, as expected. But because the knob bone is a child of the hinge, and the hinge a child of the frame, the pivot for the entire door is offset by the difference in space between the frame bone and the hinge bone. One simple solution is to get rid of the frame bone altogether, and only have the hinge bone as the top-most parent. The door works right now with the hinge bone selected, but not with the frame bone selected. If you want the frame bone to be the main controller for the door, you can. But you may need to create a driver for the door, one which turns the hinge bone WHEN you turn the frame bone. However, if you choose this route, you will need to unparent the hinge bone from the frame bone. Otherwise, the driver will work, but the hinge bone will still be rotated in the way that it is now when the frame bone is rotated, in addition to the effect of the driver, which you don’t want. Drivers are a bit tricky to set up at first. It might be simpler to create a Transformation constraint on either the frame bone or the hinge bone, either one, then use the Transformation constraint settings to wire their behaviors together.

Tagged : /

Leave a Reply

Your email address will not be published. Required fields are marked *