A Lightweight, Procedural, Vector Watercolor Painting Engine

Absract
Existing watercolor-like painting software produces high quality, but required powerful compute hardware and limited to screen resolutions. The paper introduces a new algorithm that enables artists to generate water color like paining in a lightweight manner.

Contibutions

  • Uses a particle-based model of pigment flow, rather than grid-based.
  • the particle representation is vector instead of raster, allowing for rendering at arbitrary resolutions
  • the particle update step is a physically-inspired procedural algorithm that is very fast to calculate
  • achieve common water-color effects such as edge darkening, non-uniform pigment density, granulation, and backruns.

Strength and Weakness

  • Ineractiveness, which is something that previous attempts to create water-color like effects lack or failed to do in a lightweight manner.
  • vector represetaion makes rendering at any resoluion possible with high quality anti-aliasing for final output
  • However, heavy branching, intricate flow, and complex textures are difficult to represent with pure vector formats


Algorithm

  • Adopt a sparse representation for the input paint pigment, and use a random walk algorithm to update its position each time step. (By carefully selecting he model and update equation, we can recreate a variety of interesting behaviors.)
  • The representation of paint pigment as a collection of dynamic splat particles made it possible to express dynamic watercolor paint behavior


Ideas for extension

  • canvas angle change so that we can generate droplets / rivulets of water-color stroke.


Open Questions

  • I would like to see actual implementations of these algorithms