POV-Ray : Newsgroups : povray.binaries.animations : Inverse Kinematics Server Time
1 Jul 2024 04:04:59 EDT (-0400)
  Inverse Kinematics (Message 5 to 14 of 14)  
<<< Previous 4 Messages Goto Initial 10 Messages
From: stm31415
Subject: Re: Inverse Kinematics
Date: 24 Nov 2006 11:45:00
Message: <web.4567205a89f8419f55c3fb700@news.povray.org>
"Tek" <tek### [at] evilsuperbraincom> wrote:
> That looks good, very smooth! Though the orientation of the hands seems to
> just come from the arm orientation.
>

Yes. Hand position gives a gesture meaning --- that will be determined
separately from the positioning of the rest of the arm. It would look
strange to have it reach for something just with its hand. As far as a
character, I'm actually hoping to use this --- it will force me to use just
motion to convey the story: no facial expressions, no voices, no words.

Rune --- I had not seen that. It looks like a much more efficient method for
making a leg than what mine will be.  The benefit of mine is that it will do
arbitrary limbs (arms, legs, robots, etc.), that have axes in all 3
dimensions; at least it should. I'm about to give him legs; I will post
when I have results.


--
Sam Bleckley
stm 31415 (at) g mail . com


Post a reply to this message

From: Art Flint
Subject: Re: Inverse Kinematics
Date: 24 Nov 2006 17:37:27
Message: <45677427$1@news.povray.org>
stm31415 wrote:
> Is this something everyone has done and I just haven't found it, or should I
> comment my code and post? All I have seen along these lines is Rune's neck.
> If it's been done, I'd love to get some pointers on a few things that are
> still plaguing me, and if not, I'd love to give something useful to the
> community.
>
> Sam Bleckley
> stm 31415 (at) g mail . com
>
>   
Even if it has been done, I would still like to see the code. :)


Post a reply to this message

