Studio Artist has some cool new MSG processors that generate space-filling curve based effects. One fun thing you can do is to generate a halftone screen based on the space-filling curve. We’ll take a look at how to build this effect in today’s post.
Halftoning is the process that takes place to convert a continuous tone image into a bi-level image for printing. Most printers only lay down solid black ink dots on white paper (if it’s a black and white printer), or they lay down cyan, magenta, yellow, and black dots if it’s a color printer. So a continuous tone image needs to be converted into solid color dots (or pixels) in order to be printed on these devices. Look at the image printing in a newspaper or magazine and if you zoom in close up you will see it’s made of different dot patterns that look like gray or color tone areas when your eyes get away from the page.
Exaggerated halftone patterning also makes a great special effect. So rather than trying to accurately reproduce continuous tonal values in an image for printing, the arrangement and sizing of the color dots is exaggerated and oversized for artistic effect. That’s the case for the particular effect shown above. Rather then building a halftone screen out of variable sized dots or stochastic noise patterns, the screen is made out of a modulated space filling curve.
The image below shows the MSG preset (in the MSG Advanced Editor) used to build the particular effect shown at the top of the post.
All 3 1C Hilbert Mod processors used in the MSG preset have the same internal parameter values. This is to get accurate color reproduction in the resulting halftone image. Each of these 3 processors individually processes the R, G, and B Source input channels. And each of these 3 processors is generating the same halftone screen pattern.
The 2nd gallery image above shows that the initial SetToValue processor sets the R Out channel to 255 (solid white). The 3rd, 4th, and 5th gallery images then show the IO (input-output) routining used for the 1 1C Hilbert Mod processors. Note that the solid white input image is modulated by the 3 source input channels to generate the halftoned output channels. I processed the b Src, G Src, and then finally the R Src so that I would not override the R Out stream until I was processing the last color channel ( to avoid overwriting the solid white image temporarily stored in there).
There are many different approaches you can take to building halftone or image abstraction effects using space filling curves with MSG processors. The 1st screen shot below shows a more complicated MSG preset in the MSG Advanced Editor. The 2nd gallery image shows the effect about for this more complicated preset.
While this preset appears to be much more complicated than the first one shown above, if you start analyzing it you will see that it works in a similar way. A series of identical steps is used to process each of the 3 source color channels. The 1C Hilbert processor is used to generate the space filling curves instead of the 1C Hilbert Mod processor used in the first example. The 1C Hilbert processors does not incorporate any source modulation input, it just generates a space filling curve and overlays it on it’s input stream. So this second MSG preset then uses Chamfer distance mapping to interpolate smooth transitional distance maps in the spaces between the solid space filling curves. Thats’a a mouth full I know, so lets look at some picture to help see what is going on.
The 1st gallery image above shows the output for a single 1C Hilbert processor, which is generating a simple geometric space filling curve. The 2nd gallery image shows the output after the 2 Chamfer processing steps. Note that this 2nd image builds a grayscale distance map between the geometric white line patterning generated by the 1C Hilbert processor and the white space filling curve it generates.
The 3rd gallery image then shows the output of the ThresholdMod processor, which uses the distanced mapped space filling curve in the 2nd gallery image as a halftone screen to threshold the R Source channel.
The 3 gallery images below show the MSG processors used to construct the 3 gallery images above. Hopefully this will help make clear how the different processors are working together to build the space filling halftone screen effect for a single color channel.
So this same multi-step process is used 3 different times to construct different space filling halftone masks for the 3 color channels for the source input to the MSG effect. The last ForceColorMap processor maps the halftoned 3 channel image with a color palette to artificially colorize it.
Many thanks again for inspiring and taking us to the engine room of msg’s John. Much appreciated.
Since the space filling curve MSG processors are designed to overlay on top of an existing stream, you can stack several different ones to build more complicated patterns. I’ll be putting together a post that shows how to do this to build some abstract effects soon.The other thing i was thinking about this morning is that using a space filling curve as a MSG Live Source Brush in the paint synthesizer might lead to some interesting paint effects.
Re: A space filling curve as a MSG Live Source Brush in the paint synthesizer – sounds like a brilliant idea for exciting new possibilities.
Many thanks again for inspiring and taking us to the engine room of msg’s John. Much appreciated.
Since the space filling curve MSG processors are designed to overlay on top of an existing stream, you can stack several different ones to build more complicated patterns. I’ll be putting together a post that shows how to do this to build some abstract effects soon.The other thing i was thinking about this morning is that using a space filling curve as a MSG Live Source Brush in the paint synthesizer might lead to some interesting paint effects.
Re: A space filling curve as a MSG Live Source Brush in the paint synthesizer – sounds like a brilliant idea for exciting new possibilities.