|
From: Seth G. <sga...@li...> - 2000-05-04 22:45:57
|
Skeletal animation is fairly simple: You have an ordinary model, like the models already used in Quake. You have a set of "bones" that are used to deform the model. Bones are animated. Each bone animation frame has position and angle information. This could be stored as two vectors (a 3d coordinate, and euler angles) or as a transformation matrix, or as quarternions or some other form. Bones are hierarchial. Each bone except for the "root" bone has a "parent" bone. When you position a bone you combine it's rotation and position with it's parent's rotation and position, and it's parent's parent's position, and so on. Bones move vertices. Each bone has a list of vertices it is attatched to. Before rendering the model, the bone's rotation and position (combined with it's parents and so on) is applied to those vertices which are attatched to it. In a primitive skeletal animation system like Quake 3, whole models are attatched to bones instead of individual vertices. In an advanced animation system individual vertices are "weighted" to bones, so a vertex might be "67%" attatched to one bone and "33%" attatched to another. The common practise today seems to be a middle ground, like Half Life, where each vertex is attatched 100% to a bone. There are two ways to represent this relationship: 1. Each vertex has a bone index. 2. Each bone has a list of vertices. The first system is attractive because it is simple and predictable - it adds a certain amount of memory for each vertex. But the second system is probably better because it seperates the high level feature - bones - from a more basic feature, so you don't even have to change the model data, just add the skeleton on top of the current system. On Wed, 3 May 2000, Michael Mol wrote: > I'm very interested in it. I don't know much C, but I'll chew on it for > as long as nobody else feels like it. Who knows? Maybe I'll surprise > myself(not to mention anybody else who knows the programming habits of > somebody who only knows BASIC/M$VB). __ __ _ _ __ __ _/ \__/ \__/ Seth Galbraith "The Serpent Lord" \__/ \__/ \_ \__/ \__/ \_ sga...@kr... #2244199 on ICQ _/ \__/ \__/ _/ \__/ \__/ http://www.planetquake.com/simitar \__/ \__/ \_ |