IK/FK, parenting for optional bones?

Hi, please help! I am mucking my way through some prop rigging that is a little over my head, which is not surprising because I chose something relatively complicated as my first rig. It's for my storefront door freebie.

The goal:

  • Open and close the door, with pivot on the modeled hinges, with all modeled parts weighted to follow.
  • Rig door closer arms to articulate during open and closing
  • Closer arm animation smoothly mirrors values of open-close rig

So far I've managed to follow Josh Darling and Sickle Yield's tutorials on rigging the basic open close parts of the door, no problem. The closer arms are causing me to stop and scratch my head. There are some joint editor options I don't quite understand, and that doesn't help either.

To use the body for very rough reference, lets say my door is a lower leg, with the hinge as the knee, and the static door jamb as the rest of the leg (stationary). That sounds very simple, a movement constrained to basically one rotation axis. If I understand in terms of rigging what I am trying to accomplish, the door closer arms would be like pinning a rod to the back of my thigh, attached to another rod by a swivel joint, which has it's opposing end pinned to my heel.

At this point I get a little lost. Maybe I am overthinking it? From what I've read this seems to me like it could be an IK node at 2 opposing points, since the arms have to move somewhat freely between two parts that remain relatively static (the door will move but the position of the hinge remains the same, and the position of the top arm attached to the flange on the door jamb remain the same, locally).

When I first approached the problem I thought, Oh, I'll just parent the bones from the frame/flange->top arm -> lower arm-> closerbody/door... Thinking about that I realized (and I maybe I go wrong here? ) that it wouldnt work because I would animate those bones and the entire door would move off the hinges, flapping around like a dead fish. So I changed my heirachy to include one set of bones structured for just the opening and closing of the static parts of the door, and one set to include the closer arms parented to the door jamb.

I believe I can get these to work individually, where the user could dial their sliders back and forth on each component ( Upper, lower arms, open-close etc.) but how do I get them to work together? I would like to provide only one slider for opening and closing. So, if I rotate the door 50 percent, lets say, and I have the closer arms react to that and pose 50 percent automatically as well? I see this all the time with morphs.

If someone could point me in the right direction I would be really grateful :)

Comments

  • EC3DEC3D Posts: 131

    I forgot part 2 of my question, oops. I also have a bone created for turning the lock knob.  If I assign geometry weights to this bone for the knob, do I have to do anything specific to get the entire mechanism to follow the opening and closing of the door, or will it follow automatically , the same way an index finger translates  along with the entire forearm for example? Just trying not to head down the wrong path here..

  • To answer the second question first, a child will follow its parent according to the sum of its own and its parent's weights (which is why the total weights on a vertex are set to be normalised, to add up to 1).

    Your door opener is like a piston, and the classic solution for a piston is to parent the two parts to different bones (the ones they move with) and use Point At to keep them aligned. In this case that wouldn't quite work if you want the kind of closer that forms a trapezium but I think you might get it to work if you give each a tiny bone at the end - that is, the wall arm would parent to the wall and would have a meshless bone parented to it at the point where it meets the door arm, the door arm would be parented to the door and would have another bone parented to the point where it met the wall arm. The wall arm would be set to Point At the child of the door arm and the door arm would be set to Point at the child of the Wall Arm.

  • EC3DEC3D Posts: 131

    Yes! I think I understand what you're saying. By adding those meshless bones we avoid the program having to even consider the geometry on the opposing parts, it just follows those bones?

    Thank you Richard this is super helpful. 

  • EC3DEC3D Posts: 131
    edited February 2018

    Ok, so far I got the bottom working. Here's a link to a screencapture gif. Aside from Daz crashing a few times when I PointAt the wallarm to the pivot bones I added, I am having trouble getting the wall arm to follow. As soon as I have both PointAt properties applied, the movement bogs down so to speak, and it seems to bug out, going out of line and staying that way until I revert back to a previous version. Let me see if I can reproduce the issue...

    https://gyazo.com/9cbf1c48152bd95dc9dc80ad4395916z

    Edit: I couldnt reproduce the problem, but it seems to have broken in a different way upon setting PointAT this time - > https://gyazo.com/408f33af8bdfd02c424e2bc4543cec94

    Post edited by EC3D on
  • EC3DEC3D Posts: 131

    Getting closer.. something is causing this offset.

     

    https://gyazo.com/fb2684a01247372234765bc24f9b5d5e

  • Getting closer.. something is causing this offset.

     

    https://gyazo.com/fb2684a01247372234765bc24f9b5d5e

    How are the arm bones aligned, and where are the centre-points on the extra bones?

  • EC3DEC3D Posts: 131

    I have tried two configurations so far.

    Configuration A-

    1: Upper arm bone(Wall arm) : XYZ rotation -positioned with center point at the immovable flange on the door frame---> end point is straight out to the other end of the arm, centered on the joint where our arms will pivot together, and aligned with the end point of the child bone I created for the lower arm

    2: Lower arm (Door arm) : XYZ rotation- positioned with center point on the point of attachment to the door--> end point is straight out to the other end of the arm, centered on the joint but ignoring the difference in Y values of the actual geometry at that end, and aligned with the end point of the child bone created for the upper arm

    3. Meshless Child Bones : YZX Rotation:  Upper arm child center point aligned  on the end point of the lower arm and the center point of its child---> Lower arm child center point aligned on the end point of the upper arm and center of its child

     

    Configuration B-

    I just swapped the child bones back to XYZ and aligned their end points with the center points of the arms.. so upper arm child center point is still at the end point of the lower child, but its end point is aligned with the center point of the lower arm, and vice versa

  • EC3DEC3D Posts: 131

    I don't want to give up on this, but at this point I'm wondering if I should just rig the arms and door independently, and provide some preset poses with my package, and assume if they need anything other than  0 , 15 , 30, 45, 60, 90, 120 degree presets they can dial them in, and call it a day...

  • I have tried two configurations so far.

    Configuration A-

    1: Upper arm bone(Wall arm) : XYZ rotation -positioned with center point at the immovable flange on the door frame---> end point is straight out to the other end of the arm, centered on the joint where our arms will pivot together, and aligned with the end point of the child bone I created for the lower arm

    2: Lower arm (Door arm) : XYZ rotation- positioned with center point on the point of attachment to the door--> end point is straight out to the other end of the arm, centered on the joint but ignoring the difference in Y values of the actual geometry at that end, and aligned with the end point of the child bone created for the upper arm

    3. Meshless Child Bones : YZX Rotation:  Upper arm child center point aligned  on the end point of the lower arm and the center point of its child---> Lower arm child center point aligned on the end point of the upper arm and center of its child

     

    Configuration B-

    I just swapped the child bones back to XYZ and aligned their end points with the center points of the arms.. so upper arm child center point is still at the end point of the lower child, but its end point is aligned with the center point of the lower arm, and vice versa

    I'd try having both main arm and meshless child with the same rotation order, and the child centre on the join between the two arms. The first axis is the one that runs along the bone, so xyz would be right if the door runs from left to right (and is modelled in the closed position)

Sign In or Register to comment.