The Pattern Generator

Another thing I like and find interesting is to integrate my academic knowledge with my art. While I was learning about generative design techniques , I encountered shape grammars, first introduced by George Stiny and James Gips in 1972 and ended up analyzing and creating variations of old patterns that can be found on old carpets, textiles, ceramics, and mosaics.

Shape grammar is a set of rules that apply to an initial shape, that generate new geometric shapes, forms. If you change the rule then you will have a different shape at the end. The Pattern Generator material uses the same logic and it creates an endless number of patterns by changing the initial shape, and the rules that apply to it, with just a couple of sliders.

When I started working on the Pattern Generator, I had no idea where I should begin. Every pattern had its own unique set of rules, so I decided to focus on just one, and recreate in Substance Designer adding parameters that could be changed. For this particular task, I chose an 8-fold rosette pattern, which is very common in geometric Islamic patterns. I divided the pattern into grids where the rosettes repeat. Then I identified a fork-like structure that repeats by rotating in place, on top of previous instances of itself, and in doing so constructs each rosette.

After finding the repeating fork-like structure, I had to remake it in Designer. First, I determined the points by creating 4 circles of different sizes. Then I created 5 fine lines and rotated each of them by different angles. The scales of the circles and angles of the rotation of the lines were my first parameters. By blending the circles with the Multiply blending mode, I established the 5 different points of the repeating shape.

In order to create a line between two points in Substance Designer, I had to take the coordinates of each of those points, and connect those coordinates with a simple Pixel Processor node. I used dots as opacity masks for both the vertical and the horizontal gradients, and connected the result with a Min Max node that gave me the coordinate of the points in the 0-1 range.

I created lines between the dots with a Pixel Processor node and used the Splatter Circular function to finalize the pattern. To create more variations, I also created a material setup where parameters were gradient-driven.

Pixel Processor: Drawing a line between two points, {x₁, y₁} and {x₂, y₂}

The final part of the work was presenting the filter and sharing it with everybody else. I used lots of Flood Fill, Flood Fill to BBox Size, and Blend nodes to create my final pattern. I also shared this material’s .sbs file for free on Gumroad and or Substance Share along with other filters and materials I’ve made, such as Hallucination Node, Advanced Mirror Node, Sobel Filter, and so on.

Play

Going forward

I love procedurally generated art made with creative coding, and these days I’m interested in creating materials and filters using mathematical functions in Substance Designer. I analyze and learn from shader codes, code art, filters and much more. I also try to recreate them with Substance functions, such as pixel processors and value processors in Designer.

The Hallucination Filter is one of the experimental materials I created in Substance Designer by using mathematical functions. I created fractal Brownian motions and domain warping in Substance Designer, and animated them using the $time variable.

Hallucination Filter

Currently, I’m working on a marbling filter with a single Pixel Processor node. This filter is intended to generate traditional marbling art effects, by using functions in Substance Designer.

Marbling Filter

As Novalis once said, “In a work of art, chaos must shimmer through the veil of order.” I think Substance Designer fits into this category, where you can experiment and encounter happy accidents in your orderly chaos. Every artist should try out something more technical from time to time, as this can provides new opportunities, and new dimensions in your work, without the constraints of certain design patterns or principles that limit creativity.

I’dd add that the Substance toolset has a great community and I always try to engage with artists through Discord or Artstation. This is why I share what I do in Designer with the community, and why most of my filters and materials can be downloaded for free.

While creating my materials, filters or environments, I usually share my work-in-progress screenshots in Discord channels including Substance, Experience Points and Dinusty. I want to thank all the great people there for helping me through the process and making it more enjoyable. I highly recommend that artists join these great communities.

Lastly, I want to thank the Substance team for giving me a chance to share my workflow. I hope you enjoyed reading this as much as I did writing it!