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.

Get the Blend file here!

  1. Is it some kind of Grasshopper for Blender? Check out nodebox.

©URCHIN 2015