I finally got my hands on a license for Substance Live which includes, Painter, Designer and B2M!
There was a slight problem however. Up until recently, I knew I should get to grips with Substance Painter but I didn’t understand why. Typically, the models I produce are fine with basic UV mapping and materials applied to them. When I did require some moderately complex texture mapping and unwrapped material production, I could use Photoshop to achieve the results I needed (see last post).
However, as I was modelling the watering can in the current version of my kitchen, I realised that complex (mapped/unwrapped) textures and materials are required for the levels of realism I am now hoping to work towards. I have always understood that no surface is devoid of marks, blotches and microscopic details but I have only recently started introducing these blemishes to my work. Game engine technology and graphics processing is now capable of presenting this detail in real-time so it’s high time I started embracing the grime!
I started by watching the official introduction and training videos from Allegorithmic creators of the software, to get a sense of what you could do with their tools and how best I should commence learning.
Before I got cracking in Painter however I needed something to paint. This led to another first for me; Hard Surface Modelling. Typically, I have never modelling anything that has complex form in 3D. Despite working with the medium for years, all my modelling has come from starting with a primitive or extruded shape and modifying it on a sub-object level until I was happy with the results. This workflow got me through many years creating assets but I have finally reached the limit of my skills regarding what I now want to create.
I decided now would be a great time to dive in and learn the nuances of HSM. So, as with most of my learning these days, I headed over to YouTube to find a suitable video for beginners using my 3D software of choice: 3D Studio MAX.
I came across this video from Grant Warwick who has done an excellent (if a little speedy) job of demonstrating this approach using very basic tools, but combining them in a way to speed up the process and get desirable high-poly meshes (using Turbosmooth) from a low-poly topology. This means that editing the resulting mesh is much easier and by setting edges to either ‘hard’ or ‘smooth’ you have great control over the forms you are trying to create.
After being inspired by both sets of tutorials I created my first hard-surfaced object, applied what I remembered from the Painter tutorials and created this basic object with layered materials:
The idea behind this model was to provide a starting point to build up to something more complicated using a mixture of hard and smooth edges. Also, I got to apply what I learned in Painter to create a suitable sci-fi material that demonstrates the tough life this particular object has faced… either in the cold harshness of space or the depths of the ocean etc.
I was happy with the workflow and wanted to see what the asset would look like in a game engine. I therefore fired up Unreal Engine (now at version 12) and imported the model and textures from Painter.
After some basic scene creation, including implementing a similar HDI set up found in Painter (from this tutorial), I managed to recreate the environment and lighting. I also created a material from the textures exported from Painter to create this:
I was very happy with the results. This was a 96 polygon object with a 2K material applied to it, which, for such an insignificant object is very high. I just wanted to get a “heroic representation”of what the workflow and the Unreal engine were capable of.
I therefore bumped up the texture quality to 4K (one of the best features of Substance Painter) and managed to get this out of it (in Unreal):
Although I was happy with my first test, there was still a lot I had forgotten from watching the tutorial videos in Painter. I decided the best way to make all the features stick in my mind was to recreate the tutorial in its entirety.
In the first instance, I took what I thought I needed and just casually consumed the rest of the details. What I didn’t understand was just how important the stuff I neglected becomes as part of your workflow through a Substance Painter project. You re-purpose a lot of the same tools and methodologies throughout much of what you do in Painter.
As a typical student, I just tried to apply what I thought I needed to my own project as opposed to copying the video tutorial stroke-by-stroke. I made the assumption that my skills in this area were already solid and that I would remember everything I needed. They weren’t and I didn’t.
I decided to swallow some pride and actually replicate the tutorial step-by-step. There was still room for rebellion and/or creativity by taking the tutorial and expanding upon it. Below is what I came up with in glorious 8k:
Yes Painter and Unreal Engine both support 8k textures now! The detail close up is incredible and easily worthy of objects in visual effects shots, but let’s not get carried away here. This is a crate…. Essentially it’s nothing more then some set-dressing that will adorn a larger environment. There’s also likely to be hundreds of these things in a game/film with slightly different or instanced materials.
To put it in perspective, when imported into Unreal, each texture is 120MB. This object needs 6 textures (4 for each material – top and bottom of the crate). These comprise of a colour map, a normal map, an emissive map and a combination of ambient occlusion, roughness and metallic all in a single RGB texture – another great feature of Painter; packed greyscale textures using RGB channels.
So this one object uses 960MB of texture memory. If we take an average graphic card’s VRAM at about 2GB, that’s 48% of the VRAM is required just to display this object!
However, this is a simple scene to test the limits and realism of the engine. In reality, in a game, the textures applied to this type of object (depending on how close the user would get to it) would be more in the region of 0.5k, 16x smaller, and a single material would be used for both top and bottom of the crate (so roughly 15MB, 0.8% of VRAM based on 2GB – although much more optimisation could happen along the way).
I was very happy with the results. There are a few discrepancies between Painter and Unreal. This is to be expected because, even if you try and match the environment conditions and lightning in both software, there will be inherent differences because the renderers and shaders used are different.
To illustrate this, below is a screen-grab from the same crate in Painter using the same HDRI image to generate the lighting:
The main issues appear to be the saturation of the colour map seems to be lower in Unreal compared to painter. Some of this can be resolved by unchecking the sRGB box of the imported textures in Unreal. This is definitely the case for the packed ambient occlusion, roughness and metallic texture. The colour map shouldn’t be affected by this as much so try with the option ticked and then unticked to see if there’s an improvement.
I will continue to investigate the workflow between Painter and Unreal in the forthcoming weeks so will post anything I uncover here and log the development of a project I’ve started inspired by all I’ve learnt and experienced from experimenting with these tools and processes.