For the coders: Animanium Pin-and-Drag paper

Compiling, libraries, modules, coding guidelines and porting

Moderators: jesterKing, stiv

Post Reply
fearandloathing
Posts: 0
Joined: Thu Jun 16, 2005 2:00 pm

For the coders: Animanium Pin-and-Drag paper

Post by fearandloathing » Wed Aug 10, 2005 7:02 am

(I've now posted this in the Animation forum, perhaps this thread in the "Coding Blender" forum could be removed)

The following paper goes into detail explaining the algorithms behind Animanium:
http://www.rdc.imi.i.u-tokyo.ac.jp/robo ... e/2_01.pdf
Other packages with similar joint-pinning features include: MotionBuilder, Houdini, Mirai, and Maya (as of 7.0, released last week, includes a full-body IK solver from MotionBuilder, with pin-and-drag).

The inclusion of pin-and-drag full-body IK in Maya was expected (Jason Schleifer has been pushing for this, and Alias owns MotionBuilder now, was just a matter of time), and this means that the rest of the big software companies will most likely rush to implement this as soon as possible aswell.

Hopefully someone feels that implementing this into Blender would be a fun challenge.

Although there are still essential animation features missing in Blender, such as Onion Skinning (visualizing your arcs, less scrubbing back and forth, very important), a X-Sheet/Dopesheet (for traditional animators), and more control over the appearance of bones (for more descriptive controls in rigs, such as custom color and geometry on a per-bone basis).

Anyways, 2.40 is looking very promising, great job everyone.
Some of the 3d software companies out there must feel VERY threatened by Blender now.

ton
Site Admin
Posts: 350
Joined: Wed Oct 16, 2002 12:13 am
Contact:

Post by ton » Thu Aug 11, 2005 2:27 pm

Interesting... the paper is full with heavy IK math though, will poke Brecht with it, he's doing a lot of great stuff in our IK module at the moment.

Currently the (character) animation recode has a long todo still. :) Most important is bringing things back in control, so we can have a future proof ground layer for more devs to continue work on it.

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

Post by dcuny » Thu Aug 11, 2005 10:47 pm

I'll suggest that the approach taken by the Animanium folk is just way too freaking hard. Have a look at Art of Illusion, which implements a functionally equivalent version using traditional IK methods. It's an Open Source (so you can see the code), written in Java (so it's fairly well structured) and (the last I looked) fairly straight-forward.

fearandloathing
Posts: 0
Joined: Thu Jun 16, 2005 2:00 pm

Post by fearandloathing » Sat Aug 13, 2005 2:39 pm

ton: Yeah, I actually did email him the paper before posting this thread, but I guess he's busy with the SoC IK project.

dcuny: the paper motivates why for example the Jacobian isn't suitable when pinning multiple joints, and I guess this applies to CCD too (Art of Illusion), wich is why they proposed the Singularity-Robust/ IK algorithm instead (I'm not going to pretend that I understand these algorithms, it looks like some alien language to me).

Even though AoI's implementation is very interesting, it's extremely slow when pinning multiple joints, wether this is because of CCD or the fact that it's written in Java, I don't know (probably a bit of both).
It also has some other flaws if I remember correctly, (like the root bone not being free, moving it moves the whole hierarchy, not being able to move groups of pinned joints together, etc).

That being said, it's still a great reference, because it's Free Software and thus provides GPL'd source code to look at.
And I like some things in particular, like the FK handles, and the simple DOF control (simply double click on a bone to bring it up).
Bone stretching is even included in the IK calculation (including stiffness).

I don't know wich IK algorithm MotionBuilder or Mirai uses, but they both provide real time feedback when pinning multiple joints, so perhaps it's not nescessary to use the same algorithm as in Animanium, but 33milliseconds calculation time on a 1GHZ PIII with a 20 joint skeleton with 5 pinned joints sounds promising.

blendix
Posts: 51
Joined: Wed Oct 16, 2002 1:00 pm

Post by blendix » Sat Aug 13, 2005 8:49 pm

Don't be fooled by the fancy formulas, they only use standard robotics techniques, things that were already known in the eighties. The singularity robust jacobian stuff is really the same as the damped least squares we have in bf-blender already, it's just a different name.

That said, getting a full pin 'n drag system working will be a lot of work also. My first goal is getting the promised SoC features to work stable, after that I can look at extending the solver further.

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

Post by dcuny » Sun Aug 14, 2005 8:53 am

My impression wat that there was some delay getting Animanium past the beta and to market because of stability issues. The latest version has an option where you can explictly mark parts of the skeleton to be ignored in IK solutions (for example, the fingers of the hand), so there are apparently timing issues with complex rigs for Animanium as well.

I mention that only because it doesn't bode well for anyone who might be implementing the algorithm. :?

I feel a bit guilty here - I was the person who bugged Peter into adding the Animanium-style IK into AoI in the first place, but I found the rest of the user interface too baroque for me to use, so I haven't played with it for a while.

My general impression is that AoI's IK felt like it responded more intuitively (but more slowly) than Animanium's. With Animanium, I was more likely to get the armature into a funky and twisted pose more rapidly. (It may just have been that AoI was slower, so I had better control over it).

Am I the only person who's not particularly inspired by the animation posted on the Animanium site? ;)

TorQ
Posts: 29
Joined: Wed Jan 29, 2003 2:03 am

Post by TorQ » Mon Aug 22, 2005 7:56 am

I really am interested in these types of features! I have a hard time forcing myself to learn AoI just so I can try out this ik stuff, do you have a link to any sort of tutorial or demo file for this feature? Thanks.

TorQ

Post Reply