Today’s post take a look at a MSG preset that generates an abstraction effect via horizontal mirror reflection symmetry along with some additional image processing. This approach to generating symmetry effects is an alternative to a recent post where we used successive applications of an interactive warp translate effect to build mirror symmetry in a facial image.
Today’s MSG preset was originally designed to be the first step in a paint action sequence that builds up an abstraction effect. I thought it was worth taking a look at it since we recently talked about abstracting facial images with mirror symmetry. There are several different ways you can build mirror symmetry effects using MSG processors. But the easiest approach is just to use the 1CMirrorRefect or 3CMirrorReflect processors, which will directly generate a centered mirrored symmetry effect.
The gallery above shows the simplest MSG preset you can build with the 3CMirrorReflect processor that generates mirror reflection effects. Note that the IO routing for the 3CMirrorReflect processor just takes the color input streams to the MSG preset (R Src, G Src, B Src) and connects it to the 3 color input ports for the processor (In R, In G, In B). And the 3 color output ports for the processor (Out R, Out G, Out B) are connected to the color output streams for the MSG preset (R Out, G Out, B Out).
The 2nd gallery image above shows some mutated variations of this simple MSG source processing effect.
The MSG preset used for the abstraction effect shown at the very top of this post is a little more complicated. It was designed to be the first step in a longer paint action sequence that generates an abstracted rendition of a source image. The 3CMirrorReflect processor is the final part of the MSG processing in this more complicated MSG preset (see below).
The image gallery above shows how today’s MSG effect was constructed. The UniformPoissonGen processor is first used to build a noise texture image in the Tmp RImg stream. The RGB_DisplaceOrientMod processor is then used to process the color input to the effect (R Src, G Src, B Src) and generate a displacement mapping effect. The green source image channel (G Src) and the noise texture image generated by the first processor (stored in Tmp RImg) are used as the 2 input modulators for the displacement mapping effect.
The RGB_MinBin1Area processor is then used to additional abstract the displacement mapped color image (stored in the R Out, G Out, and B Out image streams after the RGB_DisplaceOrientMod processor runs). Note that the IO routing is configured so that the RGB_MinBin1Area processor takes as it’s input the (R Out, G Out, B Out) image steams, and then outputs to a set of temporary image streams (Tmp RImg, Tmp GImg, Tmp BImg).
The last processor is the 3CMirrorReflect processor, which generates the mirrored symmetry part of the overall abstraction effect. Note that this processor takes as it’s inputs the temporary image streams (Tmp RImg, Tmp GImg, Tmp BImg), and then outputs to the 3 color streams associated with the output of the MSG preset (R Out, G Out, B Out).
This IO routing strategy of going back and forth between different image streams for the input and output of a processor is useful for any processors that generate geometric warps. The visual appearance generated by the processor will be different if the same image streams are used for it’s input and output, vs the approach we took in today’s example where they are different sets of image streams.
This is the difference between recursive vs non recursive IO routing. Here’s a link to a more technical MSG editing tip that explains this in more detail. We’ve also discussed this topic before in a previous post on Recursive IO Routing and Kaleidoscopic MSG Effects.
Some processors don’t care if they use the same image stream for input and output to the processor. For others it can make a big difference in what their output looks like. The rule of thumb is that anything that is performing a warp or geometric transformation of it’s input is sensitive to whether it’s IO routing is recursive (input and output are the same image streams) vs non-recursive (input and output are different image streams).
Here’s a tip on working with the MSG Advanced Editor if you are just getting started with editing MSG presets.