Blender currently uses hard-coded transforms (each object has a transform + delta transform, bones have one transform, Parenting makes a hidden inverse transform, constraints have offsets, etc…)
The system is a bit opaque and inflexible; So when Lukas TÃ¶nne add pynodes to Blender, I jumped at the idea of trying to do a nodal transformation system, that would hold both transform nodes and constraint-ish nodes, and relieve the need for rigging with ‘too many bones’ and lots of constraints. On the way back from SIGGRAPH I had some time to kill in lounges between flights, so I hacked together a really simple proof of concept, and cleaned it up some today. All it does is copy a transform from one object to another:
- define a custom nodetree type
- define a custom 4×4 matrix socket
- define a transform input node that takes the transform from one object
- define a transform output node that puts a transform onto an object
- really, really hackish driver update function that forces the node tree to evaluate
There is a lot that’s wrong- arguably buggy with what I did, and the current design of pynodes doesn’t really work for this type of usage (I think) but this is a way to prove concepts and keep conversation going.