Writing Blender Python AddOns

Fully Tilted Programming

A quick update showing the progress on my first Python AddOn for Blender. It's been a little slow going because of all the undocumented (or partially documented, or incorrectly documented) API changes due to the 2.8 release. Things have been getting better but there's still quite a bit of guessing and detective work involved in plugin development right now.

It is often useful when animating to be able to switch between Inverse and Forward Kinematics depending on the needs of the specific clip. A very common first pass way to implement this (as I did in my original rig) is to have a simple influence slider that allows you to interpolate your deform bones between your IK and and your FK bones.

This works fine when your entire animation is either done completely in IK or FK. Sometimes, however, it is useful to do part of the animation in IK, and then another part in FK. Similarly, sometimes it's useful to get a basic pose in IK or FK, then use the other to do some fine tweaks.

One way I've frequenly seen this done is by having a shadow IK and FK bone structure (driver bones) in addition to the bones which the mesh is actually skinned to (deform bones). Then, using a script and some naming conventions you can either have the deform bones follow the IK or FK skeleton, or copy paste the IK or FK transforms to the deform bones when doing a transition.

This script is the first pass at understanding more about the Python API to build a pretty common and relatively easy task (take a bone, copy the transform).

It turned out to be a bit more of a headache than I anticipated, and I spent much much longer than I expected (I thought maybe 3 or 4 hours, but it took closer to 12 spread out over two days). In fact I was a little frustrated by the end of it.

Rig Tools Script

I'll go through and talk a little bit more about how it works later, but for now here's the full source in case anyone is interested in how I set it up. I can't say this is the RIGHT way to do it, but it's one that ... kinda? works?

Full Source