Matthias Schmidt shared a bunch of techniques discovered during his search for a perfect procedural workflow for sci-fi hard-surface projects in Substance Designer.
Hello, readers! My name is Matthias Schmidt. I'm a freelance material and 3D environment artist from Altenburg in Germany.
I got my first taste of game development during the early mid-2000s as a level designer on two successful total conversion mods for Call of Duty (German Front Mod) and Half-Life 2 (Insurgency). I landed my first industry job in 2007 for a company called Grin, which was based in Stockholm, Sweden. Over there, I worked on console and PC games such as Bionic Commando: Rearmed, Bionic Commando, and Terminator: Salvation. My next gig was for a Dutch company named InterWave where I worked on an FPS/RTS hybrid game named Nuclear Dawn. Eventually, I rejoined forces with fellow Insurgency mod members who started a new indie company called New World Interactive. For almost ten years I worked for them on games such as Insurgency, Day of Infamy, and Insurgency: Sandstorm.
Over time my role shifted gradually. First, I slowly moved from level design into a 3D environment artist role, I did some weapons and vehicles as well and in recent years my career focused ever more on material creation. So I know game dev from different perspectives, which helps me to have a good understanding of what assets other artists and designers like to work with.
Next to my work, I've made it a habit from early on to work on personal projects in order to broaden my horizon and stay relevant in my profession. Things move so fast in this industry and it is my firm belief that if you stand still for only two years a part of your skillset is already outdated and you begin missing touch with what is going on in your field. So for personal projects, I completed several environments, won a Mod of The Year award for a sim racing track, and developed many of my own Substance tools and workflows – something that I want to focus on in this article.
Texturing and Substance Designer
Like most artists from my generation, I learned texturing in Photoshop. Although my work wasn't terrible I always felt that my hand-painted materials and masks suffered from me not having a proper education in drawing and painting.
So when a few years ago Substance Designer became popular it was a revelation for me. Suddenly, I was able to create the materials that I had in my mind through a technical and analytical approach where my pure art skills lacked a bit. I already had some experience working with node-based editors from World Machine and Speedtree so getting used to it wasn't a problem for me. While it can be a highly complex program that requires some technical understanding it is at the same time pretty straightforward once you get the hang of it and in most cases, it lets you just create the things that you imagine. On top of that if you doodle a lot like I do you will always find neat new tricks that can be exploited later on for making something cool or interesting.
Pushing the Envelope
In everyday work life, I make mostly mundane and realistic materials that aren't too creatively challenging. In my own time, however, I like to go absolutely crazy with Substance Designer and try to push the envelope. I often think about things that have never been done before and how I could tackle them. These kinds of exercises are important for me because I learn a lot from them. Not only neat new tricks but also what my limits and the limits of the software are.
I also take this as a source of motivation. Trying to not only keep up with the cutting edge of my field but to make small contributions to it can be extremely rewarding, for example when the artists that I look up to give me compliments or even ask how to do certain things.
Sci-fi in particular is something that I've always loved in all its shapes and forms from books, television, movies to games. So naturally, it has a big place in my personal endeavors.
Over the last couple years I have developed a bunch of Substance workflows and tools that help me with creating sci-fi materials in particular. I think my approach is quite unique in some aspects, at least I don't see many other Substance artists who work in a similar way. So let's talk about that!
At the beginning, there was a problem. I had learned how to create a wide range of materials in a highly procedural way. It worked well for natural and organic materials as well as man-made things such as generic surfaces or surfaces with a lot of patterns like brick walls, for example.
For things with a highly complex manmade look such as sci-fi wall panels on the other hand this approach didn't work so well at first. Instead, I tended to deliberately and painstakingly construct shapes and elements manually. And I wasn't alone. To this day this seems to be the prevalent technique to make such things in Substance Designer.
My ultimate goal however is to create something as good or even better from a small number of nodes in a timely and highly tweakable parametric manner that ideally spits out something interesting and new with each random seed. Let's take a look at some of the techniques and custom tools that I use on my path to get closer to this goal.
01 Custom Template
I always start a new substance with my own customized template. It has all the texture maps set up that I need in the viewport and for export. When I plug a heightmap in the foreground of the first blend node to the left it creates a simple material right off the bat with a normal, roughness and AO. I tend to increase roughness and set metal to white when I doodle. So with just a few clicks, I can work in an environment where things pop nicely. Not unlike working with a matcap in other software.
In my template, the texture maps also run through a 'Base Material' node before I route them to the outputs. This is so that if I want to use a 'PBR Render Node' or 'Water Level' I can plug them in easily. Another advantage is that in the 'Base Material' I can quickly disable maps temporarily, which can be useful to check the effect of my roughness map in isolation, for example.
02 Directional Bevels
I had my first breakthrough for a more procedural sci-fi approach when I figured out that I could use certain custom nodes from Substance Share that had a directional bevel filter functionality. This helps tremendously to create interesting random shapes, surface gradients, and patterns. 80lv reported on my findings back in 2018.
It is a very easy way to add depth to your substances that looks machined or manmade. Right there and then this also sparked my interest in doing these things with minimalistic node setups. My thinking was that if I can do highly complex looking materials in just a few steps it will have the potential to beat other workflows in terms of speed and versatility.
More recently, I created my own version of a directional bevel node that fits my needs perfectly and also can be used to copy-paste and manipulate repeated shapes to create interesting effects. I can rotate and scale the bevel for instance.
03 Symmetry and Mirroring
As you can see above I already started making what looked like wall pattern shapes two years ago. Mirror and Symmetry nodes turned out to be extremely useful for that as well.
A slight problem was that SD doesn't come with greyscale 'Symmetry' and 'Symmetry Slice' nodes by default so I made my own ones based on the stock color versions. These have some extremely powerful modes for doing hard-surface. They are useful for time-saving, often reducing the amount of mirror and blend nodes that would have to be used otherwise for the same effect and they are a quick way to break up the uniformity of repeating patterns. This can look visually very appealing but is also a good way to get more mileage out of atlases and trim sheets because having two identical mirrored sides on a material can be a waste of texture space.
04 Mirror Offsetting
Another important technique is offsetting the centerline of a 'Mirror' node. This can be used to create rules of thirds effects or to get interesting segments for further manipulations, mirror operations, or blending.
05 Boolean Blending
Diving deeper into doing sci-fi hard-surface in SD I stumbled upon another problem. Neither the default blend modes nor the height blend node produced blending results that were akin to how one would use boolean shapes in a 3D modeling program. This is quite important for machined looking parts though. So I ended up creating my own boolean add and sub blend nodes with a lot of experimentation, reverse engineering, and pixel processors. As a useful extra feature, I added the option to blur the edge between the two boolean inputs. So this now creates results that come very close to modeled and subdivided looking geometry.
I haven’t released these nodes yet but if anyone is interested I explained how they work in one of my blog posts on Artstation.
06 Mirror Extruding
Around a year ago, I started experimenting with using the 'Distance' node with a mask to edge extrude shapes similar to how it's done in a 3D program. Initially, this worked only in one direction, and sometimes I would mirror the results manually. Then I noticed that extruding a whole heightmap around a centerline and then mirroring can produce fantastic results. This was a bit like finding a holy grail for me because it turned out extremely versatile and useful. Based on this idea I created a new custom node that is very versatile and has many additional options for offsets, skew, tiling, etc. I would consider this tool to be at the actual core of my procedural sci-fi workflow. I use it for whole panels, shape inputs, etc.
07 Blending and Mixing
What works really well for breaking up repeating patterns is to duplicate a small section of the node setup at the root, apply some tweaks or a new random seed and then blend the result with the original. It has huge potential for trim sheets as well because you could just plug the different results into different slots and with each new random seed, you would get a new trim sheet that looks different.
08 Pseudo Fractalism
One way to create order within chaos is to mix and blend shapes with themselves at different dimensions and directions, similar to a fractal or how in nature the rocks that make up a mountain look themselves like smaller versions of the said mountain. I often use this with my boolean blend nodes. If you push this technique a little further it can even produce some H.R. Giger style effects.
A good way to create variation and visual interest in your sci-fi shapes and panels is to use SD's 'Swirl' node at a low intensity. Especially if your panels or shapes look too much like sci-fi tropes due to overuse of 45, 90 or 35 degree 'future angles' swirl helps with some more elegant, subtle and soft direction changes. For me, the second advantage of working with 'Swirl' is that it creates different angles that my mirror extrude node can 'bite into'. It also can work extremely well with symmetry and mirrors, to create vent-like things or something that suggests moving machine-like parts are involved.
10 Third-Party Content
As much as I love doing things procedurally, not everything has to be! Especially when it comes to production it can be a big waste of time. No need to reinvent the wheel. Prefabricated alphas work great for adding common details (such as nuts and bolts) and a shape language across different substances. You can make your own or purchase one of the many great packs that are available on the marketplaces.
And while these third-party alphas may lack one's own flavor there are still ways to personalize and get a lot of extra mileage out of them. Again, my mirror extrude node comes in extremely handy for that. In the top left corner is the result of the original input (an alpha from a JRO-pack), all others are variations created with mirror extrude:
11 Dynamic Edge Profiles
Another arrow in my quiver is a node that I use for applying different profiles to the edges of my shapes. This node works in two modes. First, it has a set of predefined curves that I consider to be generally useful and that have big reuse value, things like double edges, simple edged trim, etc. In the second mode, it uses a fully dynamic gradient input that can create virtually unlimited new variations of profiles from a randomized ‘Tile Sampler’.
12 My Coloring Approach
For coloration, I use a node that works quite similarly to the dynamic edge node. During the first couple of years of using SD, I tended to import albedo textures from scanned materials such as Megascans and grabbed gradients from there. This worked super well for me because the gradients always were in the PBR range and in most cases just worked.
What I'm doing now instead is that I have created a custom node that contains a collection of many gradients picked from scanned assets. The gradients are applied to noise patterns so that I have as much variation as I would have from a bitmap source. To work with this node, I usually plug it into a 'Transform 2D', select a snippet that has some good gradient (either from bright to dark or a bit chaotic) and then plug this into a 'Gradient Dynamic'. By combining several of these with masks, I can build up some nice albedo maps with relative ease.
13 Inverting, Rotation
Another very simple method to mix things up is to either invert or rotate the heightmap. There are many 'happy little accidents' hidden in there. What originally might not look so interesting can suddenly turn out to be a very interesting shape. A recess suddenly becomes a bulgy machine cover, etc.
14 Non-Uniform Blur
Non-Uniform Blur with its anisotropic and asymmetry settings is a very powerful node for hard-surface substances. You can use it to create parts that look machined or like stamped metal from randomized ‘Tile Sampler’ shapes and such. I have used this for pretty much all of the examples in this article in some capacity. The example below demonstrates it quite well. As you can see, horizontal and vertical edges are not blurred uniformly:
15 Pinching with Slope Blur or Mosaic
Anyone who has worked with a sculpting program knows the pinch brush. In Substance Designer, you can create a similar effect by using a tiny negative intensity value on either the 'Slope Blur' or 'Mosaic' node. It can be useful for hard-surface in SD if your procedurally generated heightmaps or shapes come out a little too loose and would benefit from being a bit tighter or if for whatever reason you had to blur too much to hide aliasing or artifacts.
While this article isn't in any way meant as a tutorial I hope it contains some useful information and can serve as a source of inspiration. Substance Designer has been around for a while now but it still offers a lot of new things that can be discovered through experimentation and creativity off the beaten path. In this article, I was only able to scratch the surface of what I'm doing. If you’re interested to read more about my work please feel free to check out my blog on Artstation and my Twitter.