Advertisement

Golem AI

Started by February 24, 2006 08:42 AM
24 comments, last by M2tM 18 years, 8 months ago
Hello all, Everybody knows what a rag doll is in today's physics simulations, and it is usually used to make a character fall. But what about making a character raise by itself ? I would think that such a thing would involve some AI, right ? Like determining what muscle to use to move the gravity center to a balanced position, and so on... Well, if any of you have ideas or experience in something like this, please let me know... Cheers StratBoy61
Actually,

thats very similar to an experiment I think about ever since I had to work on a biodynamics project for a big CAD business.

However, the subject is very complex, and the biodynamics litterature is surprisingly bad.

Basically, its a much advanced form of inverse kinetics, you might want to look into that.

If I ever get the time to work on that (after finishing my last master paper, and my AI project), I'll send you a word, maybe we could team on that. Or PM me if you are serious about this and want me to help.
Advertisement
Hello,

I've been working on exactly that on and off for a couple of years...

I had some success with characters getting up and walking about,
(eventually I'll clean it up enough to post a demo, but it could be a while due to crunch time at work).

The ragdolls are simulated with a fixed timestep verlet integrator,
( see http://www.gamasutra.com/resource_guide/20030121/jacobson_01.shtml )

so, crucially, their skeletal constraints are easy to push around and fix to points in the world.

I did originally try a Neural Network which drove 'muscles' that pulled the limbs around, but it proved incredibly hard to fine-tune. In particlular, trying to specify a reward function for "standing up" is surprisingly hard to do without causing degenerate solutions: e.g., the network finds that optimum stability for the character seems to involve spinning round rapidly with one hand clamped to his ankle.

The second attempt, which actually works, was to split up the ragdolls' AI into individual state-machines for each limb.

So, with an overall task of "Achieve-Standing-Pose" the AI update would, e.g.
first recognise that the character was lying face down, then tell all of its
limb state-machines to go into state "Face-Down-To-Crouch".

This state for, say, a leg, cheekily pushes the position of the knee and foot directly in worldspace - i/e. in a completely non-physical manner. This relies on the "free" inverse-kinematics effect you get with a verlet ragdoll.

So, when enough of the limbs have satisfied the "crouch" state criteria, the AI then tells them all to go into state "Crouch-To-Stand", etc.

You need to push the ragdoll skeleton around in a way completely unrelated to realistic muscle input to make this work; e.g. nudge the hip node world xz coordinates towards the foot node world xz coordinates to keep the leg vertical.

I got this method working to the point where characters will stand up from falling, and kind-of run around, but if you feel like attempting it, bear in mind:

* It takes AGES to tweak all the parameters pushing around of the ragdoll, so that it moves remotely realistically. i.e. without sliding, spinning or putting its foot through its own stomach.

* Even when it works, the motion will typically be strangely hilarious rather than convincingly human. In particular, unless you put excessive ( realism-killing ) damping on the skeleton, you get a wobbling effect every time you push the limbs around, as the shock propogates through the skeleton.

Anyway, if you decide to have a go at this, then good good luck!
Its a tough problem, but its incredibly rewarding when you see your first character struggle to his feet.

schmodz






Thank you sooooo much guys for these answers !

I am glad to see that I am not the only one who thought about something like this.
Steadtler, I will definitely get in touch with you, after this week-end though --I am going snowboarding, what a shame ;) I guess I will have some opportunities to think about how a rag doll could stand on its feet :)

Regarding your reply schmodz, it is very interesting. I had a good laugh when I read about your first attempt, as I was imagining the rag doll spinning around ; well, after all, spinning is a fairly good state of balance :)

I did implement a verlet engine so far, so I have at least an equivalent start. I was also thinking about the second attempt that you describe, with as many states machines as limbs...
However, I am a little bit disapointed by the fact that it does not look good at all. Do you think there are areas of improvement, in order to make it look better ? What about having a list of predifined animations, and merge our results with them ? Like kinda morphing into something that we know looks realistic ?

Am I doing sci-fi here ?
Cheers
StratBoy61
I've acually read a thesis on this idea. Even though the technique was succesful it took alot of calculations to get the character to stand up and react to falling. Theres acually a product out right now that uses genetic algorithms to do this with ragdolls. I wish I could rememver the name evolva or some crap like that. it has dolls falling down stairs and catching themselfs and getting hit with boxes but still the animation isn't done in real-time. if you could pull it off in real time that would be something wicked cool.
Not doing sci-fi.

This is the next step from ragdolls.
Advertisement
LOL! I was way off its called Endorphin. NaturalMotion
Quote: Original post by Lemonaid
LOL! I was way off its called Endorphin. NaturalMotion


Looks nice, too bad its an animation tool. Can't use that dynamically in a game.
The product that uses ga's to do this is Endorphin,
see http://www.naturalmotion.com/ which is currently sold
as a virtual motion capture solution.

its quite fun to play with, setting up crazy trapeze artists etc...

As far as I know they use a mixture of evolved components and hand-crafted
animations. Not sure if they have much real-time stuff in the works...
I seem to remember that Havok are doing character control stuff too?

Hey all,

I managed to find an old .exe of my walking ragdoll engine before
I broke it :)

I posted it at devimg so you can try it out:

http://www.devimg.net/?Post=743

The motion is pretty comical, and there's all sorts of horrible glitches,
but it gives you an idea of what you can do with verlet as a start.

Tech note: there's some extra controls not listed in the readme:

numpad * = toggle skeleton display
numpad + = increase character LOD bias
numpad - = decrease character LOD bias

Let me know if it works for you..





This topic is closed to new replies.

Advertisement