Hip Rigging - Open Discussion

Hey all,

I’ve modeled a character you can see here and everything is going great with it, to a point. I have a basic rig weight painted and working the mesh just fine, but I added hip bones to it. See attached pic.

Everything works good but when I rotate the upperleg bone into extreme poses. Then the mesh doesn’t deform so good. But since I weight painted the hip bones, rotating them helps the deform and it looks really good with the extra assistance. So I figured I’d just constrain the hip bones and all is good. That is where I hit a brick wall. Despite all my attempts, I can’t get the bones to play nicely with each other. Attached are several .blend files and a description of problems with each. (please note, I’ve only been thinking of outward rotation of the left leg at this point. After I figure that out, I’m sure the rest of the rotations will be cake)

hiprig1.blend - this rig works great, unless you cancel your rotation while posing the upperleg bone or using alt-r to clear the rotation. The upperleg bone won’t return to it’s correct position. It appears the copy location constraint on the upper leg is evaluated before the transformation constraint on the hip bone is.

hiprig1a.blend - this rig works just fine, but the controlling bone doesn’t move with the deforming bone. When using custom bone shapes to control the bones I think there would be a loss of connection feeling. you move the controlling bone, but the mesh doesn’t move exactly with it.

hiprig1b.blend - this rig has the same problems as the first rig. Canceling or clearing rotation and the upperleg bone’s position is not updated.

Anything else I’ve tried gives me cyclic dependices. I think a simple python script to update locations of bones would fix most problems. I don’t know python and with 2.5 still in a state of flux, I wanted to avoid python scripts. (currently, python scripts do not come in with a character when you link the character as a group in 2.5.)

I could just give up on this idea, but I’m not one to give up. I could just delete the hip bones, and weight paint things better. I could just use corrective shape keys to fix things, but…

I think this could be useful for shoulders as well. When a human is standing with arms at their sides and rotate the arms into a t-pose, the shoulders move as well, much like I want my hip rig to work.

I’m open to suggestions and I really need a fresh set of eyes to look at this. All attached .blends are 2.49

Thanks for your time and efforts,
Randy

Attachments


HipRig1.blend (127 KB)HipRig1a.blend (129 KB)HipRig1b.blend (131 KB)

I am assuming from the behavior of the rig you uploaded, you want to limit the range of movement of the hip, and have it follow the leg. I played around and accomplished this with an IK chain and liniting rotation of the hip. Hope it helps.
I’m sure there are better ways to do this. Feelgood Comics?

Attachments

HipRig1b.blend (128 KB)

Taking a Devil’s Advocate position, I think it’s better to have the legs somewhat dependent on the hip motion rather than the other way 'round, and so my leg IK chain ends at the joint between thigh & hip; hip motion affects the leg IK chain somewhat in terms of exact angles at the joints, with the IK handle at the ankle/foot determining the broad angles. I also use rotations of the upper leg bone (femur) to position the knee properly for some poses.

Because of all these interactions, I find hip rotations and leg rotations require substantial finessing to get right in extreme poses (see the grand jété animation on my Vimeo site as an example), and setting up constraints puts too many limits on that. There’s only so much that “automation” can do, particularly in the extremes of deformation.

A lot depends on the animation style you’re targeting, too. I’m doing very naturalistic motion in Kata, whereas some sequences I did with the Sintel proxy/rig were broader and more stylized, and so didn’t require nearly as much finessing of poses.

Hey, thanks for the replies!!

3dementia: Yes, a simple ik setup like your demo is something I thought about early on, but I didn’t like it for a few reasons. First, you control the target by changing it’s location, not rotation. Every rig I’ve used, when animating legs in fk, you pose bones in the legs by rotation. When the character/rig is finished with custom bone shapes and the ik target bone appears to be a upperleg controller, grabbing it and trying to rotate it accomplishes nothing, as it’s location must be changed. When I tried this approach, I duplicated the upperleg bone, unparented it, and parented the ik target to this second upperleg bone. This allows one to control the ik target by rotation as one would normally control a fk upperleg bone. But now the controller bone doesn’t follow exact loc/rot of the underlying bone it controls. This is the same reason why I gave up on hiprig1a.blend.

