Using Shape Grammar to Generate Patterns, with Şeref Atilla Gürbüz

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.

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!

Şeref Atilla Gürbüz’s workstation

Meet Şeref Atilla Gürbüz

My name is Şeref Atilla Gürbüz. I’m a material artist and architecture graduate from Istanbul, currently trying to find a position in the game industry. Even though I’m an architecture graduate and a master’s student in Computational Design in Architecture, I’ve been improving my skills as a material artist, learning basics, trying out new techniques, carrying out research and experimenting to fulfill my passion in material and environment art. Right now, I have a small digital design studio, Studio Blueprint, where I find opportunities to work on my material art along with architectural and digital design.

I started in 3D when I was a student at university. We’d model and render our architectural designs – but my first real attempt in 3D was with Blender in 2017. That’s when I learned how to create real game assets and use them in a game engine. Back then, I knew about Substance Painter thanks to my friends, and I used it a lot to texture my assets, but from time to time I’d come across materials that had been created in Substance Designer and I was always impressed with the endless possibilities it offered. I was studying Computational Design and using lots of different software packages that also included node-based systems, such as Unreal Engine’s Blueprint system or Rhinoceros’ Grasshopper plugin, and so I was familiar with this side of things, and with creating algorithms with them for my designs. To be honest, Substance Designer had a shallower learning curve than some of the others; I followed a few tutorials from the Substance team, Daniel J. Robichon and Daniel Thiger to warm up with the software, and after I was comfortable with the basics, I started to achieve better results than I could have imagined.

See Şeref Atilla Gürbüz on Artstation