Cartan Node Library 2.3

john's Avatar


27 May, 2021 05:43 AM

Attached is the latest upgrade to my node library! Version 2.3 includes 92 nodes. All nodes are free for use with no restrictions.

To use: with your current project open use File/Open Recent to open node library 2.3.ndbx in another window. Then just copy/paste the desired node from the library into your project. A few of the nodes also require adding a code library module (included).

As you can see in the screenshot, he nodes are all grouped together in the lower left part of the network pane; they are arranged in columns by type and within each type alphabetically. Hover over each one to see caption.

The big tree to the right and above contains demos for each node. Look inside to see examples and also find additional related nodes. By default I render the empty poster view so the library will open quickly. Render the node next to it to see the whole poster (takes a few seconds).


New Nodes:


  • Tangent node now faster, no longer requires code module
  • Grid_plus now faster
  • Conver_base now takes floats without errors and properly pads numbers
  • Poisson renamed to scatter_evenly
  • Poster simplified to reduce render time
  • Make_curve replaced with curve; no longer requires code module
  • Other nodes which used make_curve also no longer require a code module:
    • explode
    • intersect
    • mask
    • rev_dir
    • spiral
    • sub_path
    • trace
    • waveform

Deprecated Nodes

  • Evolve. Too complicated, I always had to modify it
  • Bounce. Can now use Easing node instead.
  • Fit_curve. Not much better than round_segments

If anyone misses any of the three deprecated nodes please let me know and I will restore them.

I would really appreciate hearing from anyone who uses this library. I can't tell if anyone even views this discussion, let alone downloads the library. It would be great to hear some feedback on what works, what doesn't, and requests for additional nodes.

