I am an artist and i am working on a research project on portraits.
I am looking to create a single line continuous art like the image attached**( image 1,2,3).**
1.I Passed a set of points through the image sampler
2. culled away the points in the bright area using the values from the image sampler
3. interpolated a curve through the points using a simple closest pt component.
4. This is what i was able to achieve. ( image 4) .
I am looking to create something like in image 1,2,3. A continuous free-flowing curve overlapping line.
Where am I going wrong? Should the curve interpolate more in areas which are dark.?
I am really not great at scriptable components. But if you guys can guide me on this.
would it work to have circle-packing your image, then generating different amount of random points inside each circle depending on its size (smaller circle = identifies a darker area = more points) ?
this way you would have different point density in your canvas
the other thought is about how to connect the points with a single line
right now, with the VisualBasic script component in use, (I guess) if you have several coincident points they will generate nothing (a length = 0 line)
but it would maybe interesting to use a different approach, in such a way the curve can go back to that very same point again and again to produce more intersections (which will mean darker area, so a more intricate pattern)
I will try to sketch this idea down in GH as soon as I’ll be back to my PC
Thanks a lot for the reply. My bad i didnot completly explore or so to say understand how you suppressed the points using the graph mapper. That said, as i write this message i have now understood it.
You guys are right ,
1.i tried to popullate the image by circle packing method, It worked great. The popullation is regular .
2. And generated different amount of random points inside each circle depending on its size (smaller circle = identifies a darker area = more points) .
For sure the image looks nice with a good ligthing to shading gradiant.
Please find the attached image below.( Iamge 1 & Image 2)
But i feel if there is more overlapping of the line path it would make it a bit more intereiguing.
I was thinking how to feed multiple identical points to your VB component to get more knots,
I thought to not duplicate them “in place” but array their duplicates vertically, just over the original ones
I don’t know if you like this, I personally really like that dense scribbling in dark areas and you can always project the final curve to XY if you want it to be planar
another thing that I tried (but I don’t know if it was a smart choice…)
after the circle packing, I didn’t like that much the idea that the next set of points (depending on circle radius => depending on dark areas) was forced to be generated just on the circumference of the circles
so I passed the circles through a mesh component (which generates 5k meshes…) and then PopulateGeometry on the meshes (using the already calculated amount of points => instead of points on the circumference, you get the very same amount of points but randomly inside the area of each circle)
I really like the logic of duplicating the points vertically and for sure it helps in creating denser and intricate notes.( May be just a thought we can move the vertically moved points further in x or y direction thus creating further intricate notes)
I took the script you modified and I just added one feature to the script i culled out the areas which are completly bright. This give really amazing effects and further control. I a few tests and the results are promising.
AS a step further to make the curves intricate, i was thinking now the VB scripts find the next closest point and then forms a line.
Instead is it possible for it to go finding the 1,2,3& 4 point abd then loop back to 2nd point and then to the 5 th point ( like the image 6 attached)
Does it make sense? will it help? VB Scripting is Greek and latin to me.;(
The idea is to create a knot or a overlapin the line as frequent as possible.
those super long curves exist because of the method used to connect all the dots, which at the moment is nearest unvisited neighbor (in the VB script): at a certain point it happens that the next unvisited closest point is very very far away, and you get those very long lines
I don’t have a clear idea how to tackle this, we are dealing with a huge amount of points, calculation time can increase very fast
theoretically it might be solvable using graph theory and some kind of triangulation to generate graph edges between points (delaunay? proximity?) but this approach might result into a real lot of time considering we will end up with around 10K points to process and around 30K vertexes
maybe also clustering the points and entirely connect only each cluster, one after each other, might be an idea (in this case I’m worried about the lack of connections between points which are “visually close” but end up belonging to different clusters, so not connected together. But anyway the “nearest unvisited neighbor” method would have the very same “long lines” downside, even if applied in smaller scale)
Well … after finding the points (easy) in theory is a classicTSP case (Traveling … blah, blah). If you use the fast iterative proximity (Point3dList etc) … then obviously “long” segments would appear (but you can cheat a bit).
In fact some client with a big dose of vanity wants an absurdy big plaza with his portrait on it (don’t ask). So I did a test C# that does a variety of graphs from an image (knitting, continuous proximity, TSP, mesh, voronoi etc etc) … but needs some tweeks here and there for decent Elapsed times (my threshold is around 200 ms … or quit he project [and reject the client]).
wow, super interesting!
also how to get those incredibly low calculation time wow
after Del-meshing the points to get the graph -> maybe culling graph-edges whose length is higher than a given value, this way the max length of each curve will be “kind-of” set (expecially if the connection is done by interpolation)
the only other option that I see as viable is to manually cull graph edges that you -visually- see would be “unpleasant” in the final composition?
That’s the easiest of things: since we are talking MeshFaces (i.e. triangles) for sending them to that German ceramic tile giant … any filter imaginable is easy/possible (angles, edge ratios, edge sizes, area, cats, dogs etc etc). That said the Del thingy is done with a Mesh as output for obvious reasons (geometry is nothing, connectivity is everything)
But the challenging option is the knitting (in some milliseconds). Currently I’m testing some revolutionary ways to deal with the candidate line success ratio big thing.
I.e. pixelize the line - so to speak - get index pairs - NOT points (that could be ultra slow/stupid) - and test them against a bool [ , ] that marks the points sampled due to the filter used (brightness, hue, saturation etc etc). Plus I could do the lines with some drone and cover them with a trasparent epoxy coat : skip the tiles and save the zillions.
In the mean time:
BTW : I hate Voronoi things like my sins … but in this occasion … well …