Game Development Community

Segmented Player models and performance

by Brendan Rogers · in Torque Game Engine · 06/09/2001 (5:06 pm) · 5 replies

Hi guys,

I'm sure somone can answer this for me.
I noticed that tribes2 uses segmented player models.
I was wondering if segmented models give a better performance or has an advantage over using full skinned models (like counterstrike/halflife)

If the engine has to deform the vertices of a fully skinned model, would that slow it down at all?
If we use segemented is that less work for the cpu?
Im just wondering if there is a difference between the two and if so what it is.

thanks!

Caliban

#1
06/11/2001 (7:28 pm)
There are three basic ways to do this stuff, and it turns out that the V12 does all three of them. Each has it's advantage.

The first is morphed meshes animated by simply saving off every vertice in the shape for each frame of animation. This can be quite fast, as there is not much run-time work, but can eat up a lot of memory. You can compress your vertices, but then lose performance on the decompression. Another advantage is that there few limitations to what you can animate. Of course you can't modify the animations very easily at run-time either.

The second is what is sometimes called skeletal animation. Here a set of bones are animated and objects such as the head, legs and arms are simply attached to individual bones and rendered using that bones transform. This form of animation takes up much less space since you only store the transform for each bone for each frame. There is a little more runtime work though, you need to compute the transform for each bone in the skeletal hierarchy. You also need to perform hardware state changes (the transform) for each piece of the shape being rendered. Skeletal animations can be tweaked at run-time, blended together, and otherwise manipulated which makes this form of animation pretty popular.

The third approach uses skeletal animation, but "skin" a continuous mesh on to it. Typically multiple transform can affect a single vertices, potentially expensive, but more and more hardware supports this kind of thing directly. The skeleton transform hierarchy is still calculated on the CPU, but you also get the same animation flexibility. Since you only have a single mesh, chopping off a leg or a head can be problematic. (The v12 currently doesn't support hardware acceleration of this feature).
#2
06/12/2001 (1:01 am)
ok, so the second method is what was used in tribes2?
I noticed you guys used character studio for the characters. So the player segments were simply linked to the corresponding bones?
does it only export rotations? or the positions as well?

Basically we will be doing fully skinned player models but are looking for a way to animate lots of monsters and npcs on screen. So I was thinking maybe of using the first method for monsters and characters and the third for players.
we want to create really low poly monsters, npcs and animate them cheaply so that we can fill the screen with them.
The main concern is performance. I know that in other engines having 20-30 fully skinned models each with 15 bones or so will really chug the machine.
#3
06/12/2001 (5:57 pm)
Different shapes in T2 used the different animation approaches, but the player used #2. Parts are attached to the bones in max and it exports rotation and translation from Max.
#4
06/12/2001 (7:39 pm)
Ive noticed the jetpack is animated via a linked x-form.
can anything be animated via linked x-form? positions as well as rotations?
#5
06/13/2001 (11:49 am)
I'm not all that familiar with Max, or the exporter. But I think x-forms generate morphed mesh nodes (#1 ubove). Everything include translation and rotation.