A method for joint pinning. Proposal.

Animation tools, character animation, non linear animation

Moderators: jesterKing, stiv

Post Reply
Posts: 0
Joined: Fri Apr 02, 2004 6:34 pm

A method for joint pinning. Proposal.

Post by oin » Fri Apr 02, 2004 7:19 pm

First, I have to say I have read, understood and executed the foot tutorial from Weirdhat, and so more or less understood how it works. yet so, that method forces to do separate branches for an skeleton, only just linked or parented. And sometimes, you can have slight separation of foot from leg. (I know, being careful...)

I don't know if this is possible in Blender. And probably have been thought already. The fact is that is present in 3ds Max's Character Studio. In its module called Biped. I worked in certain job with that feature, and now I miss a lot that whichever the software I use.

It consists on you can like "glue" a joint to whatever the point (world, global, however you call it) in space. You position the joint by doing fk or ik rotations, and then , with it yet selected, hit a button or key. So, that joint is pinned. For that frame and keyframe, and for the following ones (not the previous ones) till you "release" the pinning, hitting othe button, or better, key. (maybe same one, doing a toggle for each joint)

So, a joint could be then "pinned" for a frame, a keyframe, for several frames, or several keyframes. having it available so quick, is what actually improves so much the animator's workflow. And the great freedom of ik and fk moving/roating bones while bein sure that foot (or feet) stay glued to the ground in its position, or that hand stuck to, for example, a branch while the character does balance keeping the hand in place.

This ends in having way more hours on actual animating than in fixing constantly those pivot points, which you anyway will ever set 100% fixed if there's no pin feature.

Also, really avoids the need of very complex rigs with lots of constrains, etc. Indeed, complex rigs will still benefit, but I mean I can do very complex animation, and very quick just with actual Blender bone system and a joint pinning feature.

In Character Studio 4.1 for Max 5, it is called "fixed key". Is a button you just press and press again to release at whatever the following frame or keyframe. It has a variant also useful, called "sliding key" which does something similar, but more free...is not that useful, as what is really needed is a total fixed key; though, I used for some situations where I wanted the foot too slide a bit, but not go bellow the floor, etc....
usually, sliding destroys most animations, and means a lot of work for solving that each keyframe.

Probably is possible with complex constrains conbinations, and complex rigs, but I think for the not very expert Blender users, and also for speeding workflow of animators, if it were done this quick an easy, would be great. Also, I think for 3d games export, it's better to keep all in a single armature for a character, if possible, this also helps avoiding unwanted leg (etc) extending, which is good for toon models; not so good for accurate humans animation.

And anyway, thanks a lot for at least reading this suggestion :)

[ I have not seen this feature anyway in the test builds of Tuhopuu nor BF-Blender in the history of changes.]

Posts: 98
Joined: Fri Oct 18, 2002 2:47 pm
Location: Pennsylvania, USA

Post by harkyman » Fri Apr 02, 2004 8:07 pm

I suggested this very thing a while ago on the functionality board.

After doing more research and lots of thinking, though, I'm not sure that it's the best solution for Blenders current character animation deficiencies. I've come to think that the Kaydara Motionbuilder technique of bone-locking between poses would fit in much better with Blender's NLA system. I'm working on a proposal for right now and trying to figure out who is the best Blender coder to approach with it.

Posts: 0
Joined: Fri Apr 02, 2004 6:34 pm

Post by oin » Fri Apr 02, 2004 11:05 pm

I see...Thank you for the info :)

Still, not sure how functional could be in animation to lock between poses and not able to lock just a joint...But the fact is I only know the minimum of Blender animation system, though in this matter did tried hard to learn it.

Thanks again.

Posts: 98
Joined: Fri Oct 18, 2002 2:47 pm
Location: Pennsylvania, USA

Post by harkyman » Fri Apr 02, 2004 11:40 pm

The problem as I saw it was that when using the NLA, you had to keep the center of your live armature coincident with the center of the armature object, or else you got all kinds of horrible sliding/gliding when going from NLA strip to NLA strip. It's a pain in the butt almost to the level of being non-useful.

At first I thought that a world-pinning key like you've suggested would do the trick. The thing was that the original problem of moving from strip to strip remained. If you created a simple walk cycle action using this world-pinning, then animated the character along a path with NLA, repeating the walk cycle action, it is unclear how the world-pinned keys should react. If they were truly pinned to world space, then you would need a seperately set key for each step in the cycle, defeating the usefulness of NLA.