chipmasque: I understand your points, but really I’m looking for something more like the rig used for the durian animation sprint, and not like you describe kata. By that I mean, easier to use, less finesse needed. More automation, less human interaction. Yeah, I know that means I’m looking for that magical ‘make it all work’ button that no one can seem to find…

I will say this, in writing this response, two thoughts occurred to me…

First, the hip/pelvis is one solid bone (I think there is some cartildege in there, but i’m not sure and not going to spend my time researching the pelvis and range of motions) and can’t rotate the way I’m wishing mine would for deformation. So the idea of using the hip_l bone as a ‘fan’ bone for deformation purposes only could maybe work.

Secondly, I’m just playing with bones as I do when I experiment with rigging ideas, so it’s not to scale in the context as it will be eventually be used. So maybe my thoughts of the controller bones not moving with the underlying deform bones won’t be such a big issue when actually put into the character.

Thanks for the input!
Randy

I don’t think you can do any better than to study how that rig is assembled and implemented – it’s really a very good design for general character animation. I haven’t yet pulled it apart myself but have done a number of sequences using it, and it rocks!

But one of its characteristics that I like a great deal is that it is not highly “automated,” at least not in terms of how it’s used. It has handles for all the principle bones and/or controls that are practically needed, but doesn’t seem to have a lot of constrained interactions other than the usual like foot roll. This puts more on the animator to set all the poses just so, but for me, that’s a better approach, since it doesn’t pre-suppose a particular way for the bones to act, the way constraints must in order to work well.

When building the control system for the Othello face rig I ran into the problem of how much automation is a good thing, and it took quite a bit of fussing to get the control system to leave room for manual tweaks after the control mechanisms had been set. But that’s really important in designing constraints imo, because there will always be a time when constraints aren’t doing things quite right, and the animator has to step in and tweak it just so.

I agree with chipmasque that the hips should be a separately posable structure, rather than trying to move them when the legs move. Firstly, the hips often lead the action, or control the upper body position, rather than just moving when the leg moves, and with an automated rig, this doesn’t always happen correctly.

Check out my rig at:
http://www.openworldfilm.com/owffms/FMS/OWF/download.php?ID=283

This is already attached to the mesh ( note it is a nude female ) Feel free to use the rig and/or mesh it is creative commons 3 licence.

The automation in this rig is designed not to be Ik or FK specifically, but what I call ‘puppet’ rigging, in that you have a minimal control set that allows you to carry out the majority of day-to-day actions, within a ‘normal’ range of movement. It is not designed to be an acrobat or a ballet dancer, so deforms are only managed so far. It does have an IK rig for the hand, that allows you accurately position every finger and keep the hand still when the body moves, but that is for when you specifically need to touch something. Instructions are in a text file in the blend.

There are two essentials I found when rigging this mesh. 1) there are certain edgeloops which must be there, and must follow certain paths. These are those around the arm, and diagonally around the pelvis/thigh joint. and 2) lots of secondary deform bones to handle the stretch, squash, and rotate issues around the hip and shoulder joints.

I found fan bones are required at hips, shoulders, knees, elbows, wrist, and each finger joint. Not too important for the ankle.

I also follow an unusual modelling method where each structure (muscle, bone etc) on the mesh is given it’s own edge and faceloops, rather than just being a ‘bump’ in an otherwise tubular mesh. That’s my preference, but it does make weight painting very easy.

Bone count on this mesh is 300 plus, but many are in the hands, obviously.

It’s a WIP, so not perfect yet.

Matt

@ t’matt --good comments, particularly about the hips leading the action in many cases, quite true.

Your link produces a 404, however – maybe check the spelling?

One aspect of automation I’ve attempted in the Katrice model & rig for Kata is using scripted drivers (pydrivers) for many of these “fan” bones. In areas where their action is highly predictable – such as the backs & fronts of knees, the anterior of the thigh/hip joint, mainly places where the mesh tends to collapse “soda-straw” fashion, or for deformations like the massive muscles of the buttocks and backs of the calves when the foot/toes are pointed, you can use automation based on angles formed between bones at certain joints. Not exactly easy to code the drivers since it involves evaluations in various types of model “space,” but in the end successful to a large degree.

