Advertisement

too many animation sequences

Started by January 08, 2006 07:48 AM
7 comments, last by massive-war 19 years ago
Hi I'm new to 3D modelling, and was just considering the various animation sequences I'll need for the characters in my game. Amoung them are... Movement: run, walk, walk backwards strafe left, strafe right Combat: attack 1-handed weapon (slash down) attack 1-handed weapon (slash sideways) attack 2-handed weapon (slash down) attack 2-handed weapon (slash sideways) attack bow & arrow Because I want my characters to be able to strafe while moving forward or backwards, that gives me these seporate animation sequences: run forwards run forwards and strafe left run forwards and strafe right walk forwards walk forwards and strafe left walk forwards and strafe right strafe left strafe right walk backwards walk backwards and strafe left walk backwards and strafe right 11 seporate movement sequances! Now consider the 5 different combat seqnences I mentioned earlier... lets say I want the characters to be able to move around while striking an opponent - that means I have to make *another* 11 sequences for *each* of those 5 combat actions... that's another 55 sequences! That's 5 for combat 11 for basic movement and 55 for the various combat *and* movment combinations 71 animation sequences!!! That's before I've considered other basic sequences... jump, crouch, cast spell, die, etc. the way I see it, each model will have around 1000 frames of animation. Surely there's an easier way? Thanks for your help.
google for "skeletal animation".

You can animate different parts of a character's body and then combine them when applicable.
[size="2"]I like the Walrus best.
Advertisement
Thanks - I'll look into it.

I'm using Blitz3D, which has a command:

ExtractAnimSeq( entity,first_frame,last_frame )

Which, I think, grabs the position and rotation of *all* bones in the given
mesh over the selected frames, and returns a animation number.

Then, you can call :

Animate ( entity,animation_number )

...which tells the mesh to use any *one* of the extracted sequences.

As far as I know, there is no option to combine the skeletal info from, say, the legs of one sequence and the torso of another. Maybe this is a limitation of Blitz3D.
Sorry, I forgot to log in *oops*

Hence "Anonymous Poster"

*looks at feet and blushes*

Well, if you can't merge your animations in the game code (which you really should dig into more), you can at least make life easier on yourself by copying over the positions of, say, the upper body from the slash-down animation to a copy of the strafe-left animation. Make some minor changes to adjust, and you have your new animation.
gsgraham.comSo, no, zebras are not causing hurricanes.
55 animations isn't really a large number... For games like Sims2, I think the animations are in the tens of thousands (IIRC, read it in an article about 'Spore' (I suggest reading the article http://pc.ign.com/articles/617/617441p1.html ). For even simpler games on the character level, like Rome:Total War, an animation set (of which there are about 2 dozen) has a couple hundred seperate sequences. This is why mo-cap is becoming more and more popular for realistic actions/characters. Unfortunately, if you can't mocap, then hand animating is your only way... animation is usually the most work, the only way to reduce the workload is what has been suggested, and re-use pieces of an animation whereever possible.
-------------www.robg3d.com
Advertisement
I've looked into it a bit and it turns out that the only way to merge animations in Blitz3D is to create a seporate file with just the skeletal animation and load that file as well as the main mesh (yes, you laod all the animation sequences twice). Then you have to animate the player mesh using your first animation sequence and, if a second animation is required, you must animate the invisable skeleton entity using the second sequence.

An "UpdateWorld()" function call adjusts all meshes / bones so that they are correct for their current frame of animation, then you have to manually rotate and translate all the bones in the player mesh that should be showing the second animation sequence so that they match the equivalent bones in the invisable skeleton entity.


I could just break the player model into two parts (split at the waist line, or just above) and move them both around in game as if they were one entity. That way I can tell the legs to walk, run, stand idle or whatever as required and independantly of all that I can tell the upper body to perform attacks and gestures and so on.

However this will restrict me to joining all verticies that lie on this split to a bone that never moves or rotates in any animation - that's the only wany I can be sure that all the various frames of any pair of animation sequences will seamlessly match up. This, I fear, could leave the animations looking very rigid and unnatural.


Which is the better solution?
Is there an alternative that I have not considered here (except for "stop using Blitz3D and move on to the <insert name here> engine")?


Thanks
You can always look into an animation scripting language..one that allows you to "blend" animations together. With a system like this, there is no need to "break" the model apart either.

walk + sword attack = sword attack while walking (that's the simplist way I could think to put it =) )
Basically how it works, is a file tells the game to play both animations, and combine them. The file dictates influence weight for the bones of the skeleton, and the weight of each animation.

RAD Game Tools: Granny 2 is one such 3rd party system. I'm sure there are more out there.
How do major game companies compress sprites and use them in memory? I mean, I have 4 large bitmaps that I use for my character's animation sequences (soon to be more), and that's a couple megs of memory. How can I use it so it doesn't load the friggen sprite into memory each time I want to use it?

Massive-war

(I mean when I have enemies later on, and each one has a large bitmap or two of sprites -- notice when I say 'large bitmap' I'm talking about combined smaller bitmaps to make one large image -- , the sprite count will get out of control.

What should I do?
A true American.One who supports his government.Is ambitious, successful, and hardworking.The direct definition of a conservative... the ones who actually get stuff done in this country.Long live Americans.

This topic is closed to new replies.

Advertisement