Substance Designer Tips For Beginners
Substance Designer Tips For Beginners
In the second year, I have the job of introducing the students to substance
designer and during these classes I like to go through some easy node set ups to
help avoid the standard beginner mistakes. These set ups were added because I was
spotting the same problems from student to student, and actually, I’ve seen these
same problems on websites like Polycount or Artstation where artists are
experimenting with the program for the first time.
So this blog will simply go through a few of these tips which seemed the most
helpful and may help others who are just starting out in Designer.
Disclaimer:these techniques are not unique or new (im sure many artists use these
in their set ups) and I’ve almost definitely picked these up from other artists or
articles over the years. This is intended for those who are just beginning to
building their designer skill set.
I’ve set the tile generators parameters to match a basic brick pattern, you’ll
notice the pattern input is set to brick (perfect for a brick material right?) and
I’ve changed the “Offset” to 0.5 for that interlocking pattern.
You can see the issue is the width between the bricks! When we change the “X-
Amount” and “Y-Amount” to different values, in this case X = 3 and Y = 10, the tile
generator is simply squashing and stretching our pattern to a grid which matches
these values. Using a histogram scan makes the issue more visible.
The pattern itself is also to blame, most beginners will use the brick pattern but
importantly the pattern specific which adds a nice bevel or slope to the bricks,
which results in uneven “grout” lines and also uneven bevels on the sides compared
to the top.
An easy workaround is to change the pattern to a “square” instead, which turns the
2D view fully white, but if we also change the “Luminance Random” value up ,which
will give each brick a different greyscale value, we should see our pattern again.
To create the grout lines, we can plug this into an “Edge Detect” node, which looks
for changes in values and separates these by a sharp line, almost like creating
little islands defined by the value of the input. The Edge Detect will keep the
width the same and also makes for easy exposing later on (we could also round the
corners here if we wanted).
To add a bevel or slope, we can blur the result and “multiply” the blurred brick
with the original edge detect using a blend node. Now we have an even bevel around
the bricks and also a strong, consistent grout line. A similar effect could be
achieved with the bevel node as well.
Final comparison, on the left is our quick node set up, on the right, just the tile
sampler output using the brick pattern. Note: You can use a levels node after the
blur to make a deeper, darker bevel.
Above is a very basic wood grain set up which is multiplied over a quick plank
pattern, created using the same method discussed further up. This is the result
You can see that the wood grain pattern continues from one plank to another. In
reality, these would be cut from different parts of the tree and so we would expect
each plank to have a different pattern.
To break this pattern, we’ll first need a greyscale version of our plank pattern
where each plank is a different value of grey. There’s a couple of ways to achieve
this, for mine, I plugged the result of the edge detect into a “Flood Fill” node
which then goes into a “Flood Fill to random grayscale”.
The Flood Fill nodes are a really power and convenient way to add gradients or
random colours to each pattern. I would highly recommend going thorugh the
documentation on these nodes, they can be really helpful.
https://docs.substance3d.com/sddoc/flood-fill-166363369.html
We can use these random grey values as an intensity input for a “Directional Warp”.
I’ve also plugged the wood grain into the first input for the Directional warp.
Setting the warp amount to a very high number, in my case 256, will result in a
wood grain being split, based of our plank pattern. Moving the warp angle can help
create a more interesting layout.
How does this work? If we think of our grey pattern as vales/numbers rather than
colour, the map acts as a multiplayer for the directional warp. As each plank has a
different number, the wood grain gets warped less or more than its neighbor and in
this situation, “directional warp” is just a fancy word for move!
For example, if the plank appears as white (1) then its simply, 1*256( the warp
amount) = move the pattern by 256. If the plank appears as 50% grey then its, 0.5 *
256 = move the pattern by 128 ect ect.
Final Comparison, on the left is the pattern applied to the planks without any
warping, on the right is the warped result. This technique can be used for loads of
different materials, bricks, marble, carpets, tiles, corrugated flooring ect.
Height Blend!
One last quick tip! Blending two materials or height maps together can be tricky,
especially if you want to colour the materials differently later on. Some artists
still opt for the using a blend node , using the “Max (lighten)” blend mode.
However theres another node which can be a real time saver!
The “Height Blend” node takes in two different height maps, a height map bottom and
a height map top, and compares the values of both to determine which should be
visible, it also has a slider that acts as a “levels” to edit the values of the
height map top. You can also use a mask, however if you’re blending by height, this
may not be necessary.
I’ve quickly thrown together two different height maps for this example. The height
map bottom is just a perlin noise and some clouds, while the height map top, is
just a tile generator with some luminance random.
By plugging in the height maps in their respective inputs, we can use the Height
Blend’s “Height Offset” slider to control how far and how many of our squares punch
through the ground noise.
This is great for blending height maps but its really helpful because it creates a
mask for us to easily separate the different materials later on. You can see the
node has two outputs, one for the height map and a second for a black and white
mask.
I’ve taken this mask and plugged it into the opacity input for a blend node. This
allows me to easily texture the squares a different colour from the ground and will
automatically update whenever I feel like changing the height offset.
Final words
Hopefully these few tips might be helpful to students or artists just getting to
grips with Designer. I’m sure there’s lots of different approaches to the problems
I’ve shown above and other (much more skilled) artists will probably know better,
more efficient workarounds but these are simply mine. For the sake of not making
this a huge blog, I’ve left a few other tricks out which I may put together in a
later blog if this goes down well.
Report an error