But for areas like the deltoids, trapezius and pectoral muscles around the shoulder joint, there is so much DOF and variability in how these masses change shape that no amount of automation can accommodate all possible deformation, so they are under full manual control. The point being again that automation is useful only to a point, to handle predictable and regular kinds of action/reaction among the rig’s components, but in the end, it’s the hand of the animator that has to do the “heavy lifting” so to speak.

I think maybe my first post didn’t exactly describe what I was after, I’m not after automating ‘the hip’ but rather what you could consider ‘fan bones’. In the attached pic, the bone circled in yellow I wish to automate, not the one in red. The ‘Hip_L’ and 'Hip_R" bones are the parents of their respective ‘UpperLeg’ bones, so this does change the pivot point of the joint between the upperleg and pelvis. Which isn’t possible in a human as the pelvis is one solid bone.

I played with this a bit with my character - created another bone to be the upperleg controller, constrained both the hip_l and upperleg bones to it and it works to a degree. What I don’t like about it is the fact that the controller and the upperleg deformer bones don’t exactly match each other’s positions. So at very extreme poses the controller bone doesn’t match the deform bones loc/rot. This is an FK setup and since the bones don’t match each others postions I think it kinda feels like the controller is not directly connected to the leg.

There is an attached 2.5 file that works, but I still wish I could get the controller bone (the one with the custom shape) to exactly match loc/rot of the deform bone… It still allows for all hip control via the main hip bone, but the ‘fan bones’ and the upperleg pivot points change. It works good, but still isn’t what I wanted…

Randy

P.S. @travellingmatt - yea, the link you posted doesn’t work…

Attachments


example_hip.blend (397 KB)

I see now better what you’re looking for. In the Katrice rig, I did an “end run” around the problem by using a different structure in the hips:


In this arrangement I’ve made the “hip” bone into three separate sections, the Pelvis, which does all the deformation, and the L & R Pelvis, which don’t deform and act only to connect the top of the Pelvis bone to the two thigh bones. They all meet where the spine bones begin (red circle). Pelvis is parent to both L & R Pelvis bones.

The Pelvis rotates around a point in the pubis region (yellow circle), which is close to being on a line connecting the tops of the leg bones, so when the Pelvis is rotated as shown the thigh bones “rock” up and down a bit – the oblique views show how this affects the leg IK structure.

This also means that the thigh joints are not affected by IK leg positioning in terms of their relationship to the pelvis bone. As in actual anatomy, the Pelvis controls where the thigh joints are positioned as it is rotated in various axes, and the three pelvis bones form a rigid structure much like the real pelvis, though much different in shape.

Soory,

link should have been:

http://www.openworldfilm.com/owffms/FMS/download.php?id=283

One point I found with the hips and shoulders, certainly as far as fan bones and the like are concerned, is that you should either ensure that they are absolutely horizontal/vertical, or put in a ‘joining’ bone that is. This makes all the rotation limiting/copying etc easier to calulate, and gets reliable results. If you have a tilted pelvis bone with a tilted leg bone attached, especially if you then have it as part of an IK chain, it’s almost impossible to deduce the movement of the fan bone when you copy rotation from the thigh.

Lkewise essential to correct the bone rotation before trying to copy via a constrant.
Matt

Been sidetracked a bit on this probject, but got back into it late last night. So I revisited this thread to examine more closely chipmasque’s rig. After watching a video from Cessan on Big Buck Bunny rigging, I’ve been duplicating the hip bone, inverting it vertically and then parenting the hip bone to this second bone, thereby changing the pivot point to the area circled in red in chipmasque’s graphic. It allows one to rotate the hips in what I think is a more natural way, without offsetting the torso.

Anyhow, I was fooling around with just scrapping my idea of rotating the secondary hip bones and the changing pivot points and just went with a more standard single hip bone and secondary bones. I just parented the legs to the hip.