The cool thing about "bone locking" as I call it is that it elminates this problem. Say you have two NLA action strips, one with the character moving away from the center point of the armature object, the other is the character jumping in place, centered on the center of the armature object. You set the Jump action's Bone Lock constraint to point to the bone in the first Action that will be your "pivot" bone. Which bone will be a solid reference point in the first Action, most likely, the foot that is bearing the most weight. The second action then applies an appropriate transformation to itself such that the same bone in that Action strip coincides in world space with the same bone from the end of first strip. Voila. The character anim matches. Problem solved.

What would really make things easier after that, and I think this would help you, would be a "floor" constraint that would not let bones go below a certain specified level or object.

Posts: 0
Joined: Fri Apr 02, 2004 6:34 pm

Post by oin » Sat Apr 03, 2004 10:26 am

I am afraid I just learned(besides basic Blender editing) in Blender to import an obj with uvs, bones creation, asign weights groups, and just rotate/move bones, and set a key with the I key. (Basicly how I use other animation softwares, like Character Fx, or Truespace...or Max and character Studio while was at certain pair of jobs. )

So, all that of NLA and NLA strips is a bit beyond my knowledge. But basicly I understand th eproblem you see is when you are reusing fixed keys bewtween to chunks of animation (that you reuse, like clips) the absolute world position is another (actually...I think is not a problem in Character Studio, I wonder how they do that...) and I see the problem... Maybe something to "add" the x,y,z amount which has needed to change position? I mean, if aboslute biped position as changed + 3,7,2 , add it to the absolute fixed points...make it relative somhow..I don't know...

I purchased Truespace 4 in its retiring offer the other day. (pitty it does not have weights control more than include-exclude from area, and also the weights are not traslated well to x file) I did so just for having a similar feature to this we're talking, and as a user made an x export plugin that supported weights... (I actually mainly plan use Blender as my realtime character animator exporting in x format.) TS4 has a system to do this, is more a lock-bone thing. You have a blue icon that you position in a bone. Then , that bone is like the root. If you ik move any child joint, it will stay glued.You can go changing in every keyframe the nail position (actually it just lock a bone) and so do somehow much better animation.

Still, that does not give you much freedom. My point, is would have be much more useful to do the same with a single joint (not two = a bone in ts...) Anyway, that package does not work for my needs in realtime games, as I explained. Would be nice to see a feature like this in Blender. For general animation, high res or games.

I wish I had a link to a cs tutorial so you could see how is done, though I already think you know perfectly how it works.

If your idea would allow a join to keep not moving, that'd be nice..

about the floor thing..yep, cstudio what does is you move the biped to jump...the foot react as with "gravity" (they try to point to floor as in real life, while get unglued) and when you move it lower (even in same frame, just for testing) the feet stays glued to floor, making (surely some type of strange ik or something) the whole leg rotate correctly (that is also as cs biped already comes with human rotation limits, etc) flexing perfectly. That is if you did set a fixed key, or sliding key (for these cases I think is needed and sliding one) in a previous keyframe, in a joint(both feet) and at a height that was in what you consider the floor(for this I used the grid as a visual reference, in a side view.) This allows going up upstairs, anchoring hands to points, etc... All this stufff of glueing is more needed than it is known...every walck step is done way easier with it...

Well, whatever. I just don't know Blender enough (but I insist I did the foot tutorial, and been playing with the Blender's animation tools) and you know it much better, even internally, so I suppose that proposal fits better. :)

A bone locking would benefit a lot indeed (just I hope doing so with just a joint instead of a bone , is considered)

I'll try to find anyway video tutorials of any package that has this feature, specially Character Studio, to illustrate the idea a bit.

