Animating Chars - Tedious

Blitz3D Forums/Blitz3D Programming/Animating Chars - Tedious

John Blackledge(Posted 2004) [#1]
1) I have quite a few (different) characters to model, but which all essentially use the same animations.
Obviously I import the working skeleton/bones into each, but then I have the tedious process of linking up each set of vertices with each bone.
Since each character has a different shape with different vertices, does it mean that it really _is_ that tedious - is there no way to get around this time consuming work.

2) What is ExtractAnimSeq() for anyway (unless all your characters are the same)?
If, as described above, each of my characters is a different shape with different vertices, is this command any use to me?


NTense(Posted 2004) [#2]
I've wondered about this as well John.. I've been considering trying to write an app that would allow you to have one or more "master skeletons" animated with all the cycles the game requires. Then all of the characters would have skeletons prerigged, but without animation keyframes attached to them. Then, the goal is to copy the segments of desired keyframes from one skeleton to another. The skeletons would have to have the same naming convention, but I think it could be done by retrieving the data from the master skeletons, and then copying it to the target skeletons with SetAnimKey.. I haven't tried it yet, just something I've been tossing around in my feeble little brain. Seems like that would make your chore easier if it can be done.


Jeroen(Posted 2004) [#3]
Check Leadwerks Character Shop. It doesn't do it for me, but for what you apparently need, it would be a good solution.


QuickSilva(Posted 2004) [#4]
Doesn`t Pacemaker do just this sort of thing? Try the demo. It doesn`t appear to be in the toolbox section of the site so just do a search on the forums.

Jason.


John Blackledge(Posted 2004) [#5]
I downloaded Character Shop (on a 56k modem - yikes!).
It seems fine for what it does, but it's not magic - it does most of the job of intelligently attaching vertices to bones, but you still have to do a _lot_ of manual selection.
And you are stuck with the included animations - you can't add your own - none of which are appropraie to my chars.
Also you MUST have a three button mouse with a wheel.

@Ntense - If there is no other obvious way then I think you're going along the right track.
Something like:
1) load in a master skeleton with all anims.
2) set master skeleton anim going (say, walking).
3) copy master skeleton bone rotations to selected character.

In the most general sense there must be a way of doing this. I've been looking at Castle Wolfenstein, and a lot of the chars have identical gestures - they must access them from a common file(?)

Further thoughts: One way would be to have the same master (bodyless) skeleton which is loaded in for _each_ char as a reference. Then animate whichever sequence the char requires in its master skeleton, and copy the movments to the visible character.
Obviously, all chars' bones would have to be, and named, the same; but that's not too bad.

I really would appreciate any and all comments on this topic.
I'm about to start a ton of work and I don't want to get to the end of it then slap myself on the forehead and say 'Oh no, if only I'd known!'.


Afrohorse(Posted 2004) [#6]
There are two seperate issues here it seems,

o The tedius manual edit of vertices to bones.
o Using the same animations on different models

As for the tedius part of manually assigning vertex weights to bones, I'm afriad your stuck with that - I've use lots of 3D packages that auto assign bones weights but you always have to manually go over them again to get it just right. However, if you have a mesh that is almost exactly the same, you could use it as a template to model other characters. If you have a bone weight mesh already setup, you can always tweak that mesh to create a new character keeping the weights intact - but it's a messy job.

As for using animations on different meshes, then as you say using a master skeleton would do the job (if all named bones where the same) although it would mean copying all movement across every frame. Also one other big problem I see is that if you needed to run different animations on different meshes, you'd have to have a master skeleton per animation!

Another method, although a bit more involved but would save time in the long run would be to write a small app that takes the animation keys from one blitz file and place them into another - so each character has all the animations it needs. Of course this would take more memory up (but hey, PC's can handle it) but at least then you don't have to copy over all the bone info to each character, and you can run lots of different animations per character without additional overhead.

There is also the added bonus that if you do make an app that can do that - everyone can use it, and they will love you forever :)


John Blackledge(Posted 2004) [#7]
Thanks Afrohorse. Don't think I could write such an app, but some Blitz coders are well versed in B3D format, so I hope they'd try - I'd pay for it.

Still leaves me with the question - what use is ExtractAnimSeq? - Unless all your characters are exactly the same.