From: Slime
Subject: Re: Inverse Kinematics
Date: 24 Nov 2006 19:39:52
Message: <456790d8$1@news.povray.org>
I don't know much about IK, but what is it that makes his arms/elbows tilt
up towards the end? If his hands are the only things being controlled, why
wouldn't his arms just hang straight down the whole time?

 - Slime
 [ http://www.slimeland.com/ ]


Post a reply to this message

From: Rune
Subject: Re: Inverse Kinematics
Date: 26 Nov 2006 06:43:07
Message: <45697dcb$1@news.povray.org>
stm31415 wrote:
> Rune --- I had not seen that. It looks like a much more efficient
> method for making a leg than what mine will be.  The benefit of mine
> is that it will do arbitrary limbs (arms, legs, robots, etc.), that
> have axes in all 3 dimensions; at least it should. I'm about to give
> him legs; I will post when I have results.

I'm not sure what you mean by "that have axes in all 3 dimensions". The 
methods described on my page was used for the AL the Alien animations at 
http://runevision.com/3d/anims/#40 so it can be used for arbitrary 
two-segment limbs like arms and legs. It's not a general system that can be 
used for any hierarchy of bones though (like the inverse kinematics in 
professional animation systems are).

Rune
-- 
http://runevision.com


Post a reply to this message

From: Charles C
Subject: Re: Inverse Kinematics
Date: 26 Nov 2006 12:00:01
Message: <web.4569c72089f8419f2869ae640@news.povray.org>
There are 6 degrees of freedom total...  3 axis of rotation and 3 degrees of
translation.  For whatever type of skeletal system you have you can divide
it up by joint type, (e.g. the elbow bends one way but not the other, the
forearm might be a separate joint that twists only)....  Or you can make
all joints fundamentally the same in terms of how many degrees of freedom
they support, but with different limits.  For my stuff (still FK, I haven't
gotten around to IK) I've chosen the latter.  Every bone has 3 degrees of
freedom - two bends plus twist.  I opted not to bother with "sliding"
joints.  For future flexibility I also decided to give the joint a very
small but non-zero reverse bend limit, so that if I really wanted to, I
could bend the fingers backwards.

Charles

"Rune" <new### [at] runevisioncom> wrote:
> stm31415 wrote:
> > Rune --- I had not seen that. It looks like a much more efficient
> > method for making a leg than what mine will be.  The benefit of mine
> > is that it will do arbitrary limbs (arms, legs, robots, etc.), that
> > have axes in all 3 dimensions; at least it should. I'm about to give
> > him legs; I will post when I have results.
>
> I'm not sure what you mean by "that have axes in all 3 dimensions". The
> methods described on my page was used for the AL the Alien animations at
> http://runevision.com/3d/anims/#40 so it can be used for arbitrary
> two-segment limbs like arms and legs. It's not a general system that can be
> used for any hierarchy of bones though (like the inverse kinematics in
> professional animation systems are).
>
> Rune
> --
> http://runevision.com


Post a reply to this message

From: stm31415
Subject: Re: Inverse Kinematics
Date: 27 Nov 2006 01:25:01
Message: <web.456a842f89f8419fcf1900cc0@news.povray.org>
Charles: I do one DOF per joint --- easier for IK, that way; it has only one
variable per segment.

Slime: His arms bend up because if they did not, his forearms would have to
change length, or something; try to touch your sternum with the tips of you
finger, with your elbow at your side --- impossible. Your elbow must be away
from your body to  let your hands do that. This is why IK is good, it shows
these things without my having to specifically enumerate them.

Art: I will post the code when I am satisfied with it --- it might be a
month or two, because I haven't decided what arrangement is most effective
but still flexible. OTOH, it might be more useful to see it now, rather
than the polished but unintuitive result. I'll see what I think tomorrow.

Rune: if a limb had 3 DOF your math would fall apart. It works in any axis,
but not all at once. 3 dimensions makes things hard, as does having more
than 2 segments; there are too many possible solutions.

Here is a walk cycle for your enjoyment. One leg spline, one arm spline
(same macro as leg spline, actually) and a little math to make the body
move and twist. It appears my IK works with pretty much arbitrary limbs,
with no adjustment of the numbers. I was worried it would take tweaking of
several constants to make it work for a given limb, but not so far. I am
still working on adding some 'weight' to the limbs, making it prefer to
hang down rather than stick out, but you can't tell that here. Tomorrow I
think I will post the code and explain it, so that someone can give me a
hand with that. Still, I am pretty happy with how easy it was to give him a
relatively natural gait, especially since now it is VERY easy to make it
bouncier or flatter or longer or...

Good night.

-s


Post a reply to this message


Attachments:
Download 'out.mpg' (144 KB)

From: Slime
Subject: Re: Inverse Kinematics
Date: 28 Nov 2006 03:08:38
Message: <456bee86@news.povray.org>
> Slime: His arms bend up because if they did not, his forearms would have
to
> change length, or something; try to touch your sternum with the tips of
you
> finger, with your elbow at your side --- impossible. Your elbow must be
away
> from your body to  let your hands do that. This is why IK is good, it
shows
> these things without my having to specifically enumerate them.

Hmm. But for every position of the hand, there is a full circle where the
elbow can be - the set of points elbow's length from both the hand and
shoulder. What's to keep the elbow from always being at the lowest point (or
for that matter, the highest point) on this circle? (Even if you consider
the torso blocking movement, and the limitations on arm positions in real
life, there are a lot of choices for elbow position for any given hand
position.)

 - Slime
 [ http://www.slimeland.com/ ]


Post a reply to this message

From: Data Banks
Subject: Re: Inverse Kinematics
Date: 28 Nov 2006 08:45:42
Message: <456c3d86@news.povray.org>
"stm31415" <sam### [at] cscom> wrote in message 
news:web.456a842f89f8419fcf1900cc0@news.povray.org...
> Slime: His arms bend up because if they did not, his forearms would have 
> to
> change length, or something; try to touch your sternum with the tips of 
> you
> finger, with your elbow at your side --- impossible. Your elbow must be 
> away
> from your body to  let your hands do that. This is why IK is good, it 
> shows
> these things without my having to specifically enumerate them.
>
Actually, your elbow can remain at your side - just bend your wrist & 
fingers. But if the model can't do that, yes, hand stiff means elbow must 
come away from body

Sorry, as I read the post I felt like trying it out


Post a reply to this message

From: stm31415
Subject: Re: Inverse Kinematics
Date: 28 Nov 2006 17:30:01
Message: <web.456cb7e089f8419fcf1900cc0@news.povray.org>
"Data Banks" <da_### [at] ihugcomau> wrote:

> >
> Actually, your elbow can remain at your side - just bend your wrist &
> fingers. But if the model can't do that, yes, hand stiff means elbow must
> come away from body
>


You are absolutely right. Merce Cunningham would be very upset with me.
But, as you say, he does not have wrists, so there it is.

Slime: He is at the bottom of the curve. Though that is actually what I am
currently struggling with, for that particular animation a rule was
instituted for gravity, keeping his joints in the lowest possible position
while still reaching the goal.

The IK works by feeling out the state-space --- it tryies moving each joint
in turn to see which position is closest to the goal, the best possible
position. Teh best position is defined by a function, but that function can
be undefined --- in my case it is, I use a macro that returns a number based
on the distance fo the tip of the limb to the goal, some piecewise additions
for when a joint is out of it's comfort range, and then the troublesome bit
about gravity. The iterative macro then tries to mimimize this number.
However, the trick is when parts of the limb enter negative quadrants ---
then the gravity bit, which just adds the total center of gravity of the
limb, starts *subtracting* from the final value, making the limb appear
closer to the goal than it actually is. So at the moment it is kludged by
adding the total length of my limb to the y value before finding the COG.
But that's not all that elegant. I'm posting the macros now, but it's
pretty much uncommented. I am a terrible commentor (commentator?). I forget
to. So I'll post it and then I'll re-post tomorrow (heh). I hurt my hand
today and should probably stop typing, as it hurts.

-s


Post a reply to this message

From: stm31415
Subject: Re: Inverse Kinematics
Date: 2 Dec 2006 12:25:00
Message: <web.4571b60e89f8419fcf1900cc0@news.povray.org>
Commented and working code is now in bin.s-f --- drop me a line or a post or
a banana if you have any trouble. Or if you just feel like it.

--
Sam Bleckley
stm 31415 (at) gmail . com


Post a reply to this message

<<< Previous 4 Messages Goto Initial 10 Messages

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.