I've got it mostly working now with just a few visual bugs. I used it to bring over my skeleton editor functionality I had on my old C# tool. This lets you edit bone collision shapes for localized hit detection or ragdolly physics or whatever.
And speaking of physics, I'm finally getting around to trying a ready-to-go physics library. There are a bunch out there but I decided on jolt. It is C++ but there's a C adapter made by the same person that wrote the C# stuff I used for awhile vortice.
I expected it would take a few days to get anything working, but it was super easy to get going. I had spheres bouncing around in about 5 hours.
Next up is biped movement, then ragdolls, then maybe might try some vehicle stuff.
So ever since the early soul blade games, it was readily apparent that the "east" has a huge edge on the west when it comes to character models. I remember the first soul calibur that came with posing tools, I sat with artists and we looked at the joints and just could not figure out how they were so perfect.
I probably could have figured it out in the meantime with the rise of MMD, but I just never got around to looking into it.
Some gacha game has released their models in mmd format and this artist goes into how it works. 20+ year mystery solved for me. It is similar to how the twitch artist shonzo showed me with the wrists, a twist bone near the joint.
So among my list of bad decisions for making games, one of the best/worst was choosing Collada as a go-between format for art programs and my code.
Blender is getting rid of it in the next couple years, but most linux packages have already removed it as the code is using old libraries that have security vulnerabilities.
This format is cool. There's even a few vscode addons that read it. Animations even work. Not really possible with collada.
The above was handy because the blender exporter is a bit vague on the details. Took alot of trial and error to get any of the skinning or animation data to export. At first I was painfully digging through it in json (all squished onto one line).
Every format I've ever used with blender won't export real keyframes though. It wants to interpolate and export a new key for every frame. Sampled animation it calls it. It does have some kind of keyframe reduction so maybe in the end it will come out about the same. I'll see once I get it going.
The file's approach is to cram anything that has a name or references into json, and then the raw lists of vectors and matrices are saved in a binary blob. The json gives you the offsets to what it wants. Seems like a solid format.