I can do this relatively easily in python: I store a “bind pose” matrix that's
M = B.getTransformTo(N)
T = (M * B.worldTransform()) * N.parentAndSubnetTransform().inverted * N.preTransform().inverted() N.parmTuple('r').set(T.extractRotates())
This works. Using callbacks, I can rotate the proxy bone and it controls the null. This is great, except the callbacks don't fire for a lot of things, including IKs and during animation, which means it's not really a working solution (and no idea how this scales to hundreds of bones).
With CHOPs I seem to be able to get a world transform a few ways, but it seems unclear how to store the bind pose and generate a transform relative to that.But the CHOP solution seems to be ideal since it “just works” with IK and keyframes (and seems less “ick” than Python callbacks, since they need reestablished every load etc).
However I'm open to any working solution that I can wrap my head around.
Edit: Yes this is absolutely simple. `Transform` nodes can easily hold the constant matrices and do the math (though sadly there appears to be no way to set them directly). Then it's just some `ObjectChain` to get the proper worldspace from the hierarchy, chain the transforms, and export. Just took a bit of trial and error to figure out what did what. Apologies for the noise.