Rigging nodes

New release:

0.3.0

Update requirements

  • To update files created with previous versions of this addon:
    1. Make a backup of the original file.
    2. Make sure all the “Custom reroute” nodes removed in the previous version (0.2.0) have already been deleted or replaced with actual reroute nodes.
    3. Update the addon
    4. Execute the operator “Create correct tree types” found in the node editor’s side panel, under “Rigging Nodes Tree Settings”.

Added

  • Ability to correctly execute nodes inside groups, making working with groups much easier
  • “Only update selected nodes” option for speeding up the interface redraw in trees with too many nodes (ideally for splitting it into more manageable sub-groups)
  • New Nodes:
    • Armature:
      • Get armature property
      • Set armature property
      • Set armature layers
  • Set variable node has a button to select all the “Get” nodes using that variable

Fixed

  • Node group creation errors (links getting disconnected, missplaced nodes and sockets changing their types)

Changed

  • Only main node trees will be able to be selected in the node editor
  • Only node trees marked as groups will be selectable in the group node
  • Only node trees marked as loops will be selectable in the loop node
  • The order of the input sockets when creating a group is now based on the y position of the input nodes

It could take some work, but if performance gets good enough (likely through highly modularized node trees) this could even be usable for “ephemeral rigging” (or something similar)!
I gotta try using this… this could be so fun!

Hi, this addon does not replace the way rigs work inside blender in any way, It lets you modularize the rig building process instead. You will be able to create the same kind of rigs, but with a different approach and with an added reusable component to it.

Basically, the adaptation would be that all keyframes are pushed to the deform rig (possibly baked onto ones), and the meta-rig can be rebuilt/reconfigured at the press of a button or with a pie menu.

Optionally, the addition of an ‘interpolation’ layer could be used, where all keyframes are identical (or as close as possible) between FK and IK, and it only affects interpolation (and not how you interact with the rig).

New release

0.4.0

Old node trees must be upgraded to this version with the “Update Nodes” operator in the side panel (n)

Added

  • Added buttons in the bone properties panel and bone constraints panel for selecting the nodes that edited those bones or constraints in the node tree

  • When a node fails to execute, the entire chain of nodes will show an error

  • Clicking on the error message of a node will send you to the node that made it fail

  • Some nodes now accept some inputs to be passed as arrays

  • Input sockets now have the option to output objects as references or as editable objects

  • Some nodes now have optional inputs that can be added through a dropdown menu

  • New Nodes:

    • Get bones
    • Get bone chain
    • Duplicate chain
    • Remove bone
    • Set bone roll
    • Extend array
    • Split array
    • Symmetrize
    • Create Bone Name
  • Boolean and Float array sockets can have their default values changed directly in the node

  • Nodes will fail to execute if their version is old. To upgrade them the “Upgrade Nodes” operator can be executed

  • Option in Input nodes to add the output object to a collection

Changed

  • Nodes that required sockets to be hidden to be ignored now have those sockets as optional, will always be taken into account and can be added with a dropdown menu
  • String and Enum sockets are now compatible with each other
  • Update Nodes operator now updates every node in every node group in the file
  • Merged get/set curve and armature nodes into the object get/set properties nodes

Fixed

  • Issues with input nodes
  • Updating sockets in node group
  • Crashes related to enum properties
  • Execution speed improvement by caching socket connections in dictionaries
  • Slow UI due to a large ammount of links (solved by caching connections aswell)

Removed

  • Nodes:
    • “Is Subtree”
    • “Get Armature Property”
    • “Set Armature Property”
    • “Get Curve Property”
    • “set Curve Property”
1 Like

0.5.0

Old node groups must be upgraded to this version with the “Create Correct Groups” operator in the side panel (n)

Added

  • It is now possible to pick an object directly from an object ref socket

Changed

  • Node groups now work with the default blender group input and group output nodes
  • Multiple input and output nodes are now supported in the same node group
  • Improved UI

Fixed

  • Error inspection operator when executed from inside a node group
  • Node reconnection between not compatible sockets
1 Like

Hi,

very cool that you start developing a rigging node system.
Do you have a precise goal in mind how does your system will work, or is this more a wip experiment.

I would love to have some string list option to create many bones at once.
Also relationchips between a set of bones would be very cool where i could use the string lists.

Do you have a documentation about the custom script so i can test some mockups?
Do you have some information about pynodes to implement a system like yours ?

Right now I’m just implementing the nodes I feel I need for the rigs I’m building at the moment.

You can create a list with the “Make Array” node. There are string arrays and you can loop through an array with the loop node. You can also create an array of vectors that you can feed into the loop node.

Some nodes have a dropdown that lets you select between modifing only one bone or multiple at the same time (by giving it a list/array). If some specific node does not have this, you can still go with a loop node again, or just suggest a change for it in this thread

I gave some info about this in this post. Nothing has changed since then as I don’t personally use this right now

You can read the documentation for NodeTree and Node classes and inspect the code for my addon or Sverchok.

0.6.0

Added

  • New “Action” socket

  • New nodes:

    • Rotate bone
    • Join Armature
    • Apply Action
    • Geometry Functions (2D vector functions have been ignored)
  • Set property nodes can now recognize actions (useful for action constraint)

  • Pressing control while activating the “Edit Datablock” operator on the input nodes won’t remove from scene the objects created by the current tree.

  • “Bool” sockets are now compatible with strings, bones, enums, integers, floats and objects

  • “Bone” sockets now show the possible bones if the node has another socket named “Armature”

Fixed

  • Executing the node tree from inside a node group sometimes failed

Changed

  • Set property nodes now respect the order in which the sockets are ordered (useful when changing the connect and parent properties of a bone at the same time)

Removed

  • “Reference Object” Node has been removed as it is now possible to pick the object directly from an object reference socket
1 Like