So now I am wondering, chipmasque, the secondary hip bones in your Katrice rig, is there any weight painting applied to them, or are they there to merely keep the thigh bones in place? I assume you did apply some weight painting to them, otherwise, what would be the sense of having them? If they just exist to keep the thigh bones in place, that could be accomplished by parenting, and those bones wouldn’t be necessary…

travelingmatt - that is an impressive rig. I fiddled with it a bit late last night, and I like how the arms rotate, I’ll probably look at it further later on. But one question that comes to mind is why you haven’t locked the rotation of the forearms? A forearm can only rotate on one axis, but it appears one is freely able to rotate the forearms of that rig in any direction one wishes. As I said, I only briefly looked at it, but it appeared to me to be an IK rig with no options to switch to FK. Any reason why? Or am I incorrect?

Also of note, I’m doing this in 2.5a2, and yes, I know it’s incomplete software at this stage (I found a bug in it yesterday pertaining to the renaming of bones in recent builds) but I was thinking the ‘auto normalize’ feature in weight painting would balance out the weight paint. Perhaps it could have been because I wasn’t heavy with the weight paint. I was under the assumption that this feature would restrict one from having a vertice 75% weight painted to one bone, and 75% to another bone. As I said, maybe this was because I wasn’t heavy with the weight paint.

Thoughts and comments welcome…
Randy

You’re right, those bones don’t really have to be there, and in fact I hide them in normal working practice. I built this rig years ago, it was my first human rigging with Blender, and TBH I did some noobish things that I’ve since learned aren’t absolutely necessary. But at the time, it was part of the learning curve, and it’s more trouble than it’s worth to now make it all "perfect.’ The non-deforming and pretty much non-functional bones do no harm, so I just ignore 'em. I’ve got a couple of features in the rig that I found once I started animating were not really needed, but it’s easier to just disregard them.

The entire rig is different than many in that it’s designed to use the Armature as an Object for whole-body moves, with external IK controllers for the legs, whereas most rigs use all bones for this kind of thing. But after trying that route (noobishly, it must be admitted), I found that for some of the more energetic moves the figure goes through, that the Armature-as-Object approach worked better for me.

Concerning the hip structure, I learned in martial arts training how critical the hara is to maintaining centering, and that it corresponds fairly closely to the body’s mass and balance center, so I chose a structure that makes that area central to how the body as whole moves. All hip rotations filter up & down from the “hara” (the Pelvis rotation point) through the rig to affect the legs and the upper torso, which often requires counter-rotations in the spine, just as the trunk muscles provide for. Since my arms are nearly always under FK, that’s pretty straightforward. For the legs, keeping them acting naturally also means paying close attention to the hip positioning, both laterally and vertically, which I do by adjusting the entire armature-as-object. Since the center of this Armature/Object is the “hara” point, it all works together very well.

I didn’t intuit this all before building the rig – I made a lot of adjustments and re-structuring while doing deformation tests. Plus I had to set up & test the pydrivers automation and get it all working together, so it was a very evolutionary process.

My search on hip and shoulder rigging, skinning landed me on this discussion. I must humbly confess all of you sound too much ahead of the game than I could ever manage to get to. I had not come much further than getting my Captain Blender character up and working. I was not very satisfied with my model and a few attempt to animations. When I tried to pose him for my martial arts moves he failed. Then I went on to search and find some free models that would be much better than I could do at my current skill level. Unknowingly I picked a free model which had the worst topology you could imagine. You could not edge loop select anything. There were none in close to couple of hundred thousand triangulated faces. I worked on it for months, trying to clean up its topology. Brilliant me was going to save me lost time by using a model already built]I rigged it to Captain Blender armature, finally got him skinned, i.e managed to define all vertex groups for each of the bones. Knees? I managed to get the fan shape in and knee deformations were acceptable. Hip and shoulder deformations remained a big mess. I assumed it was the incorrect topology that was causing me that much headache. The model was not going to do it for me.

