So Ive been playing around with Maya's python API for the last few weeks, and I've been developing a custom node called a dualSplineNode. It was based on a prototype character spine setup that I created back in 2008 which uses 2 curves, a bunch of utility nodes and some set driven keys to avoid using spline IK.
Now the reason I built this was to have more control over what the spine is doing at a point along the curve. Spline Ik is rather limiting when it comes to twisting and adding stretch starts to make things abit messy. To cut a long story short, its not as cool as it could be. So in comes the dualSpline. As a prototype its relatively simple to setup, as it requires 2 input curves driving joints via pointOnCurveInfo nodes and tangent constraints. It also does volume preservation via set driven keys. The prototype is possibly more messy then a conventional spline Ik setup, but it gets the job done. I had the opportunity to battle test it on some productions, which it seemed to work well.
I have spent the last while learning (and cursing) the Maya Python API while writing this into a node. Its basically a glorified pointOnCurveInfo node, except its more of a twoPointsOnTwoCurvesInfo node with none of the extras.. :p At the moment it circumvents 2 pointOnCurveInfo nodes and a tangent constraint which I'm really happy with.
I managed to find some awesome guys online with a wealth of knowledge on writing plugins with python, most notably a guy named Ryan Trowbridge who had some really useful stuff on using matrix's in the API. Many thanks Ryan! Also check out Judd Simantov and Riggerman's Blog.
I will post progress on this stuff as I go.. and the node when its done.