Baking & Texturing Workflow.

When I started Substance painter, the process wasn't frictionless from the offset. I was greeted with these pleasant error messages that utterly perplexed me and took over an hour to troubleshoot.

I was sent on a wild goose chase for a while. I was wondering if my UVs were too close to the boarders since they were "out of bounds", so I took ages shifting around UVs. No matter how long I tried tweaking this, it just wouldn't work.

To my shock and horror, after Googling and using AI to troubleshoot these error codes, I found out my models Inexplicably created additional texture sets when I was splitting and merging my model. Why this is an issue is that these extra UV sets replaced the default sets, and they're the only ones Substance would read, and on top of that they're broken.


As you can see, there are not only multiple texture sets, but they're different, too.
I actually lost work for my UV unwrapping since some were done on one UV set, and some were complete on the other. I tried to transfer them, but I couldnt copy over only certain UVs, it was all or nothing as far as my research was concerned, so I ended up ultimately cutting my losses and going back to unwrapping.
In hindsight I suppose it would be ideal if I could merge/split meshes before unwrapping -- but in fairness to myself I never understood this to be an issue prior, and I've done this before. Still, Ill definitely be mindful of this in future projects.

I still had one issue; even though I accepted I needed to redo work, I still had to reorder UVs sets to minimize the amount of work lost (again Substance and other applications only accept the top set). Googling around, I found people use Mel scripting to do that -- but that was extremely finicky, I would also need to do on a model to model basis - and split up as my model was, that was going to take ages.
Just searching around the UV interface I was eventually in luck. At the bottom of the UV modelling window has a UV sets section, and if you right click them you can reorder your maps. So the useless ones would be put second, at which point Maya allows me to delete it as its no longer considered the default set.

Finally, after all that work, I got the model into Substance - the model is split for clean baking, and the UVs are laid out exactly as I had intended. I can actually begin proper.

To set up the model for baking, I had to swap the setting "match" to "By mesh name". With my naming convention being different from what Substance expects, I had to change the suffixes to "_LP" and "_HP" respectively. Luckily, I had made no typos or mistakes in my naming these 15 meshes, so everything was registered into the correct groups.
I used Substances new automatic cages, and while you can see a couple vertixes jut outward, the result is quite a bit better than the distance-based UVs. I could have used a manual cage file -- which I have done in the past -- but I opted not to for brevity. Moreover, I have had inconsistent results with manual cages - inflating meshes by normals on a component level tends to work okay, but I can be equally likely to get inexplicable errors.


This isnt the first result in baking, I had to redo some UVs to clean it up. Initially the shoulder pads were mirrored, so while the normals were okay, the AO wasn't. so I reshuffled those. Other elements are mostly good, besides a couple areas I'll point out.

Before

The last major issues were 2 things: as the cape folds over itself like in the first image, the mesh cage overlaps itself, so baking becomes a mess. The second was the AO around the chest -- while the geometry was symmetrical, so the AO should in theory be mirrored perfectly fine, it doesn't often work like that in Substance, it doesn't appear to know what to do with mirrored geometric with mirrored UVS sometimes. Theoretically, I could delete half the mesh and only bake one side to fix these issues, but that doesn't work with all the points of asymmetry around the arms and legs. While the chest is symmetrical, I can't just mirror and weld the whole mesh because of those other elements.
My solution is -- and while it is a bandage method -- I added AO as a texture set, made the texture map a texture which I used as a texture in the Substance project, and in another layer I just started painting over the AO so basically just hide the faults. I then used a soft brush to draw in the AO myself. The result isn't perfect, but I believe it to passable, at least hard enough to notice when the model is textured.
After


First thing I textured was the hard surface armour. For the base I masked key elements and used fill mask for basecolour/metallic/roughness, like the lenses, those small metal stubs on the front of Vader's mask, the mask itself, as well as the chestplace.
To build colour, I used a handful of techniques with the same methods. 1, fill mask that gives needed noise and variation - basically random blotches of dirt and varying roughness. 2, soft edgewear; I would use metal edgewear, remove all the grunge, and basically use it like a curvature map. I would make edges slightly shinier, since the polish layer is worn away. 3, harsh edgewear; I used metal edgewear again, but I allowed a degree of grunge to replicate smaller scratches and extreme wear. For the tear in the helmet in particular, I used yet another metal edgewear mask, although I also used a paint layer on top to limit the damage to that localized region. It's still largely procedural which was a bonus, it made adjustments simple.


I really wanted to tell a story with the skin. Anakin post-episode-3 is a burn victim, so I got the opportunity to explore skin in a way I've never done before. Intentionally making it scarred, disfigured and frankly ugly.