I went on a search, while in my last bout of hospital stay obviously MakeHuman folks came out with their first alpha release for windows. Boy, does it create a nicely topologized mesh models that could be imported into Blender. Yup. I discovered it last nite. I had my first 43 year old male model build, imported into Blender, rigged to Captain Blender rig. Well he is all ready to go. Knees deform well with the middle fan edge loop assigned to a knee bone which copies rotation of its shin bone. Shoulders and Hips are still a mess. I need advice on how to rig and skin them. No, the edge loops in those areas are not neatly horizontal or vertical. How could they be? They follow the contours of the buttocks and shoulder blades.

Other than the high level discussion, is there a summary on how to shape the mesh around those problem areas, what additional bones to add, what constraints to add? And how to skin (assign mesh vertices to their corresponding bones). In one shoulder skinning, when I added some armpit vertices to one edge loop that went around the shoulder assigned to a stationary bone, I at least prevented bicept from digging into the armpit upon lowering the arm, and digging into the shoulder upon raising the arm. The deformations are not natural looking though. Could someone remind me how to incorporate picture into our notes.

Related to these, could the rotation of lower arm problem be solved? Yeah, may be with shape keys and with a lot of work. Any simpler solution yet? MakeHuman group is working on animation I hear that involves a thorough knowledge of human anatomy using muscles. Did anyone attempt to using stretch to constraint and muscle modeling for those problem areas?

I haven’t even progressed in my rigging to have studied and understood ManCady rig. I found some free rigs and characters out there, Ludwig must have been the grandfather them all. Captain Blender rig was based on him anyways, minus it did not have some movement limits Ludwig used which I find most helpful. Captain Blender’s knee could bend backwards, but Ludwig’s does not. Anyhow, all the working free models were build on caricature, cute, stick models. They don’t work as smoothly on more realistic looking models.

Could there be a buddy help group on rigging, and skinning issues? I need to rig my character so I can get him do marial arts, more specifically, s/he is going to help me create the display for the Guang Ping Tai Chi Chuan book I have just finished writing. Are there any people out there who is familiar with martial arts exercise physiology as well as rigging, so we could form a sub interest group?

Sorry for being this verbal. The problem of rigging, skinning realistic human looking models with Blender must have been solved. Where can I turn for more information? Could someone recommend me next steps? What should be my next step to building a rig that can animate a “human looking character” into martial arts moves. This involves increased ranges for joint moves. Not small hip rotations needed for walking, running. S/he will need to kick high, kick low.

I have been having two hip/groin deformation problems:

  1. Buttock flattening: As legs swing higher up they flatten the buttock. I think I managed to fix that problem. I haven’t tested the rig for all potential motions to make sure buttocks remain well defined for each. The attached pose would show how the hip behind moving leg is still round as put in place by red circled bones that protect buttock definitions throughout deformations

  2. Hip & Thigh boundary vertices, around groin diving in. Having a HipFan vertex group did not fix this problem. No matter how I picked vertices for it. I even attempted to stretch the vertices in that group to correct for the problem depicted by the enclosed photograph.

As a side note, please look at his inner knee on this raised leg. Some vertices are protruding from the side of the mesh? Small problem, but should not be there at all. Any ideas how I could fix it? I tried stretch bone idea, could not get it working.

My baby character does not have any textures yet. When he is able to move, he would deserve to look good.

Attachments


Glad you like the rig.

The forearm rotation issue bugged me somewhat. If I lock the rotation of the forearm, but not the control bone, then the two don’t always lie parallel, so the whole operation gets messed up, especially when you do a local Y-rotate of the forearm control, and the arm moves instead of rotating. If you try to lock the forearm control bone rotation, then what axis do you lock it to, as it is a floating bone?

This means that it is possible to bend the elbow sideways, but I would hope that most animators are aware that arms don’t bend that way, and compensate!

There is an FK setup, one of the layers has an FK/IK control for each arm, and a set of targets for each finger, so you can position the hand exactly as you want it. There is no lock to lock the arm control to the torso, though. Personally I couldn’t see any point in it. You never keep your arms rigid and move your body in real life, - you move your arms, and position your body to allow you to reach/push etc with that hand/arm.

Matt

