Weight, balance and walking

General discussion about JPatch

Weight, balance and walking

Postby sascha » Mon May 22, 2006 9:29 am

With the last development snapshot (May 2006) it was virtually impossible to animate a walking character without the "slipping feet" problem. Ok, let me correct this: It was absolutely impossible.

Since IK and IK lockdown will take some time to develop, I decided to quickly implement my initial idea of "anchors". It was straightforward to implement and it is really easy to use. It basically works this way:
Each character can be anchored on a controlpoint or a bone-end. There's a new motioncurve called "anchor", so you can switch the anchor during the animation (you can also set it to "null", which gives you exactly the same behavior as before).

Let's assume the character is "anchored" at a point on the ball of his left foot (on frame 0). This means that the anchor point will stay on its place, no matter how you pose the model. This way it's possible to do a walk: Add keyframes and poses until the right foot touches ground (e.g. on frame 9). Now set the anchor to a point on the heel of his right foot. Continue animating the foot rolling until the ball touches ground and set the anchor to a point on the ball of the right foot (e.g. on frame 12). Now repeat the whole thing with the right foot planted on the ground and the left foor moving forward.

When the anchor is set, the position curve is automatically updated, so the character doesn't jump from one place to the other. It also works well when the orientation changes (e.g. walking in a circle).

This is no replacement for IK lockdown, but it is a start. Once IK lockdown is implemented it can be used instead of this, or used in combination.

I'll upload an updated version and some demo animations soon.

With this new feature, walking characters are possible, but it's still not trivial to get a character to move in a convincing way. I guess this is related to weight and balance. David said that the characters in Elephants Dream lack the feel of weight and move like marionettes - I think this is getting to the core of the problem. The Animators Survivial Kit has some useful hints about it, but I suspect that animating a walk in 3D is even harder than an 2D. You somehow expect the exaggregated look of 2D cartoons, paired with the physical accuracy of a 3D simulation.
Some animation tools seem to have some kind of "auto-balance" feature - this might be a bit too much, but I'm thinking about tools to make it easier to balance a character.

My idea is this: The user can enter a weight value for each bone (this leads to the question: does anyone know the masses of an average human foot, lower-leg, upper leg, hip, chest, shoulder, arm, head, etc.). An alternative would be guessing the masses by approximating the volume of the area that is bound to that bone (which could be tricky to compute). With this information it's easy to compute (and display) the barycenter.
If the character is not in motion, the barycenter (from top view) should lie within the quadrilateral spanned by left heel, left toes, right toes, right heel. If he's standing on one foot, the center of mass should be above the base area of this foot (or at least in avarage - it could also circle around that base area).

So, showing the barycenter in the viewport seems to be a good idea. When the character is in motion, things get a bit more complicated, but knowing where the barycenter is is still useful.
In addition, JPatch could show the barycenter in motion (e.g. a motion vector), and the forces that act on the barycenter (gravity, acceleration and the vector sum of both).

Another idea is to add an option to display "tracks" in the viewport. E.g. select a point or bone (or the barycenter), enter start- and end-frame and let JPatch plot its motion track into the viewport. This is a bit similar to onion skinning, but more focused.

What do you think?
sascha
Site Admin
 
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Postby dcuny » Mon May 22, 2006 6:58 pm

I like the idea of being able to anchor the foot. It seems like a pretty elegant solution to the problem. :)

On the other hand, I think trying to automatically balance the character is overengineering a solution. Check out the Does anyone use autobalance? thread in the Hash Forum:
Raf Anzovin wrote:At this point, I think I should really go on record and say that I hate autobalance. And I INVENTED the damn thing.

I'd never use it. I'd never advise anybody else to use it. It does nothing but get in the way. The only reason it's still in the Setup Machine is because we didn't want to remove a previously existing feature, just on the off chance that somebody out there is actually using it.

What can I say? I was young and stupid, and it sounded like a good idea at the time. :roll:

From a different thread, I found another good explanation against autobalance:
robcat wrote:You can make a rig that shifts when a foot is lifted, but in almost all animation situations, the character needs to shift before the foot is lifted. I can't think of a situation in which the character could lift a foot before the weight was shifted to the other foot (without falling over). Try it.

Which brings up the problem of ... how would you make a rig that knows to shift the character before you lift the foot? Maybe some sort of negative lag on a constraint? But I doubt it would be satisfactory in enough situations.

My guess on Elephant's Dream is that the animators overly relied on IK to do the job. They didn't develop strong poses for the characters, and they didn't think in terms of weight, anticipation or follow through. In other words, they didn't think like animators. I don't think that's something that can be automated. Not yet, anyway. ;)
dcuny
 
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Postby sascha » Mon May 22, 2006 11:02 pm

On the other hand, I think trying to automatically balance the character is overengineering a solution.


No, I wasn't really talking about doing it automatically - that would be difficult, and wouldn't look good in most cases.
My idea was more like a visual aid for inexpirenced animators (like me): Just a point in the viewport that shows where the center of mass is, maybe with some arrows that show in which direction it's moving and which forces act on it (starting with gravity and acceleration).
Even if an expirenced animator wouldn't use it, I could imagine that it can be of help when learning why some movements "feel" right while others don't. I'm sure that with time and expirence everybody develops an intuition for such things, but such tools could perhaps speed up the learning process.

It's the same with the "onion skinning" tool (but I think this is common in animation software and also actually used by animators).

I don't think that's something that can be automated. Not yet, anyway.

Psst! Let sleeping dogs lie (9) :wink:
sascha
Site Admin
 
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Postby dcuny » Tue May 23, 2006 1:22 am

Well, if you want to add it, it is your program. :)

I do like that onionskin idea, though... ;)
dcuny
 
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Postby sascha » Tue May 23, 2006 8:59 am

