Single line continuous Art

@Mahdiyar could you please have a look?
Thanks much!

Take an evaluation version of Rhino 7, it will works for 90 days if I am right!

Very interesting approach, adjusting tension in a grid, interested to see the script, when you have time. Great work.

Here’s the script for the brightness based tension one (16.9 KB)

It takes a list of lines, which don’t have to form a square grid. It might be interesting to try starting from radial or spiralling arrangements too.

These type of effects really depend a lot on having a nicely lit source image with good contrast.

The source image used above is this portrait of Giacometti by Irving Penn from here.


Is this error because I am not on the latest service release candidate? I have plankton but not kplankton…


1 Like

You might need to change the referenced assembly location (it needs to be the same one being loaded by the version of Rhino you are running).

1 Like

I understand what you mean but I don’t know how to do it.

Excellent work! Thank you

Right click on C# component > Manage Assemblies… > Add > Search KangarooSolver.dll , I have it in C:\Program Files\Rhino 6\Plug-ins\Grasshopper\Components and its version is 2.5.2.


Thanks! When I opened the gh file it asked me to point to where the KangarooSolver.Dll was. I thought this should sort out the C# too?

It should do. Depending on which Rhino you are running, the directory will usually be one of-

C:\Program Files\Rhino 6\Plug-ins\Grasshopper\Components

C:\Program Files\Rhino WIP\Plug-ins\Grasshopper\Components
(if you first installed v7 when it was a WIP)

C:\Program Files\Rhino 7\Plug-ins\Grasshopper\Components

C:\Program Files\Rhino 8 WIP\Plug-ins\Grasshopper\Components

If you have multiple versions of Rhino installed, you need to reference the dll from the appropriate one.

Ah, so I have probably referenced the R5 one instead of the R7 one!

I can’t do anything from right clicking and managing assemblies…

Any ideas how to change the kangaroo solver from the R5 one to the R7 one?

Ah… deleted the old one and added a new one! :smiley:

1 Like

Yes, I agree the interface here is a little confusing. The only way to delete a reference is by pressing the delete key on the keyboard - there’s no button or menu item to do it with the mouse.

1 Like

Wonderful stuff, Daniel!

I’m always looking for ways to capture images with a single continuous path. This interest stems from my work with sand-plotters which have no pen-up facility. A long sought challenge has been capturing facial images on sand. Here is an attempt from many years ago, where I created a brightness height-map in Blender from an image of my daughter’s face, and then used the resulting Z values to instead perturb respective vertices in the Y direction. Finally, I converted the 2D vertex array to a continuous boustrophedon path. Starting image:

Resulting plot (2.5m diameter field):

Though the likeness is discernable, it is very lighting-specific – it only “works” when lighting comes from the top of the face (as it was when the photo was taken). Here, the predominant source comes in through the nearby windows.

My tweak of your definition yielded: (23.9 KB)

An early try on sand (685mm field, 6mm ball, circumferential LED lighting):

Despite the center artifact (due to homing registration error), I see potential. Probably the greatest limitation (of many) is my “pen” and the “lines” it leaves in its wake – the ball creates a darker furrow with lighter dunes on either side.

I find your suggestion of starting from radial or spiraling arrangements particularly intriguing, since my sand plotters utilize a polar mechanism and therefore cover a circular canvas. I’d be very interested in attempting this if you or others can point the way.


To use a spiral, simply generate one, and then use it in place of the horizontal lines

And space the vertices phyllotactically?

That would work, or intersect radial lines with a spiral

It’s so cool having your own sandpit ball plotter!

I’ve tried several of these “Image-to-lines/dots/circles/string etc” things and it’s frustrating because first you need the right image with perfect contrast, then spend a while turning that into something that looks good on screen and then even longer discovering that in real life it looks good from certain angles and with the right lighting!

You know the right combination is out there though and at least you can erase the sandpit and start again!

Nice work!

Hi @Bruce_Shapiro

The sand plotter is really neat. (I’d seen some videos of this online before but hadn’t realised until now that you were the one behind it!)
Here’s a go with a spiral curve- (23.0 KB)
(photo by Andy Gotts)

It puts evenly spaced points along a spiral then triangulates them and uses all the edges of the mesh as input to the ImageTension goals.

If you’re adjusting the numbers, you need to consider the ratio between the number of turns of the spiral and the number of divisions along its length - some could lead to artefacts. It’s easiest to adjust this by making the Delaunay component visible and disabling the downstream part while finding settings that give a nice triangulation.

I wonder though - for this sand plotting, perhaps a slightly different approach is needed.
With a pen plotter, closer spacing of curves clearly results in darker regions, but with the sand it looks like more closely spaced furrows don’t necessarily lead to darker or lighter shadows.

One idea could be to find the gradient of the image as a vector field, then try and align curves perpendicular to this (possibly combined with the same spacing idea as above).


In addition to Dan Piker’s outstanding ideas, my $0.02:
two issues that may need to be taken into account, dealing with a ‘sand’ plotter:

  1. Unlike a router or machining technique, where the material is actually removed, here we have constant volume, material is not removed, but simply displaced, probably not perpendicular to the tool path, but at am overall 45 degree angle. So if there are two lines to be made close together, where does the material go?
  2. Also unlike removal techniques, sand is subject to ‘Angle of Repose’, so any furrow or sand displacement that leads to a wall angle of over, say, 37 degrees, will collapse, and lead to the visual effect of ‘smearing’.
    So perhaps adjusting the tool paths for these two factors will lead to a ‘cleaner’ looking image
    Easiest approach might be to vary the Z axis, you could simply tweak that to account for volume displacement and repose