As you see, I am a "other-softwares" user trying to make the move to Blender, still not loosing a few of the important features. (indeed, now for me it's only this one and a directx8 x file export, which already is being done.)

Posts: 0
Joined: Fri Apr 02, 2004 6:34 pm

Post by oin » Sun Apr 04, 2004 3:17 pm

Related to this problem, excuse me if I ask a nonsense, but...Is there a way to add copy location constraint to a bone,the location of an empty without having the parent of that bone get disconnected(broken from the chain) from it(indeed, the affected bone goes to empty position, but parent stays where it was, does not rotate nor its parents )? Still, I'd like it forced to make the needed rotations on all the bones of the chain to track the empty, but without disconnecting...(like an ik thing but towards the empty, and head for the foot bone which now is exactly at the empty)

Would this provide a way to have these glueing points, just go changing the empty/s position as needed during the animation?

For directx/game export, I need the change to be one only piece, that's why. Also, this method would seem to me quite simple, and maybe more similar to max, etc...(people who work with Max bones(I only used Character Studio at a company), I think call these empties controllers, or helpers..)

Again, sorry if this is a too newbie question.

Posts: 0
Joined: Fri Apr 02, 2004 6:34 pm

Post by oin » Wed Apr 14, 2004 2:11 pm

I made a screenshot movie of another wonderful 3d free package that has this feature just perfect. I did not set joint limits, nor anything, just downloaded latest version today, made 3 bones, and handled it, as you see.

HERE (627 ks zip. 5 mb once decompressed. Avi, Microsoft 1 codec (sorry))
If I remember when I had Mandrake installed also, kde tools could read it....is the most old and basic ms windows avi codec.

(Notice: another sugestion: I can handle them directly, but also I have a handle to rotate in each axe direction. Gives a valuable extra control to be able to rotate directly paralell to screen(view) , but also rotate with a Maya like gizmo.A note to this in blender.It's also important that rotation gets locked paralell to screen...and not rotate "in depth" as you don't control it, and if needed in depth rotation, better done just thumble to roatet wolrd and edit in new angle. )

See how blazing quick is the workflow .This is totally ideal for the artist. Is even quicker in workflow than character studio planted key/free key. No need of rolling panels digging.

Just: control (ctrl key) + click, creates a joint. Click on a joint and drag rotates it (that is, not varying lenght, imho better) paralell to screen .Shift click, sets a planted key, or deactivate if it was, once u click there again.The movie is self explanatory.

That's a dream for animation.

Anyway, I switched to Blender instead of this and some other softwares as:

-none of the other had the x export (with help of Ultimate unwrap, I can export x to any game format, and x engines)

-It's really powerful
-weights asignements works nicely.
-very good material editor, very nice rendering
-many other reasons.

INMHO, this would actually be a really big advance.

Imagine that chain is a leg, and u'll know what I mean. :)

Posts: 0
Joined: Mon Jan 27, 2003 11:22 pm

Post by dcuny » Tue Apr 20, 2004 2:26 am

You didn't mention it, but your video is of Art of Illusion. It's an free, Open Source Java application, so anyone can download it and play around with it.

The 'pin and drag' interface is based on Animanum. It's a little ironic to see this posted here, since it first came to my attention via this thread. Once I saw it, I bugged Peter Eastman until he added it to AoI. So to see the topic reappear is sort of having it come full circle. :)

I don't know of any particular reason why this couldn't be added to Blender. Since AoI is Open Source, there's no reason why someone couldn't have a look at Peter's code and figure out how he does the magic.

For anyone that decides to take a look at AoI, the main problem with the animation system is that it's not yet integrated. You can create poses using the IK system, but you can only create bones-based animation from the main window by morphing poses into the pose track, not by moving the IK bones directly. That feature should be added in the next release, which will make it a lot more usable - animating using only morphs is pretty difficult.

Another thing that's pretty neat that you can see in the animation is a little three-handled widget that pops up when you select a joint. Grabbing the widget lets you do FK from that joint (bend X/bend Y/roll bone).

Posts: 0
Joined: Fri Apr 02, 2004 6:34 pm

Post by oin » Tue Apr 20, 2004 8:40 am

I thought I had mentioned it...

yes, it comes from there. :) And yes I know that problem, and that about weights. And yep, it works like with moments that you mix(imho is maybe a vertex animation thing internally than the typical bones and weights format that can get stored in a *.x file for games, with constant weights asigned to vertices).

Is a different approach, but... Is not just that i suspect..I am almost certain it will be changed to a more Blender like approach for animation, bones and ("non destructive" ;) ) weights..sooner or later ;) .

I am eager to see that too, as is my other favourite animator, coming near Anim8or too...

(you see, I am a use-it-all kind of user.Kind of paranoia. ;))

But indeed...joint pinning in this way I think has been long time in Mirai... and I am 99% sure in Maya (even surely when it was the modeller and alias power animator, now it's xsi and maya two full packages..;) ) had this; is a needed advanced feature. max/cs had it long time ago.
And someday I'll load the skelegons in Lightwave demo, just for curiosity sake, surely that one has a really nice approach to this...

Art of Illussion is a great software, very nice renderer, and is a do it all software that becomes really useful :) I am following its continuous evolving, too.

Posts: 0
Joined: Wed Apr 21, 2004 8:54 pm

Re: A method for joint pinning. Proposal.

Post by bfvietnam » Wed Apr 21, 2004 10:09 pm

oin wrote: In Character Studio 4.1 for Max 5, it is called "fixed key". Is a button you just press and press again to release at whatever the following frame or keyframe. It has a variant also useful, called "sliding key" which does something similar, but more free...is not that useful, as what is really needed is a total fixed key; though, I used for some situations where I wanted the foot too slide a bit, but not go bellow the floor, etc....
usually, sliding destroys most animations, and means a lot of work for solving that each keyframe.
It would be neat to consider all the ways that IK can be done, I
think blender borrows a lot of its technique from Alias and Maya,
but these are not the best ways, just more intuitive for some people.
I mean there is IK that does not use Up vectors, and has joint goal constraints for both rotation and position. Maya has a concept of a
sticky handle (which is like what you are talking about, but maya doesn't use Empties, it actually has a visible representation of a IK'd limb resembling a neon line passing through the joints). Maya only supports
soft stickied handles (position constraints without rotational constraints).
If you have both positional and rotational constraints, its called "Hard Sticky", and that went out with an older package called Kinemation.
There is a new package called "Sega Animanium" which I would like for
blender to have support for as it would be easier just to purchase that
package and use blender for the rendering than to reinvent the
wheel in blender. It would also be cheaper than having to purchase
the packages that Animanium will only work with.

But blender has stopped being a commercial package, its open source,
so either you are wishing or implementing. An IK professional will
not just fall from the sky and do it just because we see a need, Ton has even expressed disastisfaction with the IK system and said there really is nothing to do about it, unless someone has a definite clue about it.

I think it would be nice if Sega Animanium was merged at the hip to blender and just used blender to satisfy the environmental needs as animanium doesn't have much of an environment and the IK it uses is a lot nicer than what blender has.. But to use Animanium you have to own at least Lightwave.. Which just makes it more costly..

Note copies of Animanium are going for about 900 dollars now, that's down from abotu 1500 like it was selling..

Posts: 0
Joined: Fri Apr 02, 2004 6:34 pm

Post by oin » Wed Apr 21, 2004 11:47 pm

I don't agree much with that...

I like Blender's ik...and fk. I, instead, could animate characters quite well just with :

-A pinning method for joints. (seems they can do it with not much hassle for all spoken here lately .So that's surely not far away, and is imho the biggest poblem, so , blender is quite almost there...)

-A way to force rotations be done paralell to view, to the screen plane. And not in depth. As you go turning with middle mouse button, you do this fk rotations(some times ik posing for speed) and so pose very accurately the model.

But I could even deal without second one.

That it has not got the bells and whistles than Animanium (have you ever animated seriously with character Studio 4.x(in 3ds max)...is quite good...)
Nor the ones in Hash Animation master, nor those in Character Studio, Lightwave or Maya...
But...imho, if you know about posing, natural movement, etc, the mentioned features above, specially the first, with which already is there is quite a good set to do a lot.

Just wait till those are added (well, the first one) and then give Blender animation a big try, as I think it's very promising already.

I like Blender as it is quite straight forward once you know well the interface, though is so different to other uis. But once you learn it, is like any other thing.

BTW...i would not waste 900$ on Animanium...I'd go first with hash Animation master299$, or Kaydara Motion Builder 200$? (with fbx plugin you have more compatibility (max, lw, maya, xsi...))
hash has a VERY nice rendering system, and is way advanced package in all fields (just modelling is aaall splines...be aware) No need to export anywhere...Kaydara is only an animation advanced system, that exports in FBX; is thought to export character anims into max, maya, for render, games, etc

They absolutely rock for animation.

But...as said. Blender has all what I need to make human animations fully and as good as you want... I mean, when able to..."pin" ;)

There's a point where...well..depends MUCH more on the animator, the man/woman using the softtware than very seet features...I mean...once posing is possible, and things CAN be done...the eyecandy thing is always wellcomed, but I have seen people WRECK an animation trying to mix mocap files, and use footsteps...as they did not have an idea of anatomy, human motion, etc...

With that feature, Blender has an incredible great set(and to think it's free..:o ) already... and allows to do the stuff.

i have seem some incredibly good animations done in blender already.Not many character animations, but that maybe me bad in searching...

Posts: 0
Joined: Fri Apr 02, 2004 6:34 pm

Post by oin » Wed Apr 28, 2004 8:22 pm

I'm a bit embarrased to bump this a bit, but...Could I know if there's somehow planned the pinning joint feature?

just in case it was trashed or something

Posts: 0
Joined: Mon Jan 27, 2003 11:22 pm

Post by dcuny » Thu Apr 29, 2004 2:33 am

Well, there's been a lot of talk on this thread about pinning joints, but it's mostly having to do with NLA - I'm not entirely sure it's the same animal that's being discussed.

I'm not familiar with Blender's internals at all, but I had a look at AoI's IKSolver class. It's pretty cleanly written, so a good coder would be able to follow it. It's written in Java, so it's sort of "twice removed" from C - using the code would require heavy rewriting.

Additionally, the 'pin and drag' method doesn't rely on the user setting Nulls as IK targets - you can grab any limb. So 'pin and drag' armatures would likely require a different sort of interface than the current armatures in Blender.

Still, I suspect that some code is paying attention - the topic keeps coming up again and again. :)

Post Reply