Positioning joints

I have to apologise in advance. It wasn’t until I viewed the screenshots after-the-fact that I realised how hard it is to see the points and connections. I didn’t reset the size of the points to 4x4 after trying to figure out if the points were converging into one point or if they were tightly spaced apart. To see the points (they’re all green) you may need to view the images separately and zoom in.

Joints with the incorrect matrix order

The first attempt at taking the bind position into world space failed without much fanfare. I messed up the matrix multiplication order, after switching it around (from world * inverse bind pose to inverse bind pose * world) they appered as they do in the next screenshot.

Incomplete chain of joint matrices

As you can see, the joints are now upside down, which is correct, but there are two missing due to not multiplying all the matrices in the chain (I’ve since switched over to using the world matrix instead of concatenating the full chain).

Upside down joints

After fixing the hierarchy, they were still upside down. To see if I could get a point rendered, I created a point at < 2, 1, 0 >, you can see the trail of points that are being rendered relative to the other matrices in the chain.

A point positioned relative to each joint's matrix

With all of that assembled, I made a dummy point to render which was located at < 0, 1 * joint index, 0 >.

All points rendering correctly

Now I could get back to where I was last month.

The full representation of the skeleton

I’m currently writing the API for animation. Next time I should have at least the positioning of the skeleton done, whether or not it will be animated is another issue. Getting the vertices weighted will be next after that.