Email or username:

Password:

Forgot your password?
Nikita Lisitsa

When I first implemented skeletal animations, I got really confused by all the transformations and coordinate systems; even more so when working with the glTF format.

Now I've finally finished an article with all the gory details: lisyarus.github.io/blog/graphi

4 comments
jell

@lisyarus Thank you for this "Missing Manual". I haven't yet had to get down'n'dirty with glTF (beyond feeding static models/attribs to a shader) so this should serve well as a handy resource [or possibly a grave warning]. 😄

VoR

@lisyarus Good article. Some bits was a lil hard to follow, but its mostly because I'm trying translate your descriptions of things to how I've built things. Like using Local CS in many places felt confusing because I've been calling these things world, model & local spaces for years now when dealing with skinning transform hierarchies.

And the GLTF stuff, woof, how much I hate their bindpose implementation. I stick to using the localspace node transforms instead of bindpose matrices.

VoR

@lisyarus github.com/sketchpunklabs/osso

Here's an alternative example of doing matrix skinning in glsl. This way you can remove the loop in your shader & get the final model space transform for the bone that you can apply to the pos & normal, instead of computing it twice.

In that folder I also have Pure DualQuat, Transform > DQ+Scale and SQT skinning alternatives.

Nikita Lisitsa

@sketchpunk Well the loop will be unrolled by the compiler anyway, it's here just for convenience. As to computing the total matrix first and then applying it to position and normal - I thought about it but decided that it's more arithmetic operations this way. But now that I think about it I realize I might be wrong :)

Go Up