I do like that onionskin idea, though...

In a first step, it could render a grayed out skeleton, say for the past and the next five frames.

I've had a few other ideas:
* Multiple items in the clipboard (and possibly a feature to save them with the animation or the model) - aka "actions".
* A possibility to map the curves of an action to other curves when pasting. There could be an automatic option to paste the "mirrored" action: e.g. you animate a step forward with the left foot, select it, copy it, and use a "paste mirrored" too - which would automatically swap left and right sides - this only requires proper bone names (starting with left or right).
Another option would be a mapping editor. This way you could e.g. paste some keys from the forelegs of an animal to the hind legs, or even paste an action from one model to a completely different model.
All that's needed is a dialog that shows all the curves used in the action on one side, and the curves of the selected object on the other side. The user could then map one side to the other side.

The other idea are relative keys, or a kind of "build up" mode when pasting. When turned on, you could e.g. animate a character stepping up two steps of a spiral staircase. You could then select the action, and copy and paste is several times - the character would continue to step upwards.
sascha
Site Admin
 
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Postby dcuny » Tue May 23, 2006 8:59 pm

sascha wrote:
I do like that onionskin idea, though...

In a first step, it could render a grayed out skeleton, say for the past and the next five frames.
I think that would work well. It would also be nice to be able to set a keyframe as an onionskin. For example, when setting up a walk cycle, it could set the first frame as the onionskin, and ensure that the left leg stride matches the right leg stride.

Something I've seen in a number of programs is that unkeyed objects (background stuff) is rendered in a neutral gray, so you can concentrate on what's being animated in a shot.

Which reminds me of another feature: keyframe entire frame. For example, you might want to get rid of a set of end keys, but want to keep a middle pose. Keyframe entire frame would set keys on the curves for the current frame. You can do this manually, but it's a bit tedious.


Multiple items in the clipboard (and possibly a feature to save them with the animation or the model) - aka "actions".
Why not just save them as actions? I guess you might want temporary actions, but I haven't really thought about it much.

There could be an automatic option to paste the "mirrored" action: e.g. you animate a step forward with the left foot, select it, copy it, and use a "paste mirrored" too - which would automatically swap left and right sides - this only requires proper bone names (starting with left or right).
Yes, that's on my wish list! You might want to set up a warning, in case bones are oriented differently.

Another option would be a mapping editor. This way you could e.g. paste some keys from the forelegs of an animal to the hind legs, or even paste an action from one model to a completely different model.
I haven't found a need for this... yet.

The other idea are relative keys, or a kind of "build up" mode when pasting. When turned on, you could e.g. animate a character stepping up two steps of a spiral staircase. You could then select the action, and copy and paste is several times - the character would continue to step upwards.
AoI has relative keys that are additive; they seem to work pretty well. Blender (when I checked last) has a hierarchy. This allows you to stack actions on top of each other, with the item on the top of the stack overriding something below it. If there's no conflict, the lower item comes through. An example of this is in the Blender manual, where a hand wave is layered onto a walk cycle.

You might want to have a look into how other programs implements NLA (non-linear animation) - it'll help JPatch be buzzword compliant. ;)
dcuny
 
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Postby sascha » Tue May 23, 2006 11:06 pm

sascha wrote:Another option would be a mapping editor. This way you could e.g. paste some keys from the forelegs of an animal to the hind legs, or even paste an action from one model to a completely different model.

dcuny wrote:I haven't found a need for this... yet.


The main application would be pasting actions from one model to another. JPatch references the motion-curves by name (e.g. a DOF is referenced by it's bone name followed by the dof name). If you have a model with a similar skeleton, but different bone names, such a mapping could help to apply an action built for a different model.
sascha
Site Admin
 
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Postby dcuny » Tue May 23, 2006 11:24 pm

OK, I understand now.

I could see it being useful, but most likely, wouldn't people just rename their rigs? It's about the same amount of work.
dcuny
 
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Postby sascha » Tue May 23, 2006 11:33 pm

I don't know :)

I mean, you could animate a horse by animating just a single leg, and then pasting the tracks to all 4 legs. Now imagine the time saving when animating a centipede :wink:
sascha
Site Admin
 
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Postby dcuny » Tue May 23, 2006 11:41 pm

Heh. :P
dcuny
 
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Postby sascha » Wed May 24, 2006 8:46 am

sascha wrote:There could be an automatic option to paste the "mirrored" action: e.g. you animate a step forward with the left foot, select it, copy it, and use a "paste mirrored" too - which would automatically swap left and right sides - this only requires proper bone names (starting with left or right).

dcuny wrote:Yes, that's on my wish list! You might want to set up a warning, in case bones are oriented differently.


The magic word here is "auto-mirror-tool" :wink:
It does mirror all the DOFs, the cp->bone assignement and even the "smartskin" morphs.
sascha
Site Admin
 
Posts: 2792
Joined: Thu May 20, 2004 9:16 am
Location: Austria

Postby dcuny » Wed May 24, 2006 9:41 am

I'll obviously have to play with this a bit more. I thought Auto Mirror was only used to create a mesh. It never occured to me that I could use it after the basic modeling was done. :shock:
dcuny
 
Posts: 2902
Joined: Fri May 21, 2004 6:07 am

Postby dcuny » Thu Feb 08, 2007 10:06 pm

Not entirely on (or off) the current topic; I ran across this image on the Blender site discussing a new walk cycle tool:

Image

I've seen this sort of "motion curve extending into space" in other programs, and it looks pretty cool - especially if you could change the spacing from that view.
dcuny
 
Posts: 2902
Joined: Fri May 21, 2004 6:07 am


Return to General discussion

Who is online

Users browsing this forum: No registered users and 4 guests

cron