XNodify - Generate Nodes Based On Text Expressions

XNodify allows you to generate material nodes based on the expression or a set of expressions.
(So that you can share the procedural materials without attachment via email and chat :wink: )

Example of Single Line Expression:
output(sin(x) + cos(y)

Output

Example of Multi-line Expression: (This expression generates a procedural circle on the bottom face of the default cube)

origin = comxyz(0.5, 0.5, 0)
b = vdist(texco, origin)
c = cmp(b, 0.3, 0.01) # radius: 0.3 and thickness 0.01
d = 1 - c
output(shd2rgb(d))

The above script can be converted into a single line expression (with a more compact layout) as:
output(shd2rgb(1 - cmp(vdist(texco, comxyz(0.5, 0.5, 0)), 0.3, 0.01)))

output
xnodify2

Features:

  • Automatic node layout with various vertical alignment options
  • Support for node grouping (just enclose the set of nodes to be grouped in curly braces preceded with the group name)
  • Add frames around individual lines to facilitate moving of all the related nodes
  • Support for assigning nodes to variables
  • Support for comments

Download location:

Detailed Video:

Feedback, queries and bug reports are welcome :slight_smile:

(Please note the tool is still in beta phase, and you may encounter issues.)

6 Likes

This looks a lot like the dynamic math expressions addon by baldingwizard: https://github.com/baldingwizard/Blender-Addons/wiki/Dynamic-Maths-Expression
Maybe you both should join forces :slightly_smiling_face:

Yes, I read about the dynamic math expression add-on just while creating my post.
As far as I understand, the math expression add-on let’s you create math nodes. Whereas XNodify can capture almost every kind of node through text expression (node parameters are not currently supported, but the feature will be coming soon). This also means the framework of XNodify makes it possible to export (not yet implemented) the entire node structure to expression and import them elsewhere (possibly with an uncluttered layout).

The motivation for me to create this add-on was that while working on procedural material, for adding almost every single node in the node editor I had to start from Shift+A and Search… (And then place the node properly). The only alternative I saw was the OSL based script nodes, which have limitations of being restricted to cycles only and having no GPU support and I am a big fan of eevee :slight_smile:

1 Like