[accepted as gsoc 2008 ] Animation Enhancements

Threads related to Google Summer of Code
Post Reply
westine
Google Summer of Code Student
Google Summer of Code Student
Posts: 62
Joined: Sun Apr 01, 2007 12:12 pm

[accepted as gsoc 2008 ] Animation Enhancements

Post by westine »

I have given an application on this subject in google summer code.
Now I will make detailed analysis of this new feature.

Based on Ogre's current animation system, we have a great deal work to do aiming at achieving motion data driven and physical simulation combination effect which has been researched carefully in Michael J. Mandel's series of works.While I have also referenced to a lot of other papers and articles within this subject.


Motivation:
The ultimate goal is great, we all would like to have a character whether it is a human or other kinds of creature, that can behave lively in any gesture and reponse to various environmental situation.

What we need
1ã€
Last edited by westine on Wed Apr 23, 2008 7:18 am, edited 1 time in total.
User avatar
tuan kuranes
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 2653
Joined: Wed Sep 24, 2003 8:07 am
Location: Haute Garonne, France
x 4
Contact:

Post by tuan kuranes »

Please Don't crosspost.

FYI, Some Ogre-physic engine "lifeless" ragdoll implementations already exists (see ogreaddons : NxOgre, OgreNewt, OgreOde). AFAIK, "blended" ragdoll doesn't exists. (both physic + modeled animation)

Please give some specific implementations details, planning.

How do you plan to do it ?
User avatar
Kencho
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 4011
Joined: Fri Sep 19, 2003 6:28 pm
Location: Burgos, Spain
x 2
Contact:

Post by Kencho »

As this topic is a cross-post, I better lock it before the discussion splits. Continue it in the original thread, please.

[Edit]
Excuse me, I was wrong about locking the thread. Please, continue discussing this.

My apologies.
Image
westine
Google Summer of Code Student
Google Summer of Code Student
Posts: 62
Joined: Sun Apr 01, 2007 12:12 pm

more detail

Post by westine »

Since the last week, I have done some code level work, in order to work out the schedule.

There are four transitions in any animation state.

kinematic to kinematic transition
kinematic to dynamic transition
dynamic to dynamatic transition
dynamic to kinematic transition

Image
westine
Google Summer of Code Student
Google Summer of Code Student
Posts: 62
Joined: Sun Apr 01, 2007 12:12 pm

how to implement

Post by westine »

Kinematic to kinematic transition

1-3 weeks AI FSM and animation Blender

Image

For FSM is mature and there are a lot of code and references to look up, the most things here is tuning the animations in place which is usually done weel with the help of scene editor, and then store the parameters to some script language(I would like to use Python or lua),then game engine can interpret them runtime.

There is already a simple Animation Blender for Ogre, I will enhance it.
Last edited by westine on Wed Apr 11, 2007 6:28 pm, edited 2 times in total.
westine
Google Summer of Code Student
Google Summer of Code Student
Posts: 62
Joined: Sun Apr 01, 2007 12:12 pm

I am very sorry for my late update

Post by westine »

Because I have some work to do in my university, and I don't know the deadline of Google summer code acceptance, so I will update these things tonight, this can demonstrate my work on this animation enhancement,hope you will pick me, I am very glad to participate in this project, to cooperate with all of you, to be guided by my mentors.
westine
Google Summer of Code Student
Google Summer of Code Student
Posts: 62
Joined: Sun Apr 01, 2007 12:12 pm

kinematic to dynamic

Post by westine »

according to kinematic to dynamic transition,
I have carefully read the SimpleScenes Demo in OgreOde, where radgolls are just

radgoll->getAnimationState(meshAnimation[b->sSelectedMesh])->setEnabled(false);

radgoll->takePhysicalControl(_world, _space, false);

hit_body->addForceAt(pickRay.getDirection() * 250000, hit_point);

radgoll->releasePhysicalControl();


and so on

It is just let the OgreOde do the left physical simulating things.

All I have to do is generalizing this procedure to give common interface class for kinematic to dynamic transition.

4th week will be enough, some buffer is preferred.
Last edited by westine on Wed Apr 11, 2007 6:28 pm, edited 1 time in total.
westine
Google Summer of Code Student
Google Summer of Code Student
Posts: 62
Joined: Sun Apr 01, 2007 12:12 pm

Dynamic to Dynamic

Post by westine »

Dynamic to Dynamic transition

Transitioning between dynamic motions is straightforward because it involves a simple substitution of controllers. The continuity of the motion is guaranteed because the state of the system (positions and velocities) is preserved when the new dynamic action begins. The new controller begins control over the simulated character immediately upon the user choosing a new dynamic action.

Interactive Interfaces for Character Animation
and controller-based simulation
5th to 8th week

External environment input like force and position parameters will be set as in parameters for controllers, controllers is a class of dynamical system, which can add force, change velocity and set absolute position or direction, etc.
OgreOde interface and design of Controller needs
3weeks and the IK thing which will be implemented after the effects of controllers can learned from CCD IK lib. one week
Last edited by westine on Wed Apr 11, 2007 6:29 pm, edited 1 time in total.
westine
Google Summer of Code Student
Google Summer of Code Student
Posts: 62
Joined: Sun Apr 01, 2007 12:12 pm

D2K

Post by westine »

Dynamic to Kinematic transition

The paragraph below is pciked from Michael J. Mandel's master thesis
"Versatile and Interactive Virtual Humans: Hybrid use of Data-Driven and Dynamics-Based Motion Synthesis"

What we need to do is add specific controllers and implement our motion database and motion search algorithms.

These will take 5 weeks, motion search algorithms cost 2 weeks,
motion database will be added to K2K step, specific controllers which are needed to balance and adjust body postures are involved in K2K and D2D steps, they will take one week each.

In most cases, the simulation will have significantly changed the posture of the character during the time that is was active. Thus the simulation is not likely to be in a pose close to any frame in the motion database. When the arms impact the ground, the ANN search is used to find the closest frame in the database to the simulated posture and a special controller is used to allow the simulation to naturally settle near this frame. Using an arm contact event to trigger the search process provides a balance between allowing a natural falling behavior and providing time for settling near motion data before the body comes to rest. The details of this controller are covered in Chapter 5. When the settle controller has moved the character sufficiently close to the pose found in the search, a transition to motion graph is performed using the same blending scheme used to carry out the motion graph transitions described in Section 3.1.4. Although it would have been possible to achieve this with only blending, the settle controller is preferred because it still allows the character to remain subject to physical constraints, respond to the external environment, and avoid some types of blending artifacts such as object interpenetration and foot sliding.

Michael J. Mandel has given an example for controller and Ik use.
According to motion database and search algorithm parts, I may be will contact to him for help.
User avatar
Wolfmanfx
OGRE Team Member
OGRE Team Member
Posts: 1525
Joined: Fri Feb 03, 2006 10:37 pm
Location: Austria - Leoben
x 99
Contact:

Post by Wolfmanfx »

Maybe an PDF with the full text would be much better ;)
westine
Google Summer of Code Student
Google Summer of Code Student
Posts: 62
Joined: Sun Apr 01, 2007 12:12 pm

Detailed schedule

Post by westine »

Detailed schedule

According to the priorities of the original request for animation enhancement
I make my schedule as below.

May 2007
1 -- 2 week: AI FSM
3 -- 4 week: animation blender

June 2007
5 -- 5 week: OgreODE external Interactive Interface
6 -- 7 week: dynamical Controllers
8 -- 9 week: IK

July 2007
9 -- 10 week: motion database
11 -- 13 week: motion search algorithms

August 2007
debugging , documenting and Postmortem
westine
Google Summer of Code Student
Google Summer of Code Student
Posts: 62
Joined: Sun Apr 01, 2007 12:12 pm

some interpretation

Post by westine »

Maybe this seems a too big project for google summer coder, so I will simplify some part, such as IK, I will use existing IK lib as much as possible,and will ask for help from some authors or experts, of course my mentors, either via Internet or in real life.

As you can see, I have heard google summer code late March, so I have spent only two weeks in my leisure time after classes doing all of this, I really like this project, I have been a game programmer, this time I want to share my experience and my passion with others.

Imagine that, this summer in Beijing China, I am coding for my favorite Ogre engine, and next summer I will be coding another open source project for other very interesting thing, just like 2008 Olympic Game. Wonderful feelings!
Ahh, my thanks to all of you can not be enough, please pick me to participate in.
Best wishes. your sincerely Min Du
Tsinghua University
Beijing China
westine
Google Summer of Code Student
Google Summer of Code Student
Posts: 62
Joined: Sun Apr 01, 2007 12:12 pm

Post by westine »

Wolfmanfx wrote:Maybe an PDF with the full text would be much better ;)
Thanks for your suggestion.
User avatar
ahmedali
Gnome
Posts: 302
Joined: Fri Feb 20, 2004 8:52 pm
Location: Lahore, Pakistan

Post by ahmedali »

This may help u.
MagicSoftware lib has ccd/iterative ik solver.
Discreet sparks has an open source limb solver(2 bone analytical solver)
User avatar
Falagard
OGRE Retired Moderator
OGRE Retired Moderator
Posts: 2060
Joined: Thu Feb 26, 2004 12:11 am
Location: Toronto, Canada
x 3
Contact:

Post by Falagard »

The addition of extra animation blending features to Ogre would be very very welcome!

I've been looking into this myself for Ogre lately for my own game engine. I'm not sure of the selection process for Google Summer of Code but hope things work out for you.
westine
Google Summer of Code Student
Google Summer of Code Student
Posts: 62
Joined: Sun Apr 01, 2007 12:12 pm

Too late to update

Post by westine »

Thanks all the same, I will work it out by myself with all of your helps.
westine
Google Summer of Code Student
Google Summer of Code Student
Posts: 62
Joined: Sun Apr 01, 2007 12:12 pm

time is the key point

Post by westine »

Although I have worked out some code already for part one of my schedule,
and spent so much time researching IK, motion search algorithm and blendering, I don't have enough communication with mentors, and the time difference make me seldom appear at the same time others are on line.
So, this make the differences.

It is my fault, I will take care of it ever after.

Thanks all the same.
Post Reply