First I made the skin grey, I sampled the base colour from my moodboard references.
I thought it would be cool if I made the veins prominent on his damaged skin, to double down on the disfigurement, so I used a marble fill layer mask to emulate veins across his skin. I added its colour, and a tiny bit of normal map detail to enlarge their prominence. On top of that, I painted darkness around the eyes, and then used a curvature map to mask the contours and make them darker. Last of all, I baked the AO into the albedo texture very slightly, adding a little shadow overlay.

I moved onto the eyes, which is largely hand painted. I used a handful of layers and gradients, different brush alphas to paint the detail by hand. I did use height to indent the pupil slightly, which makes it highlight better under the light.

The cape took a while, but the process is simple. I created a noise layer using a fill mask for the base, rough fibre texture. For the edging I used a stitch generator which uses the edge of the UV boarders to make a make, and I made 2, so one was like an outline kind of stitching, while the other is like normal stitches. The "coffee stain" effects were the most interesting part of the workflow here. I used a clouds3 mask, turned the contrast all the way up, and then after I used this "mask outline" filter that gave the mask to make the noise patchy and high-contrast in texture.
Last steps are that I used a fill layer to paint on the shadows and AO on to the albedo layer since I wanted the effected exaggerated, and I wanted it visible from multiple lighting conditions.

I used the same techniques for the drapes as I did for the cape - although I just used different colours and different masks, but the process was the same.

The chest piece and the belt took a fair bit of manual work, let's unpack why. I didn't use or bake an ID map, and frankly it was for time. I feel that creating a bunch of material colours in Maya is quite time-consuming on the high poly, and even then an ID map isn't always clean either, there can be artifact errors, poor edging, etc. Making an ID map wasn't worth the time in my project, considering these elements along the belt and the chest are the only spots I really needed it for. As is, I had to paint on some masks manually for the textures, but even then it took me less than 20–30 minutes to do all of this.
Secondly, you might be wondering why I don't use emission for these buttons. I decided that since I used 3 UDIMs already, a thought a whole additional texture was bordering on excessiveness in terms of optimization, so I faked it. These buttons aren't especially bright anyway, so I faked emission by using gradients to make the centre of the buttons brighter, as if they were lighting up a diffused material. If there were more emissive elements I think an emissive channel would be worth it, but for such small elements, I decided against it.

The straps and knee pads are slightly interesting. I used curvature to make the small surface details, highlighting edges and small cavities. Where my methodology differs is my first use of anchor points in general. Those cavity bumps on the left knee pad? I used anchor points to mask edgewear along those details. I didn't have much of a need to use anchor points as most of the details I wanted were already baked in the normal/curvature maps, but it was nice to experiment. Historically I tended to put details in the texture rather than the normals/baking, if I go back to that workflow it might prove useful for metal edgewear in particular.

The main leather under-armour took me a while, it took a lot of procedural steps. For the padded leather arms, i used a brick generator to make the square shapes


The main leather under-armour took me a while, it took a lot of procedural steps. For the padded leather arms, i used a brick generator to make the square shapes. I used a lot of filters, blurs and then a sharp second brick layer on top to make the make soft in the centre of the squares, but harder towards the edges. The paint layer on top of, responsible for masking the generator to just the arms.
Additional layers include cloud noise, dirt, etc.
As for the strips in the centre. I copied the brick generator layer and set the horizontal strips to 0, so it basically had all its work already done. The harder part was masking off the cod piece, making sure its height map doesn't overlap. Turns out, if I place the codpiece layer on top, set the layer mode to height, and set the blending mode to normal it overwrites the data before it, which extremely helpful as a time saver -- I don't need to use an ID map or manually drawing over the mask.


The machine arm relies heavily on generators: edgewear, curvature and AO maps all over. The onlly exceptions are the fill mask layers to make noise, dust and roughness variation.

Finally we have the boots. Same as the other materials, I build these up with a combination of curvature, AO and edge masks in tandem with layers using fills to create noise patterns. In this case the fill layer created texture seams from the UV boarders; the solution to this was easy, there is a triplaner filter, it was as simple as adding the filter on top of the scratch grunge mask.



There is just one last touch up. Using a 3D linier filter combined wiith a grunge dust layer I created dirt that fades as it moves up along the model. its entirely procedural and a technique I'm proud of coming up with.


The finalized result. I'm quite proud of how well this turned out - I love the contrast between all the materials and the delineation between all of them.

In addition to the main texture, I create wireframe and AO materials too. The AO material is just a simple generator I applied on top of the existing coloured material.
The wireframe is a little more difficult to achieve. In Maya, I took 3 UV snapshots which I imported into substance. I made all 3 of them masks, set the "UV wrap" to none, so the textures don't repeat across UDIMs, and I finally needed to offset them (by either 1 or 2 on the x-axis to move them over across the X axis respectively).
