Wednesday, November 26, 2008

Iterative Paint Strategies

I've recently been exploring the notion of using Paint Action Sequence (PASeq) keyframing to build iterative paint strategies. As we have discussed in previous posts, a paint strategy is a series of different steps that work together over time to build up a particular artistic style or emulative technique.

Using the PASeq timeline and it's keyframe interpolation capabilities can be a great shortcut to help you build different iterative paint strategies. You can just specify the start and end keyframes for different action steps and then let the PASeq playback parameter interpolation engine do all of the intermediate parameter adjustments for you as the PASeq plays back over a series of frames. As opposed to having to manually make all of those adjustments over the course of the different steps needed to implement your iterative paint strategy. And because the complete paint strategy is encapsulated in a recorded PASeq you can save it as a PASeq preset to use later at the press of a button.

Here's an example of the PASeq i used to construct the paint strategy used to render the image at the top of this post.

The paint strategy iterates over 10 animation frames. The red squares correspond to recorded keyframes. Note that the 'Image Compressor' and the 'PaintBezLayer' action steps have keyframes at the beginning and the end of the animation. This means that the associated parameter values will smoothly interpolate from the start keyframe values to the end keyframe values over the course of the 10 frame animation used to build the iterative paint strategy.

Black keyframes are mute keyframes. When a PASeq action step is muted it will not playback in subsequent frames until another red keyframe is reached as the animation progresses. Note that the mute keyframes in the first 2 action steps are used to setup an initial starting canvas that is then painted over in the various cycles of the iterative paint strategy. The image compressor action step is muted for the first frame only because i want to have dark paint strokes on the canvas before it processes the canvas and i need to have completed one animation cycle to do that.

The concept behind this particular paint strategy is to start with a color simplified canvas and then over paint with bezier paths derived from the source edges. The edge painting starts out highly distorted and over time becomes more and more accurate. The texture synthesizer and 2 water smear and drip paint presets are used to soften and drip the previously painted canvas as a part of each iterative cycle.

You can see the iterative paint strategy progress from start to finish in the animation below.
Note that this particular approach is an example of the more general category of 'loose to tight' paint strategies. This could be as simple as starting with a large brush size to rough in the canvas and then using a progressively smaller brush size over time to fill in increasing detail. This particular example is a little more involved because in addition to a paint step that gets progressively more refined there are also a series of additional steps that modify the previously drawn canvas. This water drip and intelligent texture synth smearing is working to create a complex organic paint texture over the course of the iterative cycles that build up the final output image.

There are endless variations to how you can construct an iterative paint strategy. Another concept i have been exploring recently is to build different tone ranges over the course of the iterative cycle. So you could start at the mid tones and then work over the course of the animation to fill in the highlights and shadows. Or vice versa. Depending on your source image, one direction to build the tone range fill may be more effective than the other. The range of potential effects for this kind of approach can get quite complex when you introduce additional action steps that modify the previously drawn canvas as a part of the iterative cycle.

Tuesday, November 18, 2008

Brick Wall Photo Mosaic - Example Presets

Movie Brushes are a powerful feature in the Studio Artist paint synthesizer. You can use them to create endless varieties of textural patterns in your paintings and photo mosaic imagery created with the paint synthesizer. This could take the form of full photo mosaic effects that try to reproduce the source image with a series of sub images that are appropriately positioned to represent the source image. Or it could be used for more subtle background texturing where the individual movie images are colorized on the fly by the paint synthesizer.

In response to some questions in a Studio Artist User Forum post recently about building brick wall textures i decided to post some preset examples. These examples are all Studio Artist 3.5 presets and you can download them here.

All of these examples use the same brickBrush movie file for a movie source brush. The brickBrush movie was created by first placing a series of photos of brick walls in a folder. I then made a simple Paint Action Sequence (PASeq) that sets the canvas to the source image. I then ran an Action menu command to process a folder of images with the PASeq to a movie file. This generates a movie file that contains all of the images in the folder you choose to process, in this case the brick wall images i wanted to use for my movie brush. You can run the File : Paint Synthesizer : New Movie Brush menu to open a movie file as a new movie source brush.

The different presets show off different mosaic styles you can create using the region as brush pen mode in conjunction with Studio Artist's path start regionization features. Path Start regionization has been discussed on this blog recently. When running a path start regionization preset, Studio Artist first visually analyses your source image and then paints it as a series of individual regions. The painting could be done with paint strokes that fill the generated regions in various ways, or in the case of these preset examples the regions themselves are filled in with individual movie frames from the movie source brush.

