I was wondering if it was possible to create randomly generated calligraphy curves using geometry nodes. (See image below)


I was looking into swirl pattern equations but they mostly came back with spirals (doing it this way may be over complicating things) like a Lemniscate

I wanted to create a bunch of them randomly to see what I get. I know we can change the linestyle thickness using freestyle but was wondering if it can be done in geometry nodes.


  1. I'm contemplating having some preset curves that are in collections. (3 collections of 4 different curves should give a decent random set)
  2. Selecting some curves then joining the curves together randomly from the collections (end point to end point) (still thinking on the best way to do this though).

Something like this link just not as complex Blender 3.0 - Geometry Nodes - Replace an instance object according to conditions (if else) also I'm looking at this Staggered palm frond leaves with Geometry Nodes?



  • 1
    $\begingroup$ Hmmm .. looks like an AI task, to me.. if there are any axes in the n-space of variations you can travel up and down, they're not very obvious...at least.. to me .. :) $\endgroup$
    – Robin Betts
    Commented Jan 23, 2023 at 16:52
  • 1
    $\begingroup$ If you just mean tapering the line thickness at both ends, that's easy: i.imgur.com/nefDHLN.png Creating random but tastefully-placed splines might be hard though, not sure about that part. $\endgroup$
    – Kuboå
    Commented Jan 23, 2023 at 17:35
  • $\begingroup$ If you would have split the question in two parts (since this site prefers one topic per question), one of them could have been answered easily - the tapering of the thickness, as Kuboå already showed. For the second question, how to randomly generate those curves... well, I'm with Robin on that one, it's more like an AI task. Because randomly placing curve points doesn't give pleasing results, they have to follow some "rules" to look nice. Picking the rules randomly could work, but it would be hard to define them to get what you want. Even the thickness is challenging since it varies overall. $\endgroup$ Commented Jan 24, 2023 at 8:09
  • 2
    $\begingroup$ @GordonBrinkmann True, now that I think about it, it would be better as two questions. I did upvote Kuboå comment. I'm thinking of having some preset curves that are in collections and joining the curves together randomly from end point to end point. (still thinking on it though) something like this just not as complex blender.stackexchange.com/questions/253489/… also I'm looking at this blender.stackexchange.com/questions/273599/… $\endgroup$
    – Rick T
    Commented Jan 24, 2023 at 9:13
  • $\begingroup$ not sure... is it the kind of result you're looking for? i.sstatic.net/BK7LU.png $\endgroup$
    – lemon
    Commented Jan 24, 2023 at 11:52

1 Answer 1


A proposal... but there are many possible variations and/or factors that could be taken into account.

enter image description here

The principle is to generate a mesh line, change the position of its vertices using a texture (a magic texture looks fine in my opinion), and convert it to a spline.

enter image description here

The stroke variations is done using a sinus (plus some calculations, but matter of taste...) from points indices (or from their length), or using a float curve (the blend file contains both).

enter image description here

Once all that done, set the resolution of the curve (a low resolution can give interesting results), give it a profile, and, eventually duplicate and shift the figure using it as an instance.

enter image description here

  • 1
    $\begingroup$ welcome back, lemon $\endgroup$ Commented Jan 24, 2023 at 18:40
  • $\begingroup$ hello @AllenSimpson, thanks for this comment! $\endgroup$
    – lemon
    Commented Jan 24, 2023 at 19:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .