1
$\begingroup$

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

$\endgroup$
2
$\begingroup$

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.

| improve this answer | |
$\endgroup$
  • $\begingroup$ Glad you got it sorted. $\endgroup$ – R-800 Jun 4 at 18:19
1
$\begingroup$

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.

| improve this answer | |
$\endgroup$
  • $\begingroup$ I definitely scaled it in edit mode the second time, I will re-make the armature now and not scale it in edit mode. This is probably a noob question, the reason I scaled it was because all the parts are a different size (doorkob, hinge) and I need it to fit in the center of them to get clean rotations. I can definitely make the bones very small to fit all situations, but it seems like there must be a better way. $\endgroup$ – Jirara Jun 3 at 20:56
  • $\begingroup$ I uploaded my blend file since that doesn't seem to have done it. $\endgroup$ – Jirara Jun 3 at 21:10
  • 1
    $\begingroup$ The download isn't working for me. Try this hosting solution instead. It was created for the purpose. blend-exchange.giantcowfilms.com $\endgroup$ – R-800 Jun 3 at 21:43
  • $\begingroup$ Okay, I have your file now. I find that if I go into Edit Mode, and delete the bone in the top center jam, and then rotate the bone in the hinge along the Global Z axis, the door appears to turn as it should. It wasn't sure why the top-most bone was part of the armature to begin with. I find also that this hinge bone works without the top bone being deleted. Do you need the top bone to be the controller of the door? If so, you may need to use a driver to make this work like you want, instead of straight parenting relationships. $\endgroup$ – R-800 Jun 3 at 22:11
1
$\begingroup$

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.

| improve this answer | |
$\endgroup$
  • $\begingroup$ I'll have to read up more about drivers and constraints. I've been adding constraints, but keeping them very simple. The problem, though is not the hinge bone, but the doorknob bone. When I rotate it, it shrinks the doorknob. The only way I've been able to fix it is to have a completely different armature for the knob, but I'm not sure if that will work for Unreal Engine (I think you need one single root bone) $\endgroup$ – Jirara Jun 3 at 23:59
  • $\begingroup$ It shouldn't shrink. I'll take another look. $\endgroup$ – R-800 Jun 4 at 0:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.