skeleton animation

Hello, I hope not to interrupt, would please me to know if you can help me, I have reviewed several motors of 3d, looking for some that allows me to manipulate to avatar in run time, for example, having to avatar of a person, to say to him in run time that moves the arm to a position in special, I do not want to command to call a predefined animation, have seen that in some parts they call animation of skeleton or animation to him of bones, of this form to be able to say to him that it moves a bone in special.

I wait for you can help me, is very important for my since I must just a short time to choose a motor that facilitates this task to me.

Hi Almave,

I think you are asking for what’s called inverse kinematics, or IK–that is, the automatic computation of joint positions necessary to move one part of a character (for instance, a hand) to a target position.

With IK, you can specify that a hand should reach out to, for instance, a doorknob, and the character’s shoulder, elbow, and wrist will extend appropriately. This is different from playing a predefined animation of reaching for the doorknob, because you specify the exact position of the doorknob at runtime, rather than replaying the baked-in joint angles from a precomputed animation. With IK, you don’t need to know the height of the doorknob ahead of time.

Unfortunately, Panda3D does not currently support run-time IK. It may be possible to use an off-the-shelf IK system with Panda, but it’s not part of the engine. (By the way, I think you meant to say “engine” instead of “motor”.)

David

Exact that is what desire, you of some engine know that allows this me, thanks for the correction, is an error mine to the time to translate.

I don’t know of any free 3D engines that provide IK. Perhaps someone else on this board knows of one?

David

What if you just had a bunch of nodes and each node contained one GeomNode that had a body part, then you just move the nodes to control the avatar?

You can certainly do that, but that assumes you already know where to put the GeomNodes.

The hard part is figuring out the kinematics: where should the elbow be if the character’s hand is on the doorknob? This is the answer provided by an IK system. Moving GeomNodes around is just an implementation detail.

David

If you are looking for a Python solution then it may be worth checking out the Open Dynamics Engine at http://www.ode.org

There are Python bindings for this available at http://sourceforge.net/projects/pyode/

I’m new to Panda3D myself, so couldn’t say how difficult it would be to use Panda3D as the rendering solution with ODE handling the physics and IK stuff…

If nothing else the ODE documentation gives detailed information on joints and setting up skeletons for IK so you will get an idea of just how much work you are letting yourself in for by going this route.

Have Fun!
Mark

We’ve been using ODE with Panda3D recently, and found that they can work together quite well.

I warn anyone interested in IK, though, that ODE does rigid body dynamics pretty well, but doesn’t have any support for inverse kinematics as it is traditionally thought of.

Although the final output of physics and IK often look very similar, the underlying implementation is very different, and someone familiar with tools for animating via IK would be pretty disappointed trying to use ODE for that task.

Thanks for their answers, will review the mentioned thing previously.

Guess I let myself get carried away there… I’m still at the gathering tools stage so hadn’t actually tried ODE out properly yet… Ignore the fact I mentioned IK and thank Jason for pointing out my error :blush:

You might also want to have a read of the article by Jerry Edsall at http://www.gamasutra.com/features/20030704/edsall_01.shtml

This offers a different solution using animation blending for problems generally solved using IK or dynamics modelling (ODE)…

Also blender3d does have IK support if you want to investigate that route further… http://www.blender3d.org/

http://www.euclideanspace.com/physics/kinematics/joints/ has more information on IK and 3D animation in general.

Now what errors have I made this time? he he

Have Fun!
Mark

I haven’t looked carefully at the skeletal animation featuers of Panda3D, but Cal3D is a good free library that allows you to do all of that fancy motion transition and blending with skeletons/morphing. Someone would have to write some code to render the Cal3D mesh in Panda, but otherwise Cal3D does all of the work for you. There are exporters available for 3ds max and Blender, I think.

cal3d.sourceforge.net/

You need to call Cal3D lib functions from within P3D for it to be useful. However, it shouldn’t present an problem as Cal3D has a very liberal license if a binding were done. :wink:

For those interested: http://cal3d.sourceforge.net/
There is a tut using 3dmax here: http://cal3d.sourceforge.net/modeling/tutorial.html

Actually, Panda already supports Cal3D’s level of functionality natively. Panda’s animation engine fully supports soft-skinned skeleton animation including morphs and can do real-time blending of multiple different animations.

So while it may not be difficult to integrate with Cal3D, unless you have a pressing need to use that particular library, it’s not necessary. :slight_smile:

David

Cool… 8)