The trick with using a movie source brush with the region as brush pen modes is to set the Brush Option control in the Region as Brush Mode control panel to Alpha Only. Normally the Region as Brush pen mode replaces the source brush with it's generated region when drawing. But you don't want to replace your movie source brush, just build an alpha channel for it, and this setting will do that. Of course, you need to switch your Brush Type to Source Brush Alpha to take advantage of this. And you always need to make sure the PathStartRegionize control in the Region as Brush Mode control panel is turned on when using path start regionization with this pen mode.

In addition to the different paint presets included in the preset example download, there is also the movie file used for the movie source brush (called brickBrush). You should place the brickBrush file in the Brush folder in your main Studio Artist folder so that Studio Artist will be able to find it when running these presets. If you don't, you will get a dialog asking you to find the movie file.

There is also a paseq preset that shows how to build regionization painting off of regions generated by the vectorizer. This technique on working with the vectorizer to define regions for the paint synthesizer was discussed in this previous blog entry.

By using the run the File : Paint Synthesizer : New Movie Brush menu you can load your own custom movie files into any of these presets and build photo mosaic effects with your own set of custom images. There are many different ways to build photo mosaic effects in the Studio Artist paint synthesizer. Check out the Graffiti Brushes category in the 3.5 Collection of factory paint synthesizer presets for a completely different example of how to work with movie brushes to create mosaic effects.

Monday, November 17, 2008

Constructing a Paint Strategy

I had a conversation with a Studio Artist user recently about different approaches to building 'paint strategies', and thought it was worth repeating some of that conversation here for other users. By 'paint strategies', i mean the different approaches one can take to building up a custom art process to create some kind of finished piece of art in a particular aesthetic style. Often paint strategies are about trying to emulate traditional art techniques, but there's nothing that restricts you to emulating existing techniques. The goal is simply to figure out how to get from point A (a blank canvas) to point B (the finished painting in the particular style you want to achieve).

A common technique one would use if working with real paint is to first rough in the image with a large brush, and then add detail with progressively smaller brushes. Building this kind of paint strategy in a Paint Action Sequence (PASeq) is pretty straightforward. You start with the preset of your choice using a large brush size, and record an initial PASeq action step that roughs in the background of your painting. Then you progressively edit the max brush size in the Brush Modulation control panel to reduce the brush size and record additional PASeq action steps to build detail.

It's often common to reduce the path length (path shape control panel) as well as the brush size (brush modulation control panel) when building detail. You could also work with Path Start and Path End parameters to focus the painting on the edge structure of the source image. There are some paint synthesizer macro edits to help you do this if you are unfamiliar with paint synth editing. There was a tutorial presented here recently on abstraction vs realism in painting, and any of the detail focusing techniques discussed in that tutorial could also be used as a part of your paint strategy to build detail in your finished painting.

If you are working with manual painting as opposed to action painting, you could edit an autodraw interactive paint preset so that pen pressure or tilt modulates the max brush size and path length. Then you can directly control the resolution of the autodrawn paint strokes as you work with the pen over time to start out roughing in the image and then to build detail. The Digital Street Artist video tutorials show off this approach.

One alternative to roughing in an image is to start with a lower resolution canvas, paint it in, use Supersizer interpolation to increase (upsize) the canvas resolution, and then paint in detail in the higher resolution canvas with your original paint preset. For some kinds of paint effects, using an image operation like Color Simplify might be an alternative to using a paint preset for an initial roughing in of the canvas that then gets painted on top of with subsequent strategy steps.

Another approach to roughing in is to use path start regionization. Path Start Regionization works by analyzing the source image, breaking it up into different regions, and then painting them all in a single paint action step. Depending on what you are trying to achieve, this might be a better approach to roughing in the image than the normal scattered paint strategy of most paint presets. There was a tutorial posted recently that discusses some paint regionization techniques.

One example of emulating a traditional art process might be reproducing a custom watercolor paint effect. In the real world, you might start with a textured paper and apply a colored background wash with a large brush. Then you might fill in details with a finer brush. Detailed edges might then be drawn with a fine black pen or pencil line. This series of different painting steps could be thought of as a watercolor paint strategy.

In the example above, the textured water color paper could be simulated by designing a background texture in the paint synthesizer. There are a number of ways to do this.

You could adjust the settings on the Background Texture parameter pane to simulate a particular paper texture. Or, try scanning a real paper texture and load that into the Background Texture as an image texture. As a different approach, build a Paint Action that applies a random brush to the canvas with a random scan pattern. You could even build a series of image processing steps that generate a textured Canvas. This Canvas could then be loaded into the current region, and used to modulate the Paint Fill.

There are a large number of factory presets that could be used to generate a blurry watercolor background wash. The brush size could then be adjusted to provide a smaller, harder edge brush. The Path Start and Path End parameters could be set so that autodrawn paths would follow the source image edges. Path length and brush size could be reduced again for more detail rendition. The paint source color could be switched to black for the fine detail edge black lines. Then, a Canvas Spread Water Preset could be chosen for a final water wash.

All of these individual editing decisions and subsequent paint actions could be recorded as individual paint action steps in a paint action sequence. The nice thing about recording your custom paint strategy in a PASeq is that you can save it as a preset and then use it at a later time when you want to reproduce your custom style using a new source image. Or you can auto-rotoscope a movie file using the PASeq to generate an output movie rendered with your custom technique.

In addition to developing sets of paint strategies for generating different art styles, you might also try building finishing or optimization strategies. For example, after i finish a painting or effected image there are usually a series of optimization steps i take to clean up and enhance the final image prior to saving it. Depending on the visual characteristics of the painted canvas i might use different finishing approaches. Again, the way to construct an optimization or finishing strategy is to figure out how to encapsulate a series of processing steps to get from point A to point B. For me this usually involves constructing approaches to optimizing contrast and edge rendition in the final image while possibly reducing noise or edge artifacts. I want to do this without enhancing noise or introducing noticeable artifacts into the final image. Sometimes i might add subtle lighting, texturing, or weathering effects.

I used to run my finishing strategies manually by making live edits in the various operation editors and then pressing action. But recently i've become a big fan of working with prebuilt finishing presets. Building a set of PASeqs that encapsulate your different finishing approaches and then accessing them as preset favorites can be a great time saver when working. It also provides an easy way to quickly try different potential finishing approaches on a canvas and undo any choices you are aren't happy with.

Wednesday, November 12, 2008

Abstract Generative Art Strategies

I've recently been experimenting with procedural strategies for creating generative abstract art. There are a lot of different approaches you can take within Studio Artist to create different styles of generative art. For example, there have been a number of different posts here on directed evolution of MSG processors. But you can also use the paint synthesizer to create generative art. Either by itself or in combination with other Studio Artist operation modes.

The image below is an example of how you can use the paint synthesizer to create a generative pattern.

Here's a link to a forum blog entry that discusses how i programmed the paint synthesizer to create this kind of abstract generative image with 4 different paint steps in a PASeq. The coloring for this particular image was created with a static color chosen in the fixed color picker. The slight variations in coloring are a function of the randomization controls in paint color source and modulation control panels.

A different approach is to use a source color palette. The image below is a similar kind of generative system created with 2 paint steps.

The first places a small random mark. The second is a generative preset that grows circular patterns off of the initial random mark. I used the blanking buffer as opposed to white space like in the blog link i mentioned above to define the path start and path end conditions for the generative drawing. I did this so that i could run the generative process multiple times to build up a over-painted canvas. Each paint stroke is painted using the random source palette option, which randomly selects a palette color to paint with.

The example below was created by repeated applications of a generative paint preset, followed by different ip op or texture synthesizer options that feather the painted canvas.

The coloring is derived off of a single source color palette. Note that while this allows for a more complex coloring style than the use of a single fixed source color, there is a spatial uniformity associated with using a single color palette across the entire painted canvas.

An alternative strategy is to use different color palettes in different spatial areas of the canvas. To do this i used a new paint color source control panel option in version 4 that auto-generates the source color palette based on the current paint color. So i turned on this new feature in the paint step that defines the initial mark for the generative pattern to grow off of. And i used a source image for this particular step. Each time this step is run a single mark is placed based on the source image coloring and then the source color gradient is randomly generated off this single image color. The second generative paint step then used the auto-generated color palette to draw it's generative pattern.

The examples below and at the top of the page shows an abstract generative image generated with this coloring technique. Note that the end result for the canvas coloring is more richly varied as opposed to using a single color palette for the entire image.

In version 3.5 of Studio Artist you could construct a PASeq that encapsulates a complete cycle of the iterative generative design process described above. And then run a PASeq animation over multiple frames to build up the final painted image. Since i was using a version 4 beta i used a new feature called Gallery Show, which allows for setting up self running gallery show based on custom collections of presets. The movie example below shows the process involved in building up the final painting as the self running gallery show progresses.


There are an infinite variety of different ways to build generative systems in Studio Artist. One simple variation on the above approach would be to spatially modulate the generative paint patterning in addition to the coloring.