Real time genetic alg. for procedural animation.
So i was reading about euphoria (http://aigamedev.com/editorial/naturalmotion-euphoria) and how it works using neural networks trained with genetic algorithms. And how it needs time to be trained and learn to react and do all the cool stuff the video show it does.
I was thinking of a more straight forward approach, using only genetic algorithms.
The is the ideal description of what i'm thinking of:
Let's say my character is a cat, and i throw him in the air and say to him "Ok, now figure it out how to land on your feet".
He has a lot (millions) of possible movements and some will get him to achieve the objective.
I would like to use a genetic algorithm* to found a sequence that works. So he will generate several initial movements, try what works to achieve the objective ("paws are the only ones that can touch the ground", or "don't let body hit the ground"), mutate them, cross-over, iterate, and come with a solution that will gracefully put him on the ground.
Yeah, ok, that sounds like a fairy tale, but i hope my point is getting through.
So, what problems do i see with this approach and how you can help me:
1] Has it been done? I know genetic + NN have already been used to generate animations and such. But all i've found is offline training... not real time. And with my idea with no NN the intention is not for the cat to learn, he will have to re-think next time he is thrown in the air. Probably generating a new sequence of moves.
2] Does the animation look right? This i'm pretty sure i can guess the answer. No.
It will not look normal nor natural. Specially if the character being animated is a human o an animal that the user would already be familiar with it's movement. But hey... i could still animate ungry crabs from outer space that always land on their feet, right?
3] Can you evaluate so many potential solutions? This is, i think, the biggest reason this approach would fail. I would have to test (probably simulate) several movement sequence in order for the cat to know if that sequence will get him on his feet. In other words, the fitness function of my algorithm is going to be way too expensive. Maybe traying only in 2D, and with few objects in the scene might give some results.
Ok, so there are my 3 observations of why this approach would fail. On the other hand, if it works it could be nice to have new animations every time it runs. It can probably work for fast (reflexes) movements, like catching a ball, putting your hand away from the fire, o breaking your fall (as euphoria does).
Do you have any ideas or thoughts on the three things i mention? Especially [1] (i don't want to do something already done) and [3]!!... maybe you know something to put the last nail on this experiment's coffin... or maybe you have a suggestion that might get it back from the dead =)
Thanks, i hope to hear from you.
Bye!
1- Its been done
2- The animation looks terribly bad.
Unfortunatly, these procedural animations only really works well for "rag-dolls" situations.
Think of it. Using GA for this task basically means searching the space of all possible valid animations of your skeleton, which is a very large space you'ld admit. What are the chances that your search will settle on an animation that looks natural enough? Incredibly small. What are the chances that it will settle on a solution that looks awkward? Too large to be acceptable.
Even when using IK or a similar technology to only slightly modify a motion-captured animation, it is still difficult to avoid animations that looks unnatural, unless you control a robot or a, well, space crab.
2- The animation looks terribly bad.
Unfortunatly, these procedural animations only really works well for "rag-dolls" situations.
Think of it. Using GA for this task basically means searching the space of all possible valid animations of your skeleton, which is a very large space you'ld admit. What are the chances that your search will settle on an animation that looks natural enough? Incredibly small. What are the chances that it will settle on a solution that looks awkward? Too large to be acceptable.
Even when using IK or a similar technology to only slightly modify a motion-captured animation, it is still difficult to avoid animations that looks unnatural, unless you control a robot or a, well, space crab.
Thank Steadtler for your quick reply!
As for [1], you say it has been done... Any chance you happen to have a link to a [site|game|article|experiment] that might have tried it?
As for how the final animation looks, i guess i kinda saw that coming... so no surprises on the unnatural movements.
As for [1], you say it has been done... Any chance you happen to have a link to a [site|game|article|experiment] that might have tried it?
As for how the final animation looks, i guess i kinda saw that coming... so no surprises on the unnatural movements.
Sorry, I just remember it from reading different journals articles years ago, but I didnt keep the references since I didnt see any useful applications for my work or research.
Seeing stories about Backbreaker always give me chuckles (tho credits to Alex to have presented it with a critical eye). Its easy to make any system looks good when you only display a couple of carefully selected output. I bet you right now they are discovering how much more there is to a football game than just cool tackles,.. and how much harder it is to balance a close-contact game when you dont tightly control the animation.
Man, now all I want to do is motion-capture a falling cat. We'll need a special suit...
Seeing stories about Backbreaker always give me chuckles (tho credits to Alex to have presented it with a critical eye). Its easy to make any system looks good when you only display a couple of carefully selected output. I bet you right now they are discovering how much more there is to a football game than just cool tackles,.. and how much harder it is to balance a close-contact game when you dont tightly control the animation.
Man, now all I want to do is motion-capture a falling cat. We'll need a special suit...
Though it is a cool idea, and I've toyed around with it myself, but being a pessimist by nature, my conclusion was that it really would be too computationally intensive to really do in real-time. You'd be better off with some sort of heuristic. Also, the other reason why this problem is better solved with offline training is that the user can give feedback as to which results they "feel" are more natural. This feedback can then be fed back into the system to further prune/guide the GA or whatever method is being used.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement