Character Modelling - UV unwrapping, Texturing and Weapon Development
UV Unwrapping, Texturing and Weapon Development
17/07/25 - 21/07/25
Introduction
The next step in the process was to uv unwrap, bake and then texture - this would then complete the character modelling pipeline and be ready for animation! Uv unwrapping flattens the model to a 2D net, essentially preparing it for texturing. My plan for this was to maximise texel density with an array of optimisation techniques that involved mirroring and duplicating to create stacked UV shells. This means that the UV shells would be bigger and therefore higher resolution. Baking I was a little worried about, especially with these UV optimisation techniques I had planned, however, I’m sure I could troubleshoot any issues. I was interested to see how well the high poly baked onto the lower poly, game ready mesh. Lastly texturing I wanted to keep simple and stylised - mainly sticking to the core colours in the concept. I was fairly confident with UV unwrapping and baking, however, texturing I’d definitely need to do some research to finish this character to a high standard.
Let’s get into it!
Project Management
This blog post was completed retrospectively so the images below show my project management from the point of view of 21st July where the work in this blog post was completed. It had taken some time to get my estimates right, particularly because I hadn’t modelled a character to this level before, however, I was now starting to feel a little less stressed and that the progress I was making was good! I hit my revised targets for texturing and also squeezed in completing the 3d weapon too (there is an other blog post showcasing this!) Furthermore, I’d also just completed a project with the awarding organisation I work for, which maximises my available time further and clears more tasks off my Trello! It also felt like a lot of the more unknowns were getting ticked off which was really good.
The image below shows my revised production schedule from the previous blog post. I’m band on schedule with the 3D work complete and now moving onto rigging. This is the next major task which I’m not sure how long it will take, however, I have good research to support myself and I’ve allocated almost 2 months for this. This does include a 3 week break for my summer holiday and a trip to ArcTanGent festival, which I absolutely feel like I deserve! I am hoping that this doesn’t take this long and I can start animation earlier, however, like with everything else I really want to achieve professional outcomes, which I feel I have been. So all in all it is going well and feels to be on track. The final deadline is actually January 16th, however, I have the written reflection to complete too which will reference my development blog posts and I’d like to keep some leeway time in there too!
Research - UV Unwrapping
The Jensen and Sanden (2025) retopology course also included a UV unwrapping chapter so I thought I’d see what I could learn from this. I was already confident with UV unwrapping so I wanted to see if there were any new nuggets of information I could gleam. These are the notes I made:
Initial Projection
Apply a planar projection across the entire character to create default UVs as a starting point.
Defining UV Cuts
Use the core anchor loops as guides for placing UV seams. This is where if you retopologised your character well it makes your UV unwrapping process so much easier!
For cavities such as the eyes, mouth, and nostrils, position seams slightly inside these areas so they remain out of sight in the final texture.
Seam Strategy
Make a conscious trade-off between fewer seams (leading to greater UV distortion) and more seams (reducing distortion). Decide what approach is optimal for each UV shell based on its geometry and expected texture detail.
Distortion Checking
Use a UV checker texture to identify and evaluate stretching or distortion. One was included within the course!
Minor distortion may be acceptable depending on your texturing approach and the visibility of the area.
Unwrapping Tools
Ensure you are using the Unfold3D Engine for unwrapping.
After creating a UV shell:
Perform the Unfold action.
Use the Optimise function with iterations set to 10, this will flatten the shell and improve distribution to create a perfectly flat UV shell.
Specific Areas
Hands and feet: Split into two shells (top and bottom) for more efficient layout.
Ears: Similar to hands, separate shells with one for front and back.
Head: Consider separating the back of the head and the face to allow the face shell to relax more and separate into distinct shells for better UV management.
UV Layout
Use the Layout action to automatically pack UV shells into the 0 - 1 UV space.
Recommended settings:
Pre-shell rotation set to horizontal
Scaling: Set to preserve 3D ratios, so UV shell size corresponds proportionally to the size of the 3D geometry.
Material and UDIM Considerations
While UDIMs are commonly used for film assets, for game assets:
Use multiple materials if necessary but aim to limit them, as each material increases draw calls which can inhibit performance.
My plan is to separate UV shells for the head, body, and eyes, each with their own material. This will maximise the resolution. The eyes are important because they are the window to the soul and they along with the face might be seen in close ups, therefore, these need to have their resolution maximised. The body will be fine with just one.
These notes weren’t anything super revolutionary to me, however, it was good to get a refresher and see how retopology links to UV unwrapping. It was also good to see how some of the more complex areas like the face, hands and ears were unwrapped too. I now felt confident to start that my knowledge was good and I was taking the right approach.
UV Production
This section shows my UV unwrapping process. It will not show every step since it is a very fact process of selecting seams; creating cuts, unfolding and optimising. I will summarise each section and discuss what is happening!
The image below shows the UV unwrapping for the head. As mentioned, previously I was going to separate the character into 3 UV maps: head, eyes and body. You can see how I’ve got the character halved that will be mirrored later. It looks really neat and the retopology definitely made this really easy to select the loops and mark the seams. You can see the UV checker applied too that I’m using as a visual guide to check any distortion alongside Maya’s standard distortion tools. This process is very therapeutic and in total took less than two hours for all shells.
This next image shows the body UVs. There is a few slightly funky things going on here! The cylinders create slightly curved UV’s and I’ve straighten these shells, which helps the shells take up less space. There will be some minor distortion, however, the pay off is increased resolution for all shells so it’s worth it! Again you can see that the character is halved and some things will need duplicating like the thorn. This will make it really easy to texture as well, because the UV shells are stacked when I paint on one it will texture both. Again another really clean UV map with minimal wasted space. I am adding a slight shell and tile padding so that none of the shells are touching each other or the sides - this can make things slightly cleaner and easier when texturing!
This next image shows the full character fully unwrapped with the UV checker applied. The head has a slightly higher resolution as shown by the smaller squares, however, this was expected due to being a smaller part of the body. Since the face is more likely to fill the screen in a close up it’s important that this has a high resolution. The UVs look good and this was a really painless process thanks to the good topology created in the retopology phase. A success overall! Next I would need to prepare the high and low models properly for baking.
Baking Preparation
It is super important to prepare your meshes for baking to prevent any errors in the bake. Your low poly needs all the edges set to soft since the normal data will come from the high poly. Each low and high mesh needs to be perfectly overlapped to bake correctly. The pivot points of the high and the low of each element need to be identical so that the baking system reads the meshes as overlapped. The history needs to be deleted and the scale needs to be frozen so that both high and low meshes match. The rotation and translation values need to be the same in addition to the pivot points matching - this is something I was worried about as I had played around with the scale a little. I needed to set up my materials as described (1 for the eyes, head and body). I also needed to rename everything and add the suffixes ‘_low’ and ‘_high’ so that when the bake happens it only bakes each mesh onto itself without considering other meshes. This makes the bakes a lot cleaner and prevents artefacts.
If the pivots points or transforms didn’t match between the high and low I had a few options. I could snap the pivot points to zero, however, since the pivot points aren’t inside the meshes this could cause issues. I could centre the pivot on one mesh and research to see if there is a way to copy the pivot point from that mesh to the corresponding mesh. I also wanted to see if I could research a way to centre the pivot to the mesh and then make the transforms of that new pivot be true to the world. I found this video below by Benjamin Gallegos (2019) which showed how you can use the ‘modify > bake pivot’ action to make a pivot point of an object true to its global location. This is a really handy action and will make the process of preparing models for baking much more accurate and easier!
Next I wanted to look at how to copy the pivot from one mesh to another. I found this video below by Laura Jolly (2023) which showed a very long winded method of doing this. However, one of hte comments noted that you can use the modify > match transforms > copy pivot action to match the pivots. You can then use the bake pivots action to get the global transforms. At this point both pivots should match.
The image below shows the preparation of my low poly mesh - complete with all mirroring. The thorns were a little awkward since the pivots and transforms didn’t match, however, I imported a them again from the high poly in Blender and then used the bake pivot techniques to position the thorns. Some of these needed some manual tweaking, however, they didn’t need to be completely exact because the master thorn would be the one that would be baked. Everything else I just grabbed all the pivots, moved them to the origin and froze the transforms. I then applied materials to the 3 areas I wanted : the head, body and eyes. I renamed everything appropriately and included the ‘_high’ and ‘_low’ suffixes for the meshes. Now I had a high and a low mesh that could be baked together.
This was the first bake and although there are clearly some issues, the body has baked well! The detail from the body sculpt has came in well to clearly define the muscles and essentially makes the low poly look like the high poly. However, lots of stuff hasn’t baked at all. You can see this in everything that is dark grey. This typically means that something is wrong with the setup, for example: names, pivots, transform data. So I wasn’t too worried at this point.
The image below shows the normal map and you can clearly see that it is incomplete and the bake hasn’t happened. This is better than the bake working but then not rendering correctly so I was confident it can be fixed.
I tried a few re-exports and modifications of bake settings but nothing really changed. I tried ticking ‘apply diffusion’ which appeared to solve the problem, however, I noticed that no actual detail transferred between the high and low. All it had done was stretch out the default normal value across the texture.
In Maya I noticed that a couple of objects had multiple UV sets. I renamed these so that all were the same and I deleted the multiple sets so that it was all on one. However, when I baked I still got the same result.
I started to research online to see if anyone else had any similar issues. I found this reddit post by tyingnoose (2023) which talked a lot about overlapping UV’s being an issue with baking. Therefore, I was certain that the issues were linked to my optimisation techniques. This got me thinking, what if I duplicate objects rather than mirroring them? For example, the hands were one mesh that was mirrored, with a pivot at the origin - If I maybe separated these into 2 meshes, possibly this might work!
When I did this I managed to make progress! The hands, arm and pauldron are now baking properly. I did notice that the pivots needed to be centred to the object and I was running into issues when we reset the pivot to the origin. Next I would attempt to roll out this method to the rest of the model.
I thought I had everything set up correctly with names, pivots, transforms etc. However, I still wasn’t getting a complete bake. It was becoming a little frustrating because technically everything seemed to be perfect, yet a couple of areas still weren’t baking like the eyes, pauldron gems and the thorns. It was also frustrating because a lot of the mesh is not working yet some things aren’t! I’d need to do a little more research!
18/07/25
I found the below video by 3D Sorcery (2019) that showed the process of ‘exploding a mesh’ for baking. The concept means that each object is moved to its own space with no overlapping so that it doesn’t bake onto itself. This is an older technique and I don’t know why it was being used with Substance since Substance can bake by mesh name which essentially does the same thing. You can even turn ambient occlusion for intersection with other objects off if you don’t want AO where they intersect. However, I also saw how they reimported the mesh after the bake. This got me thinking, what if I delete all the duplicates and mirrors, bake and then reimport the mesh that is mirrored. Perhaps this might work rather than trying to get it to bake with the character fully complete.
I created a ‘no bake’ group so that I could isolate the extra objects, bake and then merge them back in.
The image below shows what the low poly mesh now looks like.
It worked! The image below shows the completed bake with all parts baking correctly and looking great!
This next image below shows the low poly mesh reimported, which also looks correct! The baked data is automatically appearing onto the other half because the UVs are overlapped. Wow, this feels like such a weight has been lifted as I’d spent a decent bit of time troubleshooting this and it felt amazing to solve this issue. The bake looks fantastic, turning my low resolutions mesh into something that closely resembles the high poly mesh! Now I can begin properly texturing this asset.
I used the below video (Stu Lloyd (CG Stu, 2024) to help manually fix some baking errors and artefacts that I noticed on the model. They were minor artefacts on the back gem and thorn, caused by some small gaps in the low poly mesh. They created some banding in the AO that looked a little unsightly. They created some process was to essentially expose the AO map and paint on top of this to fix any small artefacts in the AO and normal maps. The clone brush was used to effectively sample correct texture data and paint it across to smooth out these maps.
The two images below shows the banding on the right image and the smoothed detail on the left image. Again this is fairly minor but my improvements have reduced the contrast on these issues should they be seen later.
Now that the baked maps were sorted I was going to apply base materials to the character so that each section was isolated. Isolating each section was important so that any paint or fill layers I put inside them would only apply to a particular area of the mesh. I did this by creating a folder for each section and then masking the full folder. Then any layers inside would be affected by this mask. To get the correct base layers I colour picked directly from the concept I created, shown in the image below.
Most sections were easy to mask by selecting faces, however, a couple or areas were more difficult to isolate and required the mask to be manually drawn on. The image below shows two examples of these types of masks, the tongue on the shoe and the embossed toe area on the shoe. There were also other areas like the finger nails, gold lines on the suit and the heal of the shoe that also needed this method.
To improve the paint strokes I blurred the edges of the mask to make the brush strokes blend together a little more; then sharpened this to make the edges of the mask more defined and then finally applied a levels filter which helped me sharpen them further.
This image below shows the base colours applied to the body! It’s now starting to get really excited because the 3d character is looking closer to the concept! Since the character was stylised it was already looking great just with the base colours and AO mixed together. I didn’t want to add too much detail because I wanted to keep this stylised look.
This image below is the same as the one above but from behind.
I noticed that where the thorns touched the gauntlet there was no AO so I went back to my AO fix layers and added a soft AO around the base of the thorn and then a soft AO pass around the gauntlet where it touched. Minor tweaks but it helps keep the design and quality consistent!
I wanted to use a ready made eye asset to improve the speed of creating this character and also ensure that the eyes were high quality. I’ve mentioned this before but the eyes are the window to the soul so it is important that these look good. I used the Game Ready Eye (2025) 3D asset, however, this was a little too realistic with an embossed cornea that didn’t fit my model. So instead of using the full asset I just used the texture files. I also modified the base colours applied to map to tint it from green to blue which I thought would work better with the character.
I was able to simply plug the textures into the correct channels in Substance painter to achieve the outcome shown in the image below. This looked good and saved me a lot of time creating a high quality eye myself! The detail in the iris was looking great - this had colour and normal detail which gave it a high quality appearances.
At this point I’d now got all the base colours applied to all parts of the model, as shown in the image below. Next I needed to work on the detailing - the main thing that was missing was the gold lines on the suit, it felt really lack-lustre without them!
Below shows 2 images of the character with the gold suit lines applied. I used a mask to create these and added some height so that it looked like these were embossed. It was tricky to create these since it relied on my brush strokes. However, I improve the quality of my brush strokes by using the distance command to smooth out the lines, as well as using the shift + left click method that draws straight lines between two points. The next challenge was to match the concept - although the concept looked great, when I first applied the pattern from the concept it felt disjointed. This was because the lines on the upper and lower suit didn’t line up and this looked super off in 3D. I altered the pattern slightly so that it looked like it flowed together across the hips and up the back. I was super happy with this outcome - the character looked almost exactly like the concept now!
Next I wanted to add some detailing to the crystals to make them feel a little more crystal like. I combined a few techniques to add some cloudy shadow marks; dark cracks and then light cracks to build up a material that looked like the one shown below. I also applied some extra shadow and highlights manually to accentuate the 3D forms. I wasn’t sure if this was a little too detailed for the style of the character, however, I could tweak this later once it all started to come together. The image below also shows so minor detailing to the suit. I used a weave texture fed into the colour and roughness Chanel’s so that it looked like the material was a fabric. This looked great - very subtle but was really selling the space fabrics look to this!
The image below shows the textures so far! I was about to stop work for the day so I wanted to capture my progress. It was really great to see the character come together and it was really useful having the concept to guide me as I brought the textures to life. It was looking really strong because the style was matching the concept - it still needed some detail but not too much! I wanted to keep that cartoon-like appearance but not have it look quite as flat.
I couldn’t help myself to see what it looked like rendered and it looked even better with light and shadows applied to a higher quality. What was really, really noticeable now was the skin lacked life and depth. I would need to do some research tomorrow at ways to make this feel more alive and fake some subsurface scattering. The armour and suit was actually looking really good even with the simple base textures on. I really love how there is a clear contrast and separation across the design, for example the red and the green working well as complementary colours on the hair and head as well as the separation in the browns as analogous colours. Progress today had been great and I was hoping to finish everything when I next worked on the texture.
21/07/25
I did some research and found this video below by Abe Leal 3D (2023). This looked good because it replicated a hand painted art style, similar to textures in World of Warcraft (2004) which creates a super stylised look to the characters. It also focussed on skin and how to get life or fake sub surface into the skin which will create great variation and make the character feel more alive. The techniques it uses are fairly simple by building up shadow and highlight layers constrained by the texture maps like thickness, curvature and ambient occlusion. This then filtered with blurs and levels to control how spread or tight the effect is. The last key effect was to use blur slope to create a blotchy, hand painted effect to make the texture feel really stylised. This should be absolutely perfect for my character!
Below shows this technique applied to the skin on the face. It keeps that same green tone but feels a lot more varied and alive. The lighter parts on the nose, lips and ears mimic subsurface scattering really well to make these parts feel thin and fleshy. I’m really happy with this outcome - it actually makes the eyes fit in with the rest of the model more because they are detailed and there’s now more detail in the rest of the skin. Next I’ll apply this effect to the skin on the body - I can do this by making a smart material and then tweaking the parameters.
The next image below shows the material applied to the hand and arms. It looks great but now the armour is looking a little too clean. Next I think I’ll try applying the material to the rest of hte base colours but removing the ‘life’ layers. It’s worth noting that when you make the material a smart material it automatically pulls the correct mat’s thickness/ curvature etc. maps automatically. This makes the process of applying to different parts of the body much easier!
The next image below shows this material applied to the hair and eye brows.This makes everything fit together a lot better and now the hair feels like it belongs in the same world as the skin. It is subtle but really pulls the design together. I didn’t apply this to the teeth, these needed to look a little smoother so I thought they would work well as they were. Next I’d apply this to all materials on the body.
This next image below shows this material applied to all other parts of the body with some minor modifications. It also shows that the finger nails are properly masked out now. The modifications typically refereed to the base colours but, for example the metal had some light purple and green clouds subtlety blended into the colour - this adds an element of colour variation and realism whilst still using blur slope to make this stylised. The boots also have some subtle leather cracking detail to help these feel more like a leather material. I honestly absolutely love this final look to the character. It looks super stylised and unified together in its style. I feel this looks super professional and I’m really happy with this journey.
The image below shows an emissive map that I created for the crystals. I don’t know whether I will use this, however, being able to animate these in and out could be really beneficial so I thought I’d create the map.
Renders
I created the renders below using Substance’s iRay rendered and composited them together in Affinity Photo. Wow! It looks so good presented like this! I’m really happy with the journey of this character and the quality I’ve managed to achieve. It looks highly professional and I can’t wait to get this moving!
Staff Weapon Development
19/07/25
I felt a little pressured by time so I wasn’t sure if I was going to create this. However, I needed to go with my partner to see my Mother in law over the weekend so thought this might be a good chance to take my laptop and try and create the weapon. I thought the concept looked really simple, however, there were some really difficult shapes that I’d designed!
Firstly the curves on the centre handle area were super tricky to get right. I thought I’d create 2 cylinders and use one to Boolean the other and then run a bevel over the hard edges. The problem here was curves happening in three dimensions created some triangles and tight topology that meant the bevel wasn’t applying nicely around the edge. I had to rework the topology to even quads to get a good flow. It wasn’t perfect but I managed to get it looking as good as I could.
The next challenge was the very end of the staff where there was almost a half moon gem in a metal holder. This looked great in 2D but was hard to translate to 3D. This was because the for suited itself to a narrower form, which then didn’t work well with the cylindrical form. When I made it match the cylindrical form it then looked overly big and heavy. I wanted the weight to be on the top. I almost gave up at this point as I couldn’t find a good way to create this shape when I decided to ignore the concept and create a simpler design. This is seen on the very bottom of the staff. It looks great, simplistic and understated, even though it doesn’t match the concept exactly. However, this was the right decision as it allowed me to press on and create the rest of the staff that had enough detail in it.
The image below shows the final high poly. It turned out great in the end! I loved the crystal on the top that had so great ridges and lines that distinguished it from the rest of the staff. The crystal was created using sculpting, whereas the rest was traditional hard surface modelling techniques.
Staff Retopology
21/07/25
Retopology was a fairly simple process. I applied the modifiers in Blender; exported to Maya and then simply removed a lot of the edge loops to reduce the poly count. Where a bevel had 8 loops I would cut these down to 3 so that there was one at the centre and one at the start and end of the bevel. On the cylindrical forms themselves I removed every other loops to cut these down polys down by half but still keep a lot of the forms. This took the cylinders for 32 to 16 edge loops. I removed all the small indents on the top - these were small enough that they would just simply bake on. I Quad Remeshed (Exoside, 2025) the crystal on the top to get a lower poly asset that still held the silhouette of the high poly mesh. Lastly I optimised the mesh by deleting duplicates and halving meshes that could be mirrored. This would optimise the UVs the same way as the character.
Staff UV
This was extremely quick to do! Cylindrical shapes tend to just need one cut to allow them to unfold and then have the caps separated. Even the crystal was a cylinder with one cut from top to bottom and one at the bottom to remove the base. I applied this technique across the full model to unfold and optimise all the meshes. Everything neatly packed into the 0 to 1 UV square. Nothing really extra of note here - everything has gone great!
Staff Texture
The image below shows the successful bake. I used the same techniques as last time! I baked with the optimised version, went back to Maya and mirrored/duplicated everything and then reimported the mesh. This worked a charm and the bake came out great. I’m particularly happy with the little rectangular indents on the top baking in with almost no geometry there. This looked great!
To texture this asset I used the same materials that were on the body (exported to smart materials) and then applied them directly here. This keeps the style consistent across both assets so that they look like they belong in the same world! I was happy with the outcome, particularly with how little time this took to apply!
As I did with the character I created an emissive map that could be animated on and off to create a glow. This was more important for the weapon because I imagine this is how the character would charge and attack fuelled by it’s energy!
The image below shows a render of the staff. Everything appeared to be working well, however, it needed to be seen with the character to make sure it all worked together cohesively.
Below shows the render with the character’s staff weapon I also created alongside making these textures. Everything looks cohesive and works well together. I also like how this is composed the same way as the concept art!
Conclusion
Honestly, this has been such a journey to get to this point. I’m not typically a character artist and have never made a character using a professional pipeline before. I’m so happy with the quality of this character and how closely it resembles the concept. The face is a little different to the concept, however, this was the first thing I sculpted when I was getting used to the tools and it looks good in it’s own right - just a little older and more mature! I feel the concept was key to laying the foundation and getting to this point - I was able to use it throughout sculpting but also during texturing too. Research has enabled me to succeed at each point and has enabled me to learn new skills, push quality and problem solve which has been fantastic. I’m so excited to start rigging and getting this character moving using this same research driven approach to achieve equally high levels of professionalism in the rig.
It’s been around 2 months part time to get here with about 5 months left to go - I feel like I am on track, however, will feel more confident once the rigging is complete and I start animation. Creating my own character was a step that I didn’t need to do, however, I feel its going to pay off in the long run because I’ll have a unique character that no one else will have on their reels. It also allows me to explore the animation principle appeal more by creating a bespoke personality that I can further enhance through its animations. It’s going to be awesome getting this guy moving and I’m so happy that I’ve achieved a 3D character that looks professional. I was worried that I would have struggled with one step that would have a knock on effect to the rest, however, that hasn’t been the case.
Onwards to rigging!
References
3D Sorcery (2019) Explode Baking Method with Maya and Substance Painter. 17 December. Available at: https://youtu.be/7Ff9V4H-cfU (Accessed: 22 July 2025).
Abe Leal 3D (2023) Stylized Textures Tutorial | Hand-Painted Style in Substance Painter. 27 September. Available at: https://youtu.be/cT5PJKMPTdg (Accessed: 22 July 2025).
Benjamin Gallegos (2019) Undo Freeze Transforms in Maya - Ben's Quick TIps (Bake New Pivot). 1 September. Available at: https://youtu.be/rp7Ng3obATE (Accessed: 22 July 2025)
Blizzard Entertainment (2004) World of Warcraft [video game]. PC. Irvine, CA: Blizzard Entertainment.
Exoside (2025) Quad Remesher. Available at: https://exoside.com/ (Accessed: 19 June 2025).
FlippedNormals (2025)Game Ready Eye[3D asset]. Available at: https://flippednormals.com/product/game-ready-eye-8016 (Accessed: 22 July 2025).
Jensen, M. and Sanden, S. (2025) How to Retopologize a Full Character. Available at: https://flippednormals.com/product/how-to-retopologize-a-full-character-159 (Accessed: 15 July 2025).
Laura Jolly (2023) Copying Pivot Point from One Object to Another in Maya. 18 November. Available at: https://youtu.be/kk3oRTPe9vE (Accessed: 22 July 2025).
Stu Lloyd (CG Stu) (2024) Paint On Baked Maps To Fix Issues | Substance Painter. 1 May. Available at: https://youtu.be/oRkgEuGKPtw (Accessed: 22 July 2025).
Tyingnoose (2023) Weird gray spots after baking model in Substance Painter [Reddit post]. 6 November. Available at: https://www.reddit.com/r/Maya/comments/17tentk/weird_gray_spots_after_baking_model_in_substance/ (Accessed: 22 July 2025).