Thank you Richard. If I find some more ways to improvise for optimization, then I'll tell you definitely
would love to see the substance graph.
The visual shader system will be great for modular asset pack makers. You see some incredibly high quality modular asset packs on the Unreal store, whilst the ones for Unity are so-so, which I think is down to the ease of creating shaders on Unreal vs Unity. Alternatively you have to make your shaders in something like Uber Shader system which immediately splits your customer base.
Andy Baigent discussed the way he approaches the creation of procedural 3d materials with simple but effective patterns.
Hi! I’m Andy Baigent, I’m an Environment Artist at Foundry 42 UK and I’m currently working on Squadron 42 which is the single player campaign of Star Citizen. I live in Liverpool but I originally grew up in Worthing which is on the south coast of England, not far from Brighton. I broke into the games industry in late 2012 as an Artist at Evolution Studios where I primarily worked on trackside assets for DRIVECLUB and its DLC. Shortly after my time at Evolution Studios came to an end, I joined Foundry 42’s environment team before moving over to the ship team where I stayed for about a year helping to create some of the ship interiors for Star Citizen and Squadron 42. I’m now back on environment team creating some of the story driven environments in Squadron 42.
Choosing Substance Designer
The main thing that got me interested in Substance Designer was the node based interface and what you could create with the software. I kept seeing people produce some stunning textures purely from nodes without the use of Photoshop and it just looked like witchcraft to me. After using the Material Editor in Unreal Engine in University and on my personal projects over the years, Substance’s interface seemed somewhat familiar to me which spurred me on to using the software.
Another big thing that got me interested in using Substance is that it’s non-destructive. Meaning that if you’re quite far into creating a brick texture for example and want to change how many bricks there are, the shapes of the bricks, how much damage there is (all of which can drastically change the end result) then all you have to do is change a few values and maybe change out some nodes and you can see the result instantly. Don’t get me wrong, I love ZBrush and Photoshop, they still hold a key place in the toolbox and you can get equally amazing (and often much better) results from sculpting and painting but for me it’s the difference between hitting CTRL+Z to undo a few changes compared to the hours lost if you’re not happy with the results.
Searching for the references
When it comes to reference gathering, I usually sift through Google images and if I find a particular one I like I click the ‘view more like this’ button and it snowballs from there. After going through tons of references I generally end up with 3-4 main images that I fall back on.
Most of the time I don’t use low-quality images because of the lack of detail when you zoom in but some low-quality images as a whole can give you an idea of where to go in terms of shape and form and then you can use the high-quality ones to zoom in and get the all the details you need. Whether it’s high or low quality, good or bad, it still reference. It’ll show what to include and what not to include.
I also go through ArtStation and Pinterest to not only look at what other artists have done to draw ideas and inspiration from but to try and work out how they’ve done certain effects and it also sets a benchmark for me.
Whenever I start a new project in Substance I always start by plugging a light gray ‘Uniform Color’ node into the colour slot and a dark gray ‘Uniform Color’ node into the glossiness slot, this gives me an easy to read matte gray canvas to work from. From there I start working with the height map so I can focus on the main elements and get the bigger details done before I move onto the smaller details and all the time I’m working on the height map I make sure it’s running through a ‘Height Normal Blender’ (with a ‘Normal Color’ plugged into the Normal slot) so it’ll give me a base normal map to work from later down the line.
I always think it’s best to leave the small, micro-details out of the height map because if you pour everything into it, it’ll become very noisy and unreadable pretty fast so once I’ve got to the point where I’m happy with the main elements I’ll move on to the smaller surface details and start to combine them with the base normal map I generated from my height map. You can always go back and add things into the height map later down the line if you think it needs to be there, remember it’s non-destructive!
In terms of actually displaying the height information when it comes to rendering, that all depends on what software you’re using and what purpose you have for the textures. If you’re rendering out a beauty shot in Marmoset Toolbag then I tend to use a heavily subdivided mesh and use Tessellation. The plane I used to render the bricks was a little over 2 million triangles, but that’s just to displace the geometry more accurately based off the height map. Of course this would be extremely impractical to run in a game so a common practice would be to use parallax mapping, although this does have a downside as it somewhat distorts at harsh angles and the effect loses it’s magic where the mesh stops.
The position of the various elements on the materials are random to some degree, however, I still use masks to control where those elements go. For example, the moss on my cobblestone material uses a mask that’s generated from a ‘Perlin Noise Zoom’ node followed by a ‘Levels’ node and a ‘Blur HQ’ node to mask out an overall surface area of the moss. Then using the mask from the cobblestones I was able to make sure that the moss stays in between the stones. If you’re not happy with the result you can also change the ‘random seed’ or the ‘disorder’ in the root node options (in my case it was the Perlin Noise Zoom) to change the randomness which subsequently alters the placement of the moss so just by changing a couple of values, you can get different ‘random’ results.
However, there are cases where it’s better to hand place things like the shells in my sand texture as there are only 2 or 3 in there. There are nodes you can use to randomly scatter elements but when it comes to a very small number, I think hand placing or letting substance take over just comes down to personal preference and how much control you want over the individual elements.
To get your materials looking plausible the next step is defining your colour and glossiness / roughness.
When it comes to your albedo (or colour) map you want the colours to match as closely to your reference as possible, the best way I’ve found to get you started is to pick an area from one of your reference images (we’ll use mud for an example) and by using the ‘Gradient Map’ node’s colour picker, just click drag your mouse across part of the reference where mud occurs. Be careful though as it’ll record every pixel that has a different colour so it’s best to concentrate on a small area.
The end result may look like it’d be less effort to just choose the colours yourself but doing it this way gives you a base to work from and you may find you’ll only get rid of one or two colours in the swatch you’ve picked. Most of the time I try to half the amount of colours by deleting the ones that are near enough the same and typically I plug the ‘Gradient Map’ into a ‘HSL’ node to control the overall brightness and saturation, doing this in each colour that’s been picked can be a bit of a task!
Ambient Occlusion maps are also extremely helpful to emphasize the depth of your material but should never be multiplied over your albedo as you don’t really want any light information in your colour map.
Gloss or Roughness maps are pretty important to get your material feeling realistic. Depending on what material you are going for you should always spend as much time (if not more) working on them as you would with the rest of the texture set as they really help sell what kind of material it is. For example if you just use a solid mid-grey colour as your gloss map on say a stone-tile material your making, it’ll make it look a bit like lino flooring so it’s always good to have variation in your gloss / roughness map. I usually start out with a solid grey colour using the ‘Uniform Color’ node (brightness depends on the material and whether your using glossiness or roughness) and from there I basically back track through my material chain and using most of the masks that make up the individual elements like dirt, rust, concrete etc to blend different shades of grey in to the gloss map chain and slowly but surely you’ll start to build up your glossiness or roughness map.
Presenting and testing
There comes a point when I’m working in Substance where I’m happy with what I’ve got. It may not look like the final piece but the bulk of the details are there. That’s when I start to save out the textures and start to set up a render shot in Marmoset and more often than not I start to see problems or things that I’ve missed out in the texture straight away. So when I’ve started to set up my shot, I’m constantly going back and forth between Marmoset and Substance to add and delete things or to fine tune the textures by changing some of the values in the various nodes.
In terms of actually rendering your shot, there are a few camera settings to play around with. I’m always a fan of a little bit of contrast so I like to ramp that up a tiny bit as well as the exposure to really set the light and shadows apart, be cautious though as this will dramatically increase the saturation and brightness of the colours so a good way to combat this is to slightly desaturate the scene in the camera settings.
Pretty much all my work is rendered with depth of field and vignette as it really helps focusing on the area you want to show off, however, I tend to keep them quite close to the edge with a low strength when it comes to materials as you really want to show off the whole material.
When it comes to really fine tuning the camera settings and lighting (we’ll get onto lighting in a bit), to the point where it’s barely noticeable, I often take breaks and work in short bursts as a lot of the time I find myself becoming blind to the whole thing as I’m so focused in on the smallest adjustments and it feels like nothing really changes. So after 10, 20 minutes or whenever you feel the need to, take a break, go make a tea or coffee, start learning a new skill (I learnt how to juggle and make origami shirts out of bank notes). Do anything that doesn’t involve you using your computer and then come back after a couple of minutes and you’ll have a fresh pair of eyes. I’ve lost count how many time times that’s helped me in the past.
Another good trick is to take a screenshot, paste it into Photoshop and flip the image horizontally. Even though it’s still essentially the same image, it’ll seem like it’s somewhat different and because of that, it can sometimes make it easier to spot mistakes.
Lighting is a huge part of any art related work and I often hear the phrase “Good lighting can make a bad piece of work look good, but bad lighting can make a good piece of work look bad”.
There’s so much depth and scope when it comes to lighting and it all depends on what you’re rendering to determine your lighting setup. A good base to start from is the three-point lighting setup which consists of the Key Light which will be your most dominant light and is normally angled at a 45° angle. Never angle it head on or upwards as it can make it look a bit weird and unnatural. Then there’s the Fill Light which helps fill in the shadows and is normally a bit dimmer than the key light, without this, the shadows can often appear near black which is never good! Lastly is the Back Light which lights the back of whatever you’re lighting and separates it from the background by giving the subject a rim of light which can make it ‘pop’.
With this basic setup in mind I like to experiment with the three lights but the back light pretty useless when it comes to rendering materials that covers the whole image as there’s no edge or back to light. With the key and fill lights I usually go for the classic warm and cool, yellow and blue combination (yellow for the key and back, blue for the fill).
With any of the lights, there’s a fine balance between brightness and saturation. Too bright and not enough saturation will basically white-out everything whereas too dark and too much saturation will just make it really dark and colourful (even reading that back sounds weird). As I say there’s a fine balance so this is more of an extreme example. Also, you should always want to make sure your gloss is being picked up by your key light in the shot as this will really help to sell what the surface is feels like.
As I said previously, the three point light setup is a good place to start, you can always mix it up by just using the back light, or the key light with the back light or just the key light. Play with the colours and intensity, placement and angles, add omni lights (sometimes called point lights) but always keep the three lights as your ‘home’ or something to refer back to and it’ll make the process go a lot smoother.
At the very end when making the renders more presentable in Photoshop, normally I’d play around with the layer adjustments like levels and colour balance a little, purely to see if I can get make it slightly better. Sometimes it works, sometimes it doesn’t but it can never hurt to try.
With all that being said, the best bit of advice I can give is to just experiment and practice with Substance. There’s been so many times where I’ve discovered effects that could be used on another material purely by chance so just have fun with it, plug some random nodes into other random nodes and see what happens.
I really hope you found all this helpful!