After some time working using a PBR workflow earlier during the year, I wanted to go back to a more “diffuse only” approach on this project. Because it is always super fun to work with unlit textures. When I’m painting that way I don’t feel restrained by my normal map so I can go crazy and add details everywhere I like.
References are super important when you are working, particularly with such a big project. I always take some time at the beginning of a character to gather them to help me with every part I might struggle with. And I also keep adding new ones as the project goes along.
League of Legends, World of Warcraft and Ruined King were my main references. Those games have an amazing unlit art style. And they usually come first when I’m looking for hand-painted references.
Here’s a simplified version of my Pureref board:
The first thing to do is of course a rough blocking of everything. I try to stay very low poly and keep the different parts of my character separated, so I can focus on what is important.
Now that everything is in place, I merge my subtools, use Zbrush dynamesh and do a first pass of cleaning. Once I’m happy with the result, I can go and add some details after a Zremesh to have a decent supporting topology.
As you can see, the final sculpt is quite simple. This workflow does not require it to be very detailed. Since I will not be baking a normal map.
And because I’m going for something quite low poly on this project, I prefer to keep the small details (such as the scales) for the texturing.
That way I won’t lose too much time on the sculpting part.
So why am I not modeling the low from the beginning in 3DS Max?
- It’s easier for me to block out everything in Zbrush before working on the low. It’s helping me get a clean and strong silhouette with good primary and secondary shapes. It is also super important to stay consistent on this part.
- It allows me to bake the first Ambient Occlusion map to use as a base to start my painting process. That way, the lights are already blocked on most of the characters. Also, some details are faster to do in sculpting now rather than later in texturing (e.g. ropes, simple wood base for the harpoon).
I did the retopology in Blender with the help of some plugins like “Retopoflow” and “Speed Retopo” because those two are great tools that I prefer to use instead of 3ds max.
When the biggest part is done, I finish fixing and cleaning the low poly in 3ds max.
Small tip, if you don’t know how many triangles to aim for with your final model, choose a game art style that you like and want to match and take it as a reference.
Here I tried to have a model that could fit in League of Legends and ended up with a 12k triangles character.
For the UVs I separated it into 2 maps, one for the objects and one for the body.
I could have fitted everything in one map by using a more tileable texture on the ropes, but I wanted to have the light affect different areas, so I chose to be a bit more greedy with my UVs on this part.
Still, I tried to duplicate and mirror other parts of the character, so I could gain some UV space and working time. Because everything that is duplicated or mirrored will be something less to paint. So if it’s not impacting the look too much, you should definitely do it!
Of course, I tried to straighten my islands as much as I could while avoiding too much distortion.
Finally, I tried keeping my UV islands as big as I could, because it is much easier to work on something when everything isn’t split in a ton of pieces.
For baking, I do it in Marmoset Toolbag 4. Those are the maps that I baked and will use later.
There’s also a “contact AO” that I bake in 3D coat using my lowpoly directly, so that I can have proper contact shadows between my low poly pieces. In my opinion, 3D coat is doing a better job than Marmoset on this part. It is also faster and easier to do it that way.
You can do so by going to the “Textures” upper menu and clicking on “Calculate Occlusion”. Here’s the window that will appear, those are the settings that I used. You can play with the light count for better texture quality. I would not recommend going higher than 4096 because your software will probably freeze or crash.
Composited Ambient Occlusion
Before starting to paint, I like to have a first base created by using all these maps. I like to mix those together and have some kind of grayish final result. I play a lot with the opacity and blending modes of my layers to get what I want.
Here’s how I compose my base map with only 5 layers:
- First, I use all the Ambient occlusion maps coming from my baking process (base AO, AO with floor). The contact AO was added later in the texturing process.
- To get a Light map, we get it by using the green channel from the Normal Object map.
To do so, import your Normal Object map in Photoshop > select the layer > go to channels > select the green channel > press “ctrl+a” > press “ctrl+c” > select back RGB > press “ctrl+v” in the layers window
Doing so will copy the Green channel from the “Normal Object map” on top of everything, acting like a kind of light coming from the top and following the volume of the character
- The gray layer is a simple layer with a “Multiply” blending mode to darken everything.
- The curvature is used here to sharpen the result. It is very important to use a low opacity on this one. You want to avoid having a strong curvature everywhere. It will look bad, and you will have to erase it later.
- The fixed layer is just some paint over to fix artifacts or ugly mishaps.
For the texturing, the idea here was first to get a black & white base before going full color. This is easier for working on the volume and global lighting without having to think about hue and saturation.
Once the black & white painting pass is done, we can use some gradient maps to apply colors. This tool is super powerful because you can get some early color variations without painting everything.
Here’s a step-by-step screen where you can see the most important parts of the process:
Painting everything can be very long and tedious, sometimes you have to choose where you want to put your effort and details. Here I focused on the head. I added more scales, skin folds and specular highlights.
By doing that, I also created some contrast with the rest of the character and brought more attention to the head and mouth.
I always try to play with values by contrasting highly on the point of interest, again here it is the head and his big dangerous mouth!
Don’t Forget to take a screenshot and check the values in photoshop by turning it into a black-and-white image once in a while. This will prevent you from making big mistakes.
Adding a general gradient coming from the bottom is also super important to keep our eyes focused on the upper part.
Adding some cast shadows helps to bring your character to the next level and make it believable
And because I am not working with PBR; cast shadows won’t be calculated, so I have to paint them!
Also, keep in mind to paint the shadow’s edges a bit softer. This will make it feel more realistic. If you are interested in why, you can find great 2D painting resources on the internet, be curious!
Finally, here’s the full texturing process! As you can see the idea is that I came from big simple lighted volumes and then I added some secondary shape details (the biggest scales, skin folds, scars) and then tertiary ones (small scales and specular highlights).
When everything is finally painted, I always finish with a color dodge layer to fix one last time the overall global lighting.
The super rig that I used to animate him with was made by my friend Max André! His rig was so nice to animate, don’t hesitate to check his profile for more information about it!
Animation really helps to bring a character to life. This is the first time that I animated one and I have to say that is something that thrilled me a lot!
This Idle animation is quite simple, I created a simple loop of 4 sec with him breathing. Duplicated it 3 times to get a 12-sec animation. And in the second loop, I implemented a small idle breaker with him turning his head to make it feel less boring.
All the renders were made in Marmoset Toolbag 4, (except the sketchfab scene that is separate.)
Because this character is unlit, there aren’t many settings to tweak. You can see the screenshot below the materials settings. As well as the post-effects that I played with.
However, a very important post effect that I used is the “Sharpen” one. Sometimes the textures can feel a bit blurry in marmoset, so using the Sharpen slider helps to bring back the details that could have been lost and give better visibility of the character overall.
I also implemented dynamic shadows on the ground with a single top light. But for that, I had to light the ground using a simple material so that the character’s cast shadow would work.
Otherwise, when I don’t have an environment, I use a shadow catcher.
Finally, I added a bit of ambient occlusion in the render settings, just to have a dynamic ambient occlusion that would follow the animation.
This was an interesting project that allowed me to experiment with a lot of things. Even though I am no environment artist or animator, it was still super fun to make this small scene as well as the character!
Thank you so much for your time and attention on my breakdown! I hope this will help you in some way on your future project!