Skeletal animation logic in OpenGL

What is the mass of bone, bone influences, joints, offset and local matrices? There is no specific article on the Internet that explains the logic well. I still donโ€™t know if each bone has a different model, which is combined later with other models. Or how to handle these matrices, how to set bones, combine and fit them ... I will be glad if you can share any articles or your knowledge about skeletal animation in opengl.

+4
source share
1 answer

Some of these terms will differ from each other. Instead of trying to give specific definitions, I would rather give a very rough overview of how skinning works, as I think you are asking.

Moreover, it is not particularly specific for GL ...

The basic idea is that you take a polygonal model and attach it to the skeleton. Each vertex in the model is assigned to one or more bones. The bone in this context is actually just a transformation, although they are usually visualized as a skeleton, since the bones are usually created in a hierarchy and, of course, will resemble a real skeleton.

A โ€œjointโ€ can simply mean โ€œbone,โ€ or in other contexts can actually refer to how the two bones are connected and articulated ...

Because bones are hierarchical, they will have โ€œlocalโ€ transformations that describe their transformation relative to the parent. At run time, the transforms are usually combined so that they are all in the same space.

Assigning vertices to bones is done using weights. Weights will usually contain up to 1 for each vertex. Weights can be automatically assigned by proximity to the bone, but are usually manually adjusted by the artist. Often they are "drawn" on a 3D model using the tool in an art package.

At runtime, the vertices are transformed by each bone that they affect, and the final position of the vertices is the weighted average of the result of these different transformations. How this weighted average is calculated may differ, but the overall approach.

However, for runtime applications, it is usually important that the number of different bones affecting the vertex is minimal and there may be an upper limit that is relatively small; 4 maybe. Therefore, instead of providing each vertex with a weight for each bone in the skeleton, a fixed number of joint indexes with corresponding weights are usually provided.

Note that you do nothing at all with the coordinates of the texture when scanning, but you will almost certainly have to recalculate the normals and, possibly, the tangent vectors. Again, how to do this can vary between implementations.

+5
source

All Articles