meloblends - I think 90% of all deformation problems can be cured via good topology and good weight painting. At the same time, I really don’t think there is any such thing as perfect topology - in that not all possible deformations can be cured via topology. That’s why blender also has driven shapekeys and the mesh deform modifier, but to me, they should only be used when topology and weight painting can’t cure the problem. Fan bones are also a good solution, but I think you kind of have to be careful with them. Weight painting can become messy, too many bones weight painted to a vertex can make it hard to trouble shoot where the problem is, as in which bone is causing incorrect deformation.

One problem that I think happens all too often is weight painting is rushed, or is to heavy in spots. While rigging and testing out the rig, if I have a deformation problem, I jump back to weight painting to correct it. Weight painting can be varied in 2.49b by 25%, 50%, 75% and 100%, however, all weight painting adds up to 100%. For example, a mesh has 25% weight paint on one bone and 50% to another, in the end it would end up being 33% and 66%. Alternately, say a bone has 75% and another 75%, this ends up being 50% & 50%. For 2.49 there is an additional script - auto normalize - I think that, that can be useful. Weight painting appears to have greatly improved in 2.53, a slider now controls the amount of paint, instead of the old 25%, 50%, etc and auto normalize is built in.

In the attached screenshots I show my character with a pose similar to yours, the deformation around the hip was just done with topology and weight paint, nothing else. The other screenshot shows the weight paint applied to the upperleg bone, notice how it varies and fades out close to the hip area. When weight painting, I prefer to turn off subsurf, set the mesh to solid shading, and also enable wireframe and solid display, this way you can see exactly what you are weight painting, the actual vertices of the mesh.

I think the problem displayed in your pic could be cured by reducing weight paint on the upperleg bone around the hip area, and increasing it for the hip bone. As for the knee problem, I’d have to see the mesh.

Whew, I’m rambling on here…
Hope this helps,
Randy

Attachments



Take another look at the tools – weight painting in 2.49b is not limited to 25% increments – you can set any weight for the brush you want between 0 and 1.0, and that can be modulated again by the opacity setting, also 0 to 1.0. Lots of subtlety possible. I often paint with weights as low as .01 in fringe areas where weights are shared.

The sliders in the Weight Painting panel aren’t very subtle, so I find it easier to enter a numeric value when I want to be really specific about a weight value.

Thank you chipmasque, thank you revoltrandy.

It did end up being an issue of defining those darned vertex groups appropriately for the deformations to work out correctly. I am afraid I have been shooting myself in the foot for the past couple of years since I have been struggling to learn Blender. From day 1, I did not care for weight painting tools, as the selection of vertices associated with the bone in question felt too imprecise. Similarly the weight value that could be assigned to the group, felt too crude.

In edit mode. once you pick the vertex group you are interesting in defining, refining the definition of that group, you could use all the cool multiple vertex selection tools. One can define regions of interests very precisely, as well as entering the exact Weight value to assign to your vertex group. Skinning therefore takes a long time for me. Lots to edgeloop selections. Then trying to keep up with the vertices that would be in the cross section of the multiple bones. I had to turn skinning into an exercise in set theory. How could I define all my some disjoint, some overlapping vertex groups for sometimes 100 or so bones. Because of blowing time on all those irrelevant issues, I could never make the progress I needed to make. I frustrate the heck out of myself… Skinning was not meant to be a precise science I am afraid.

Sorry guys. I should be more respectful of your times. .

It tooks me 3 weeks of trying grouping and regrouping the vertices around the hips. that is changing weights and boundaries between hips, thigh, hip fan, and buttock definition vertex groups. until buttock stopped flattenning, and groin kept sinking. All sample rigs and characters are simple caricature ones with skinny legs, arms, and low poly counts. I could not find a model of a real humonoid to cross reference my topology and skinning decisions.

Now I am 4 weeks into trying everything I can think of on shoulders. He refuses to coorporate.

Well, he can do the high Tai Chi kicks now without breaking up. What do you say?
Please see how bad his Left shoulder is, arm pit is digging in. I have tried everything I can think of. All skinning combos, playing with various rigging ideas. Nope, nope, nope. :no:

.

Attachments