Simulating brush strokes for painting application
I'm trying to write an application that can be used to create pictures that look like paintings using simulated brush strokes. Are there any good sources for simple ways of simulating brush strokes? For example, given a list of mouse positions that the user has dragged the mouse through, a brush width and a brush texture, how do I determine what to draw to the canvas?
I've tried angling the brush texture in the direction of the mouse movement and dabbing several brush texture images along the path, but it doesn't look great. I think I'm missing something where the brush texture should shrink and grow on corners.
Any simple to follow links would be appreciated. I've found complex academic papers on simulating e.g. 开发者_StackOverflow中文版oil paints but I just want a basic algorithm to use that produces OK results if possible.
There's a large literature on Non-Photorealist Rendering. The main books are "Non-Photorealistic Computer Graphics" by Strothotte & Schlechtweg and "Non-photorealistic Rendering" by Gooch & Gooch. They discuss brush strokes. There are several of papers that deal with simulated brush strokes. See for instance "Simulating Artistic Brushstrokes Using Interval Splines".
Here's a classic from 1989 - Dynadraw, by Paul Haeberli. It uses a simple dynamical model to fill in a smooth the raw mouse positions.
While the strokes are drawn incrementally as polygons, you should be able to use the points generated by the dynamic filter to place copies of your brush texture.
The way I can think of would be to figure out the strength of the brush at each point in the line, and layer many uniform textures over it. Each texture would have an alpha value corresponding to "how hard" the brush is pushing down on the canvas at that location. The function to figure out how hard the brush would be pushing down would probably have to be correlated with the input.
If you go into a tool like Photoshop or GIMP, and observe how it implements the paintbrush tool, it should be pretty easy to simulate something close to it.
Not exactly what you're asking for, but I've found that applications that use line smoothing (like Adobe Ideas on the iPad or Doozla on the Mac) make for more realistic and eye-pleasing brush strokes, as you don't get the un-natural "jaggies" associated with tracking mouse movements perfectly.
精彩评论