Go forth and create!


  1. Support Staff 1 Posted by john on 03 Jun, 2021 12:40 AM

    john's Avatar

    My node library may be the largest NodeBox network ever created.

    Some stats:

    Total Nodes: 64,481
    Total Connections: 79,622
    Maximum depth: 11 levels

    A week has passed and I still haven't had a single confirmation that anyone out there has even seen my library post, let alone downloaded and tried it. If anyone is still following my "Show Your Work" posts, please reply with a simple "like" or "thanks" or "saw this, will try it" or "am using it".

    If I get no such responses soon I will assume that I'm just talking to myself here.

    I will keep improving my node library because A) I enjoy it, and B) it's incredibly useful. But if no one else is interested, I will keep future releases to myself.


  2. 2 Posted by D on 05 Jun, 2021 04:56 AM

    D's Avatar

    :-) Nah, I regularly check this site and use node box.
    Thank you for continuing to move this project forward!

  3. 3 Posted by D on 05 Jun, 2021 05:00 AM

    D's Avatar

    and thank you for sharing the Library!

  4. 4 Posted by florisdejonge on 05 Jun, 2021 07:40 AM

    florisdejonge's Avatar

    Hi John, Thanks for sharing the new library! I haven't been able to look at the new additions and improvements, but I have found the previous version tremendously useful and have been using it a whole lot, so I suspect the same goes for this library.

  5. Support Staff 5 Posted by john on 05 Jun, 2021 10:27 AM

    john's Avatar

    Thanks, D and Floris. Quite a relief to know there's still a few of us left.

    Let me know if you have any feedback. One of the challenges with this project is the sheer number of nodes. Only a small percentage of the nodes I create make it into my library, but I could still easily hit a hundred by the next release. A hundred nodes are hard to search through and understand and remember. The same is true with Nodebox and its almost 150 nodes. How many nodes is too many? Is there some other way of organizing and releasing nodes that would be less overwhelming?

  6. 6 Posted by florisdejonge on 06 Jun, 2021 07:25 AM

    florisdejonge's Avatar


    Since your were asking on some feedback on your Node Library and listed some questions, I’ve listed some information on how I am using it.

    The nodes I am using fairly regularly are:

    • Mask
      • It gives an error quite frequently: ‘Divider cannot be zero’. Which seems to be caused when the mask is to close to and end- or startpoint of a line. I’ve found that scaling the artwork up, apply the mask, and scaling down helps with getting the necessary accuracy. Don’t know what consequence this has for performance.
    • Waveform
    • Scatter evenly
    • Join
    • Image
    • Grid_plus
    • Hexgrid

    Nodes that I am using a lot, but I regard as a basic tool. They are quite simple, but very useful

    • Explode
    • Diff_List
    • Indices
    • Drop_last

    Nodes that I like and use in specific cases

    • Treemap
      • I have used this as a lay-out tool. So I am scaling it to fit the shapes, with the result of a circlepacking like effect. Which would be nice with squares instead of rectangles
    • Spiral
    • Contours
    • Curve
    • Area

    Which doesn’t mean that the Nodes that are not mentioned are not usable in any case, just that it doesn’t suit my needs, or I do not understand how to use them (yet). Sometimes, when I am trying to solve a problem, I browse the library or the forums whether there possibly already is a possible solution.

    In regard to your questions on how to keep an oversight on the amount of Nodes. The most user-friendly solution would probably be that these kind of functions would become available in the ‘new node’-menu/’create new node’-function. Is there any any change on an update such as that? As far as I know, the development of Nodebox was part of a research project, but are there any plans to continue developing/updating it?

    Currently you’ve grouped the different Nodes in certain ways, right? Is this in some way similar to the same categories listed in Nodebox itself? I mean: Math, String, Color, List, Data, Geometry, Network, Core, Other? Or is is possible to do so? In that case it is possible to conceptualize specific parts of your Node Library as add-ons to this and maybe to provide a separate Node Library on each of these subjects? Managing and using the Cartan Node Libraries (plural) this way could maybe be easier.

    Another possibility is to get more user feedback as provided above. Nodes that apparently aren’t used can be become omitted in updates.

    Hopefully this helps,

  7. Support Staff 7 Posted by john on 06 Jun, 2021 09:27 AM

    john's Avatar


    Thank you VERY much for this detailed feedback. Very helpful.

    Re Mask. Try using the latest version from my library instead of the original version you and I developed together. I can't quite remember, but I might have fixed that division by zero error in the mask node. If not, please send me a copy of a network triggering that error so I can replicate it and fix it. Thanks.

    Re Area. Note that Area only works with poly-line paths. If you give it a shape with a curve in the path it will give a wrong answer. If you do want to take the area of a curved shape, resample it first.

    I wish I could add my nodes - or anyone else's - into the New Node dialog. This is something Frederik wanted to allow, but never got around to and probably never will now.

    NodeBox was indeed a research project at a Belgian research institute (EMRG) that was disbanded a few years ago. Its creators have scattered and are now working on other things, though they may step in to help every now and then (as Frederik did with the recent update). But there are teachers and artists around the world still using NodeBox. And I plan to be here helping on the forum until they haul me away.

    Yes I have grouped the nodes by approximately the same categories Nodebox uses. You can see that in the color of the nodes (which follow Nodebox output category colorings). I agree that at some point it might make sense to break the collection in multiple libraries. I might also issue special "node packs" focused on a niche area - maybe plotting nodes could be such a special collection.

    Thanks again,


  8. 8 Posted by drew on 03 Jul, 2021 02:13 AM

    drew's Avatar

    The image node fills such a huge hole. Thank you so much John, I look forward to digging into the new nodes this weekend.


  9. 9 Posted by Ramanraj K on 04 Jul, 2021 10:32 AM

    Ramanraj K's Avatar

    Amazing! So many nodes that fit into ui requirements. The nodes for colors, shutters and gears are so awesome. I could not get wind_letters display text though. Thanks for all the work done there.
    Ramanraj K

  10. Support Staff 10 Posted by john on 04 Jul, 2021 09:26 PM

    john's Avatar


    The wind_letters node will be unresponsive until you hook a path into its path node. The only path that really works is a spiral, so you should get a spiral node (from the library) and try that. See the demo_wind node (near the bottom of that big tree of nodes that feed into the poster) for a working example.

    I really should just build a default spiral node into the wind_letters node so this won't happen. I'll put that on my list of improvements for the next release.

    Please do play with as many of the other nodes as you can. If you find any problems or have any other feedback, please let me know.

    Have fun!


  11. 11 Posted by drew on 11 Jul, 2021 03:07 AM

    drew's Avatar

    Hi John!

    I was interested in:
    1) Dynamically defining points located on any type of geometry, e.g., a line or paths from an imported SVG file
    2) Translating shapes (e.g., ellipses) to those points along the path
    3) Getting the pixel color values from the underlying image based the points along the path
    4) Using the color values from Step 3 to fill the shapes from Step 2

    For this test, I had to modify lines 98 & 99 of (included in the attached zip) forcing x & y to integers.

  12. Support Staff 12 Posted by john on 11 Jul, 2021 05:10 AM

    john's Avatar


    This is very interesting! Clearly you have studied my library and made good use of it. Your general goal of sampling SVG paths and coloring them using an image is a simple but powerful idea that could have endless beautiful and surprising results.

    A few quick comments:

    • Your technique of placing green comment nodes with step numbers is kind of brilliant; I've never seen anyone do that before. It would be great for tutorials. I just might steal this idea for some future project!

    • If you are going to use your network like a tutorial (even if you are the sole audience) you should make it as tidy as possible. Like most people I notice you tend to cram your nodes tightly together, sometimes obscuring connection links. This makes the overall network harder to read and modify. One of these days I'm going to write a guide to arranging nodes for maximum beauty and readability. It's an art a bit like flower arrangement.

    • Three of your nodes in step 4 (image1, img_reg..ft1, translate4) are doppelgängers. Dopplegangers are duplicate nodes sitting directly on top of original nodes. To see this, carefully drag each one of these nodes to one side. It's all too easy to make them by accident when a copy-drag goes awry, and once formed they are invisible! They may not cause an error at first, but later, when you modify them, some connections will attach to the originals while others attach to the doppelgängers. The first time this happened to me I almost pulled out my hair trying to figure out what was going on. Since then, I am constantly on the watch for them.

    • It was clever of you to modify, but not necessary. Instead you could just snap the sampled points to integer coordinates before feeding them to the imp_color_map node. You can do this by extracting the x,y values, rounding them, and recombining them with make_point.

    • In step 4 you made a subnetwork (imp_regPt_topLeft) to realign the image. Because the subnetwork uses photo_bounds (which provides the bounds of the original image) to find the center of the raster matrix created by my image node (which, depending on settings, may have a slightly different width and height), your alignment is slightly off. And there's an easier way to do this: just use an align node set to Left and Top - no subnetwork and translate node needed!

    • When sampling along SVG curves you may notice that the total_points node (actually a shape_on_path node) does not space your ellipses evenly; instead they bunch up around the curves. This is standard Nodebox behavior when resampling, but may not be the effect you want in this case. As an alternative you might try my even_sample node. It will provide evenly distributed points along each curve; you can then feed those into the position port of your ellipse node (or whatever stamp you are using) to place the stamps.

    As I said, I am genuinely impressed by this network. If you continue to play with it, I suggest you start a new thread in the Show Your Work section so that other people can find it more easily and comment on it. I'm curious to see what kind of art you could produce with this technique.

    Thanks again for sharing!


  13. 13 Posted by drew on 11 Jul, 2021 04:36 PM

    drew's Avatar

    Thanks John for the extremely helpful tips and your insight! I created a new post in the Show Your Work section, which can be found here:

    I have a follow-up question about getPixel's big brother, a Moore Neighborhood. Do you know of an existing method within Java that returns the direction of the darkest pixel from the 8 pixels surrounding a specific pixel? I'm sure you're familiar with a Moore Neighborhood, but for those who aren't, here's a good description:


  14. Support Staff 14 Posted by john on 12 Jul, 2021 09:17 PM

    john's Avatar

    Hi Drew,

    I'm not really a Java coder (even though that's what NodeBox is ultimately built on), so don't know if such a function exists. But it would be pretty easy to make one - in NodeBox or Java.

    Using it to do contour tracing, though, would not work in Nodebox alone, though, because the algorithm is recursive and Nodebox doesn't do recursion. There are some workarounds, but they have limitations.


Reply to this discussion

Internal reply

Formatting help / Preview (switch to plain text) No formatting (switch to Markdown)

Attaching KB article:


Already uploaded files

  • Node_Library_2-3_Screenshot.png 819 KB
  • Node_Library_2-3_Poster.pdf 3.66 MB
  • 1.21 MB

Attached Files

You can attach files up to 10MB

If you don't have an account yet, we need to confirm you're human and not a machine trying to post spam.

Keyboard shortcuts


? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac

Recent Discussions

30 Nov, 2021 04:00 AM
27 Oct, 2021 08:07 PM
24 Oct, 2021 10:06 PM
21 Oct, 2021 07:54 PM
22 Sep, 2021 02:21 PM


21 Sep, 2021 06:32 AM
11 Sep, 2021 03:55 AM
10 Sep, 2021 04:25 AM
06 Sep, 2021 07:06 PM
20 Aug, 2021 03:27 PM
18 Aug, 2021 11:31 AM