WaterColorBot and InkScape - Control Questions and Feature Enhancement Requests
  • Hi Gang,

    First off, I have to voice my strong support for what a truly incredible gadget the WaterColorBot is!  Amazing work and credit to you, Sylvia, and the great folks at Evil Mad Scientist for bringing such a magnificent device to life!  "It's ALIVE!  Muahahahahahaha!"  I truly cannot rave enough about the success I've had with it.  I've both used it to paint (duh) and with the StippleGene software as well to have some fun with both dot-art and contiguous-line drawings.  A few of the featured works are shown in the next post (while the "Japanese Cherry Blossom" piece is easily found and plotted, I modified it by pulling out the signature and replacing it with "Bonsai Beauty" in Japanese calligraphy).

    Alright, that said, on to the original intent of my post.  For reference, I have shown an "work-in-progress" below that shows what I'm trying to pull off as a reference (if it doesn't load, the image is available at: http://www.yjprod.com/image/BOTS/OWL01.jpg) This was originally a vector clipart, but I had to basically re-draw it (tracing) in InkScape to get what I was looking for.  I noticed that InkScape and WaterColorBot are smart enough to work by layer and that it automatically works from lightest hue to darkest.  NICE!

    While I've *tried* RoboPaint (and kudos to you for developing your own platform there!), I am far more used to InkScape, and find it significantly more powerful.  In short, it's the tool for me.


    1)  MULTIPLE COLOR WASHES:  When drafting out a drawing in InkScape, I was wondering how one establishes that after laying down a color or two, we want to immediately do a "Color Wash" just for that color rather than proceeding to the next color.  While the "Color Wash" layer automatically shows up as first in the "InkScape Layers" window it is always done last by default.  What's the trick to say, laying down brown in the image below, then color washing (smearing) it all around the target fill area before putting in say a black outline?  It does this properly in the Japanese Cherry Blossoms painting and I noticed there is more than one "Color Wash" layer on that one, but not sure how that was done (InkScape doesn't seem to like naming two layers the same).

    2)  PAUSE:  Is it possible to build into the painting process (automatically) a "pause" for a given amount of time and dunk the brush in the water while waiting?  I'm thinking there are times when letting a layer dry before adding another would be highly valuable.  If it's a matter of manually painting by layer for now, so be it, but would be a VERY nice feature to consider.

    3)  FORCE PAINT REFRESH:  How does one force it to go back for paint at a specific point rather than getting through half a line and trying to resume?

    4)  LEAD-IN/TAIL-OFF:  Would be nice if you had an optional "Lead-In" and "Tail Off" variable that would have the brush continue along a given vector before lifting off or setting down.

    ENHANCEMENT/OPTION REQUESTS:  I have to note that I am *SUPER HAPPY* with the product "as is" and it doesn't really *need* things like this, but when highly motivated it's always nice to test the walls of,  "the box", if you get my drift.  (I know these are probably logical impossibilities, but hey, a guy's gotta ask!)

    1)  PAUSE BY LAYER:  As mentioned in number two above, it would be *very* nice to have an automated "keep brush wet (possibly by dipping occasionally while waiting?  Or just touch it to the water?  Dunno.), pause for a specific number of minutes/seconds" option when working from within InkScape.  Maybe a "Pause" layer of some sort?

    2)  BLEND:  Dip multiple paints to come up with an alternate color (such as yellow and orange to get a yellow-ochre, or green and yellow for chartreuse, violet and red for cranberry, etc.).  Just a thought.

    3)  WATER WASH DISH SELECT BY LAYER:  The option to choose which dish it goes to for the water wash would be nice.  I could see wanting the "cleanest" water for the lighter colors, and the first dish for darker hues.

    4)  OPTIONAL LARGE SHARPIE ADAPTER/ARM:  When stippiling with a fine-point Sharpie (something I had to actually modify the current arm with a rat-tail file to accomplish) I found that it was drawing "circles" rather than dots because the drawing tip was just too small.  I had to go fill them in after the fact with a standard Sharpie.  Was wondering if it would be possible to get an arm that has a larger adapter to handle a bigger marker or similar (would the EggBot arm that does this work?).  I could just be doing this totally wrong too, so please feel free to thwack me if so.

    5)  PRE-SAVEABLE MODES:  To create an entire configuration file - say for stippling vs. painting, acrylic vs. watercolors, etc.  Just thinking outside the box.

    6)  DOUBLE-WIDE-COLORS:  I've seen 16-pack watercolors that are just a *hair* bigger than the current 8-color Crayola packs for which the unit is designed.  Some programming and either an adapter or custom tray or replacement MDF board?

    This product is AMAZING and SO MUCH FUN!  I cannot recommend this enough for people into STEM for whatever reason, be it educational/schools, hobbyist, fun, art, or similar.

    Keep Dreaming,



  • Below are the other two images I mentioned above.


  • First, *thank you* for your kind words, comments, and suggestions.  Second-- neat drawings and paintings. Love the Dorothy!

    On the questions:
    1. Multiple color washes.  You can have as many layers in an Inkscape document as you like, and you can rearrange the layers into any order that you like. Use Inkscape's "Layers" window to add, remove, and re-order layers. You can also use the options in the Layers menu to do those and additional operations, such as "duplicate current layer" -- one of my favorites.  

    Please read our documentation about how to name layers; it is the leading integer that controls how the layer behaves, and you can give the layers arbitrary names, following the integer: 

    2. Pause.  I don't know of any obvious way to do this with the existing code base (other than manual layer changes). I don't recall anyone asking about this before. You may be able to add a small delay by adding extra color changes, or forcing washing/re-inking cycles by drawing dots of (hopefully clear) water in unused places.

    3. Force Paint Refresh. There is not currently a "good" way to do this. Paint refresh is done by distance painted only. One thing that some people have done is to set the refresh distance to be much longer (or off, entirely) and then to put each path on a separate layer. There are better ways that we can think of.

    We've been trying to find a good framework for things like this for some time.  I've been keeping notes on it here, and you may want to participate in that discussion: https://github.com/evil-mad/wcb-ink/issues/24   

    If you can help contribute to *clear* blueprints about how this kind of thing might be done, it might help to ease things along.

    4. Lead-in/tail-off. Yes... I'd really love this one, but it's not currently supported. Our code isn't well structured for this at the moment, so hasn't been straightforward. We do have an idea of what changes are needed, and so may be able to come back to it.


    1. Pause by layer. Should be possible. I've added it to the notes referenced above, on github: https://github.com/evil-mad/wcb-ink/issues/24

    2. Blend. Paint mixing with watercolors is most readily done *on the paper*, and we've had great luck with painting down some water first, followed by one color, then another. A manual-dipping routine might be able to do what you're asking, but more complex blending is problematic, especially from a UI perspective.

    3. Water wash dish select by layer.  I can see what you're suggesting, and it might be possible with some of those "manual layer" type commands.  In practice, we've had excellent luck mixing bright and dark colors, so long as we actually remember to do the full washing between layers, and change out the water manually if it gets too dirty. It might be more useful to be able to select which dish is used for re-wetting the brush, though.

    4. Optional large sharpie adapter/arm. Making an adapter that fits both skinny brushes (like the Crayola) and fat markers like the "Fine" point Sharpie leads to poor performance at both extremes. We have made extra and custom brush holders for people who have wanted to purchase them. But... The current carriage design does not make it very easy to swap out the holder (a separate problem that we *are* actively working on), which is part of the reason that we haven't made them generally available. 

    For the short term, you may be able to find some fatter markers with skinny bodies. Alternately, you can modify the drawing to fill in the centers a bit. One way would be to duplicate everything and use Inkscape's "Inset Path" command to make all the circles smaller. Another way would be to edit the StippleGen code to insert a second circle if the outer circle is above a certain size or (as I think we have done in the past) to draw small spirals instead of circles-- they resize better.

    5. Pre-saveable modes. This is likely not possible in the way that you've described, given the limitations of an Inkscape extension.  The Inkscape extension framework may change in the near future, though. 

    6. Double-wide colors. We have evaluated quite a few watercolor sets for fit, and have recommendations about many.  Is that set on our list?