Impulse Powered Skeletal Animation

General Game Engine technologies
mSparks
Advanced Member
Posts: 997
Joined: Fri Jan 03, 2003 2:54 pm
Location: North West UK
Contact:

Postby mSparks » Tue Jun 08, 2004 2:51 pm

Impulse Powered Skeletal Animation

Author: Mark 'mSparks' Parker, 2K4



Those how have browsed the developers section of the site will have seen the skeletal physics technology demo, this brief is intended to further enhance the technology to include general animation into the feature set.
Whilst many different forms of animation techology exist, the one that undoubtably features most prominantly is that of server controlled animation frames which decide what position to place the model depending on how the server perceives a player to be moving. While this is more than suitable for good looking effects, it does present several problems;

  • 1. How to transition between this form of animation and free-fall 'ragdol style' physics.
  • 2. Animations have to be defined at the model level, on a model by model basis, this is time consuming, and does not necesserily produce the best results.
  • 3. Many animation frames need defining for multiple combinations of moves. for example, most implimentations use a standing-run/jump/attack and a crouching-run/jump/attack series of frames. resulting in unrealistic motion for combinations of these actions (e.g. moving+turning whilst crouched and attacking.

Several enhancements to this standard technology, such as splitting a model in two have improved this situation, but only serve to further complicate matters, and can still result in strange looking animations in some circumstances.

skeletons, animation and skeletal physics:
It is probably worth pointing out, there is a vast difference between a skeleton, skeletal animation and skeletal physics.
Skeletal animation is still principly a frame based technology, only instead of manipulating the entire model, each frame denotes a series of bone locations and rotations, wheras skeletal physics manipuilates these positions depending on environmental conditions. The aim of this breif is to blend the two almost seemlessly with the result of removing the above problems and producing a model and animation system that is almost entirely modular.
enter Impulse Powered Skeletal Animation:
This technology (an idea I've been toying with since well before the release of that skel physics demo) aims to seperate the server frame and model animation. This allows for the animation to be handled entirely clientside in a client-server environment.
Server side transmit data:
player position, player rotation, player 'frame' based on current combinations of player actions (stance/run/jump/various attacks etc).
The clientside skeletal physics engine then takes this frame, or state as it will now be known, along with the position, player rotation and interacts with the environment to decide where to move each individual bone.
e.g.
stand = state 1.
crouch = state 2.
run = state 4.
walk = state 8.
jump = state 16.
kick1 = state 32.
kick2 = state 64.
punch = state 128.
shoot = state 256.
freefall = state 512
so if, for example a player is running and shooting, the server will send one piece of state info, state 260 (256+4).
© Mark 'mSparks' Parker 2010
<pubkey>AJXzWKeV59HaoUkmrCwP9f+kMr8aOIM
jMKy7ACsaRDCE/XuF0orj/jActtfWDMKjg/CixI7JP0Z6lbS99dc
86fxDIQOmfIU8BNYKPmlPA/uY3ZpT9/4iQY0XwKad5eJhDFW
cZ2Z4VUWJzlbuoX/QV4ihTVkr9JnyJb+fN9AOqXH9AQAB</pubkey>

User avatar
slacker
Advanced Member
Posts: 246
Joined: Fri Jul 18, 2003 7:08 am
Location: Australia
Contact:

Postby slacker » Wed Jun 09, 2004 2:50 am

i have NO idea what the hell all of that was about haha.. is this relevant to ltktbm? are you planning to implement a new graphics engine over the standard quake2 one?
<a href='http://www.partydome.us/' target='_blank'>http://www.partydome.us/</a>

User avatar
cody
Newbie
Posts: 1
Joined: Fri Aug 15, 2003 10:05 am

Postby cody » Tue Sep 28, 2004 5:52 pm

So what has been happening latley, are you still going at it MSpars with the new rag doll pyhsics? If you need some help with editing, like mapping, modeling, animations, stuff like that, I can help you. If you made something that could convert the models for Quake .MD2 format, to say something like, Milk Shape 3D where the animations are kepts, that would be absolutely awsome, consdiering I could do all new animations for the Rag Doll Physics, but anyways, your choice. My E Mail and MSN is codyalday@hotmail.com . Thankaz for your time.

User avatar
jal
Newbie
Posts: 1
Joined: Mon Jan 03, 2005 2:43 pm

Postby jal » Mon Jan 03, 2005 3:06 pm

mSparks wrote: Impulse Powered Skeletal Animation

Author: Mark 'mSparks' Parker, 2K4


(...)While this is more than suitable for good looking effects, it does present several problems;

  • 1. How to transition between this form of animation and free-fall 'ragdol style' physics.
  • 2. Animations have to be defined at the model level, on a model by model basis, this is time consuming, and does not necesserily produce the best results.
  • 3. Many animation frames need defining for multiple combinations of moves. for example, most implimentations use a standing-run/jump/attack and a crouching-run/jump/attack series of frames. resulting in unrealistic motion for combinations of these actions (e.g. moving+turning whilst crouched and attacking.
(...)

You've probably seen at qfusion forum that I got skm animation blending working, so, I've being also thinking about some of these problems. What I do for animation blending is creating skeleton frame poses external to the model. I mean, I create a skeleton using the bones posed for frame 'frame', and a second skeleton posed as in frame 'oldframe'. In fact, as I'm doing animation blending, I create a skeleton mixing 2 different poses. The bones belong to 'legs' take their bones for the leg's frame pose, and the upper bones take theirs bone possitions from the pose of upper frame pose (I'm not explaining it very well, but it's a quite simple concept). With these, I build a mixed skeleton frame pose, which will belong to the model frame, the same process is made for the model oldframe (or, in most cases, the previously used external frame pose is copied from frame to oldframe).

I said all these just to end up in here: Those two external skeletal frame poses are interpolated for drawing (or tag lerping). Well, for the transition in between skeletal animation and ragdoll (whatever physics effect) you could build one (or two) more external skeletal frame poses containing the skeleton purely animated as a ragdoll, and then interpolate it (by transition time) with the external skeletal frame poses of the animation. As you are working with the bones only it isn't that much cppu consuming, and there's no renderer issues with it, as the renderer only cares about the final external skeletal frame poses you send it.

Ouch, this is much confusing to talk about cause of external skeletal poses is just a name I invented. I hope I achieved to make this understandable.

BTW. Would it be possible that I could take a look to the ragdoll demo src?


Return to “General Engine Developement”

Who is online

Users browsing this forum: No registered users and 1 guest