Brush "live" randomization / variation



  • In my opinion, the main vector apps' weakness is their brush strokes.
    Since they are stretched, they all look the same - especially when they're the same length. That does't look natural:

    0_1670273861878_a42ca336-6d6e-4afa-a67b-77d678e6468f-image.png

    There are "Tremor" and "Wiggle" parameters in Inkscape's "Calligraphic or brush strokes" which provides more natural stroke feel:

    0_1670272797960_obraz_2022-12-05_213957957.png

    Is it possible in VS to draw lines, which are randomized "live"?
    This way they'll look more like "painter's brush" and every stroke would be different.



  • @Harry Interesting. Can you explain a bit what the 'Tremor' and 'Wiggle' options do exactly?

    In any case, disabling the symmetry of the stroke profile and making it as irregular as you can results in similar brush strokes:

    0_1670276500705_Screenshot 2022-12-05 at 23.38.58.png

    (The first stroke i. the screenshot above has a default profile)



  • While I find the idea interesting. Tremor and Wiggle change the parameters of a brush
    a bit but basically the brush stroke itself remains the same.

    So maybe we could go one step further and create a way for a Stroke to randomly switch
    between different (self-defined) brushes.

    As an example, i could only name the vector program "Alchemy" with its pull brushes.
    These self-created brushes are randomly taken from a PDF file, which is also self-created.



  • @Subpath Are the brushes in Alchemy completely random brush contours?

    This could be implemented in a similar way to a wavetable synth that reads slightly or
    very different sound waveforms from a table with waveforms — PPG/Waldorf invented
    the concept and today there are many other companies that offer similar
    implementations, all in the quest for organic, evolving sounds.

    Here's a good explanation about the concept: https://www.youtube.com/watch?v=8DjnDVWKaEs


  • administrators

    @Harry This is already doable with some work, by creating a new brush shape.

    But it requires more steps, and a new brush content.

    I added this to the backlog.

    In the attached file adjust the random "Seed" parameter of the shape effect on the top-right object (Effects->Edit Shape Effects)

    0_1670309365492_randombrush1.vstyler



  • @b77

    Find your Wavetable analogy (I know wavetables from software synthesizers)
    also an interesting idea.

    ... Are the brushes in Alchemy completely random brush contours? ...

    Alchemy uses random shapes, but you can create them yourself
    and save them in a PDF File and put them in a special Alchemy Folder.

    And when you draw with the pull brush, Alchemy takes these shapes
    randomly from the PDF file and puts them on the canvas.

    It has also some more random generators

    The results can be saved as .SVG or .PDF for further editing in VS

    For any one whos is interested, here the Download Link
    https://al.chemy.org/download/ ( PC/Linux )

    ( for (Mac) user - the Program will not work on new Macs
    i guess because of Operating system )
    Mac user, you may have luck with a older Operation system
    take look at the download description.

    ( Win 10 - works here despite the Program is old from 2010.)

    0_1670318906675_Alchemy Folder.png

    0_1670318091878_Alchemy Example1.png

    0_1670318099057_Alchemy Example2.png



  • @VectorStyler

    Looks good.
    Can you tell me what shape effect you used for this ?


  • administrators

    @Subpath The "Outlines -> Detail" shape effect, with "Randomized" option enabled.

    If you select the original brush shape on the top left of the artboard, you can see the effect options in the Effects->Edit Shape Effects



  • @VectorStyler , thank you



  • @b77 said in Brush "live" randomization / variation:

    @Harry Interesting. Can you explain a bit what the 'Tremor' and 'Wiggle' options do exactly?

    According to Inkscape's tutorial Tremor produces anything from slight unevenness to blotches and splotches. Wiggle is the resistance of the paper to the movement of the pen.

    So yes, as @Subpath mentioned this is not the best example here.

    @VectorStyler said in Brush "live" randomization / variation:

    @Harry This is already doable with some work, by creating a new brush shape.

    But it requires more steps, and a new brush content.

    I added this to the backlog.

    In the attached file adjust the random "Seed" parameter of the shape effect on the top-right object (Effects->Edit Shape Effects)

    0_1670309365492_randombrush1.vstyler

    Yes @VectorStyler , but it's not what I meant. i played with the effects already and I think they're great, but they're still some kind of "post production". What I meant is to have brush randomization applied live.

    My idea is similar to @Subpath and @b77 wave forms concept:

    @Subpath said in Brush "live" randomization / variation:

    So maybe we could go one step further and create a way for a Stroke to randomly switch
    between different (self-defined) brushes.

    My concept is as follows:

    Since we are painters or draftsmen, our tools are stylus and mouse. Let's take 2 different brushes from our presets and styles - Brush A for softest stylus pressure (or minimum mouse velocity) and brush B for hardest stylus pressure (or maximum mouse velocity):

    0_1670319697324_4e950a49-91b7-4f5b-819e-14ff37dc2167-image.png

    Everything in between those 2 brushes is a result of "modulator" which changes brush appearance live. "Modulator" should be stylus pressure or mouse velocity dependent.

    Modulator can be for example:

    • blend tool
    • shape effects
    • interpolation
    • randomization
    • variation
    • @VectorStyler 's imagination, etc.

    General purpose should be that effects are aplied live and every stroke is different, even Brush A and Brush B should have little "initial" blending, randomization , roughness etc. to make them different.

    Is it possible? Any other ideas?


  • administrators

    @Harry said in Brush "live" randomization / variation:

    Everything in between those 2 brushes is a result of "modulator" which changes brush appearance live

    This does not exist in the current version of VS.

    Technically, it could be possible to implement, but some things must be clarified:

    1. From what I see, the "modulation" would vary along the path, based on pressure or some other input.
      This cannot be done with current shape effects.

    2. Also: we have to keep in mind that these brushes are vectors, so would this mean that in case A (soft pressure), the vectors would break into some form of random smaller shapes?


  • administrators

    @Harry I think this "modulation" along the brush path of some distortion parameter is an interesting idea.
    I added this to the backlog. Some details need to be worked out (ideas are welcome), but I think this could be implemented before version 2 (if not version 1.2).



  • @VectorStyler said in Brush "live" randomization / variation:

    1. Also: we have to keep in mind that these brushes are vectors, so would this mean that in case A (soft pressure), the vectors would break into some form of random smaller shapes?

    Yes, that's the point - to simulate natural brush stroke:

    • soft pressure - low opacity, smaller "particles"
    • hard pressure - stroke is more opaque, more solid, more distorted etc.:

    Examples from Rebelle 5 (one of the best natural stoke simulator in pixel world):

    0_1670326910772_obraz_2022-12-06_124150768.png



  • @VectorStyler said in Brush "live" randomization / variation:

    @Harry I think this "modulation" along the brush path of some distortion parameter is an interesting idea.
    I added this to the backlog. Some details need to be worked out (ideas are welcome), but I think this could be implemented before version 2 (if not version 1.2).

    Glad to read that!


  • administrators

    @Harry said in Brush "live" randomization / variation:

    Examples from Rebelle 5 (one of the best natural stoke simulator in pixel world):

    This will be hard to do with vectors only.



  • @VectorStyler said in Brush "live" randomization / variation:

    @Harry said in Brush "live" randomization / variation:

    Examples from Rebelle 5 (one of the best natural stoke simulator in pixel world):

    This will be hard to do with vectors only.

    I know, but results may be surprisingly good!

    Krita have some more options for modifiers/modulators i.e. stylus rotation and tilting.
    They call it sensors. Here is some more info:

    https://docs.krita.org/en/reference_manual/brushes/brush_settings/tablet_sensors.html

    Maybe for future development?



  • @VectorStyler said in Brush "live" randomization / variation:

    This will be hard to do with vectors only.

    I don't think Harry meant that VS should strive to imitate natural media brushes
    accurately like Rebelle does — it's just the random, organic part of the natural
    brushes that are to be imitated in vectors.

    As I suggested, picking random brush contours from a "contour table" (similar to
    wavetables in synths) is one way to achieve this. It's basically stringing them
    together (with the first and last connecting nodes free to move vertically) and
    bending them along the brush spine, then maybe overlapping three brushes
    with different opacities would get you respectably close to the organic quality
    of bitmap brushes.



  • @Subpath I downloaded Alchemy but it's so old that it doesn't work on my Mac.



  • Another way would be to have just one brush contour but don't stretch it — instead repeat it but randomize the nodes.
    Maybe this approach would be faster for "live" drawing.



  • @b77 said in Brush "live" randomization / variation:

    @Subpath I downloaded Alchemy but it's so old that it doesn't work on my Mac.

    that, sad to hear, because its a nice little Tool
    as i wrote works here on Win 10 without any Problem
    despite that it is from 2010

    i will create a video to show some Tools of it
    but this will take yet some time