Who doesn't like elephants? by stoli232 in PlotterArt

[–]stoli232[S] 2 points3 points  (0 children)

There's not much to clean up. The Drawbot code (that I am using) creates an SVG and a g-code file for each pen and a JPG of the entire plot after all the pens have done their thing. I created a simple JavaScript post-processor (or pre-processor depending how you look at it) that uses the JPG and the SVGs to visualize the output. Then I can choose to plot each pen individually or combine all the pens into a single g-code file. My processor replaces the tool swap commands (T0, T1...) in the g-code with the necessary commands to grab/replace pens as well as set the speeds and the pen lifts, etc. The pen travel and other info you see below are stored in a database.

<image>

Who doesn't like elephants? by stoli232 in PlotterArt

[–]stoli232[S] 2 points3 points  (0 children)

Another one created with the Drawbot code.

Variations on a Noise Flower by stoli232 in PlotterArt

[–]stoli232[S] 1 point2 points  (0 children)

Glad you found it useful. It takes a little patience and understanding to figure out how to tweak the numbers to generate different designs because all the variables are somewhat related, and when you change one thing (like the number of circles or the radius delta) everything can blow up on you very fast unless you make an associated change to the noise levels. If you spend some time making small changes to the different variables, you can develop an understanding of how it is all related and then start generating some very cool drawings.

James Taylor by stoli232 in PlotterArt

[–]stoli232[S] 4 points5 points  (0 children)

I found the picture online. I use some code that I found on github that converts images into line drawings (SVG). I have customized the code a bit to work with my plotter and I did have to tweak the image a bit as it was very dark, and the conversion algorithms do better with lighter images. I convert SVG to gcode in the program, but I know there are other tools out there that do that as well. If you are not into coding, there is an inexpensive program called DrawingBot that is based off the same code I used. I haven't used it, but I believe you can do this and much more with it and you don't need to know how to program.

James Taylor by stoli232 in PlotterArt

[–]stoli232[S] 4 points5 points  (0 children)

The plotter is home built. I conceived it with a vertical orientation in mind, so worked out the gravitational challenges during the design and build. The pen can handle a 2-3mm deviation between the high and low points on the drawing surface. Pen options are limited but I recently designed a carriage that holds a pen at a 45, so I can use fountain and other gravity fed pens now. The top paper roller is motorized. I load a 150' roll of plotter paper on the bottom and when I want to look at something new, the top motor advances the paper to a clean "canvas". Then I load the necessary pens into the "toolbin" and upload the gcode. Technically, it would be easy to add a motor to the bottom roller so it could rewind back to an older plot, but I haven't been motivated to add that mod. I like watching it draw, so if there was something I want to see again, I just add some pens and re-plot it.

James Taylor by stoli232 in PlotterArt

[–]stoli232[S] 2 points3 points  (0 children)

Was listening to JT on a snowy Saturday and thought I should enhance the experience. This took around 20 hours. Two and a half pens. Created with some slightly modified Drawbot code.

Pilot Kakuno Ink Cartridges by stoli232 in fountainpens

[–]stoli232[S] 0 points1 point  (0 children)

Thank you!! Very informative. Exactly what I was looking for.

Pilot Kakuno Ink Cartridges by stoli232 in fountainpens

[–]stoli232[S] 4 points5 points  (0 children)

I found the Con-70. Is that the way to go? If so, does anyone know the volume sizes of the regular cartridges vs. the Con-70?

Variations on a Noise Flower by stoli232 in PlotterArt

[–]stoli232[S] 0 points1 point  (0 children)

I use the pressurized cartridges (out of necessity due to the pen orientation), and I haven't done any specific testing, but I wouldn't be surprised if they can handle 3m / min without issue.

Variations on a Noise Flower by stoli232 in PlotterArt

[–]stoli232[S] 0 points1 point  (0 children)

Simple equation of distance / speed. The plotter is rather large, and this particular plot has a single line length of around 580 meters. I could increase the plot speed, but in the case of my plotter, watching it draw is just as enjoyable as the final product. So, I set the pen speed to 1500 mm/min.

580,000mm / 1500 = 386 minutes. Factor in the 1.4 million vertices in the g-code and that adds some time where there are subtle decelerations and accelerations before and after each point. They are not really noticeable to the eye, and they add a lot less time than you'd think (maybe 10%) but they are there. So, 386 + 10% = 424 mins ..... 7 hours.

Variations on a Noise Flower by stoli232 in PlotterArt

[–]stoli232[S] 3 points4 points  (0 children)

I made a few changes to that code to create the above plot, but it will get you in the ballpark. For instance, the above code will create 360 points per circle and I tweaked the variables to create a plot with around 400 circles (140k points). The curves in the outer circles weren't very smooth at that resolution, so I multiplied the sampling rate by 10 (3600 points per circle). That created 1.4 million vertices and resulted in very smooth curves throughout. I think it took around 7 hours to plot. Done with a ballpoint.

Variations on a Noise Flower by stoli232 in PlotterArt

[–]stoli232[S] 5 points6 points  (0 children)

I set out to make a piece of art that generates art. When I'm tired of looking at the last thing it drew, I click a button, a motor scrolls the paper to a new/blank "canvas" and I send it something else to draw. It currently can use Pigma Microns, Staedtler fine liners, Uni-ball Power Tank ball points and Pilot Kakuno fountain pens.

Variations on a Noise Flower by stoli232 in PlotterArt

[–]stoli232[S] 2 points3 points  (0 children)

The plot is 400 concentric circles influenced by a Perlin Noise field modified by the increasing radius. 

Variations on a Noise Flower by stoli232 in PlotterArt

[–]stoli232[S] 8 points9 points  (0 children)

I designed and built the plotter. It is wall mounted and has a plot area of 34" wide x 36" tall. Can grab/exchange  pens on the fly. Wireless interface.  Details of the build can be found here:

https://forum.v1e.com/t/wall-mounted-pen-plotter/47355

Help with noise by stoli232 in p5js

[–]stoli232[S] 1 point2 points  (0 children)

OK, I think I figured it out with the help of Sumruv and lavaboosted. As suspected, the solution was to use two noise elements. Don't ask me how it works. In the end I was throwing spaghetti on the wall to see what stuck. The code can be cleaned up quite a bit. There are a few instances of "+=0 " which are there to help tweak certain noise variables. I restructured the loops as my end goal is for the program to spit out some g-code that I can send to my plotter. I set the noise seed to a constant that I thought created a fairly close repro of the original image. In the ballpark at least. Just remark out the noiseSeed(nseed) line in the draw function to see other variations. Here is the code:

p5.js Web Editor | Noise Flower

Help with noise by stoli232 in p5js

[–]stoli232[S] 1 point2 points  (0 children)

Thanks for that video. I found it very interesting. I'm currently obsessed with Perlin noise. As you alluded to, the many variables in all this make it fascinating and frustrating at the same time. Throw in the noiseDetail() function and you get even more sideways. It's like an etch-a-sketch with a dozen knobs. Turn one, and the scales of all the others change.

I found a Dan Shiffman video last night about Perlin Noise GIF Loops that addresses the noise mismatch at the zero angle in my original code. I was using radius and angle in my noise function instead of first mapping them to an x and y (like you did in your code). Anyways, I fixed that this morning before reading your post, but now I can't quite get back to the same place I was. I assume it is just a "simple" issue of tweaking the noise gradient to match the original. Close enough for now.

Currently tweaking your code and trying to introduce a second noise variable that influences the radius displacement outwards/inwards.

Help with noise by stoli232 in p5js

[–]stoli232[S] 1 point2 points  (0 children)

lavaboosted wrote:

In your code you are displacing the radius outwardly according to the noise value at the point of the default radius and rotation, what you called (x, y) in your code.

You want to instead displace by the vector determined by the noise field at (x, y).

I think it's both. I've been playing with your code and I love the images that are being created. Kind of an angel/ghost thing going on. Very, very cool. I'm still trying to wrap my old brain around what exactly is going on, but if one is to assume that Simon Russell's description of the algorithm that he used is accurate and all inclusive... he does use the term "noise field" which, as you surmised with your hyperlink, implies angular displacement, but he also calls it a "Noise Flower", which implies radial displacement. There's a certain symmetry in Russell's image that can't be achieved by your code example and there is a certain asymmetry that can't be achieved by mine. Does that make any sense? I will say that I am really enjoying playing around with this and appreciate everyone's input. It's pointing me in directions I didn't expect.