Thiago Brandao shared the secrets behind designing an incredibly detailed post-apocalyptic female character, explained the complex process of texturing, and spoke of creating lifelike facial features.
My name is Thiago Brandao. I’m from Brazil and currently living here. Since I was little, I was fascinated with the digital world, and all the possibilities and innovations present in the industry. After having done an exchange program for a year in the United States and improving my English, I managed to enter Think Tank Training Centre and study all the possibilities of creating characters for video games. Now, here I am presenting my project for the advanced term of the course.
It’s been an amazing journey, and I definitely learned a lot. I started the program on June 2022 and finished it on September 2023. As I started without any knowledge of 3D, I’m very happy with all the results I was able to accomplish so far. However, there's still a lot to study and improve, but I am always happy to learn more new things.
For my advanced term at Think Tank Training Centre, I wanted to push all the workflows and techniques I learned so far. So, I created a realistic character while maintaining good optimization for real-time engines. For the project, I chose this concept by Ningbo Jiang that caught my attention.
I started looking for references on all parts of the concept, all kinds of clothes, accessories, and textures, including references from real-life and games that inspire me with incredible quality. I tried to get as many images as possible to get a clear view of each aspect and to have more comparisons for each object in its small details.
For the blockout, I started from the body and followed the overlapping objects until I had all the objects in the scene. To make the project in the advanced term time, I focused on making the blackout as fast as I could in a way that the character would look like Ningbo Jiang's concept.
On most objects, I started with a cube or a sphere and used DynaMesh. I was shaping each object, keeping a low resolution to make it easier to control the movements with all the brushes such as Move, Clay BuildUp, and Standard One within ZBrush.
Creating the Cloth
Moving on to high poly, I started planning on how best to do each part of the character. In this part, I wanted to model each object separately. My goal was to make the objects as similar to the concept as possible.
For the clothes, I needed to model pants, a jacket, and a tank top. I created the pants and jacket in Marvelous Designer with a simple pattern and then made changes and details in ZBrush. For the tank top, I decided to do everything in ZBrush, from the base to the final part since only a part of it was visible.
When creating the leather jacket, I designed the pattern by testing different approaches until I was happy with the result and added strength and a leather fabric preset so I would get the correct folds for the material. As for the pants, I created a simple pattern and used a denim preset to get the proper folds. To turn up the jeans, I freezed the pattern on top so all the fabric could fold and accumulate on top, creating the same effect as the concept.
For all objects and accessories, I used the mixture of ZModeler and Booleans inside ZBrush and modeled some parts inside Maya, always keeping real-life scale so that later in the texture part the shaders would work without any problems.
For the main props, the pistol, the mask and the sci-fi weapon, I created the base of each one in ZBrush to get the notion of size in relation to the character, and then I created a .ztl file for each prop to add the maximum of detail on each object and work seamlessly in ZBrush. When all the high poly parts were ready, I put everything together to make a render in ZBrush and compare it with the concept. After everything was adjusted, I sent separate files in .fbx to bake inside the Substance 3D Painter.
Retopology and UVs
Within ZBrush, I exported each SubTool to import later into Maya and use as a live object to do Retopology using QuadDraw. At this stage, I wanted to make all polygons almost the same size to work with rig and deformations without problems. An important tip is to leave all parts that would suffer deformations in quads and then do manual triangulation of folds. It works better when baking. For objects that won't be deformed, I tried to reduce the number of polygons as much as possible, leaving the best shape possible.
For the UVs, I added cuts in the parts that would be hidden and edges of hard surface objects, always looking at the level of deformation of the pixels with the help of a UV Checker Map. Then I separated the objects by materials, to make a UDIM for each material, using a few UV sets while maintaining a higher texture density quality.
I wanted to make the materials look realistic. I created all the base materials and added details like stitches, dust, mud, oil and damage to all parts. Most of these details were hand-painted, so you can convey more reality to the character instead of something very general.
For the face, I used Base Scan from 3D Scan Store, using R3DS Wrap. I designed all the details which I then used to bake and to put base colour for texturing the face. I used tonal regions and added freckles, bruises and dirt to match the rest of the textures.
Because of the deadline, I wanted to focus more on the character's high poly and textures, so I ended up using XGen for the hair, eyebrows and eyelashes. This gave a really good result while letting me work on the main priorities.
I created a simple guide system and added the modifiers with some random expressions. I used a main clumping by guides to follow the shape. I created, added a second clumping by generating the amount I wanted and then created two Noise Modifiers: one to break each hair and give more realism to it and the second one to create the flyaways using the stray expression as a mask. In the final part, I just added a Cut Modifier so the hairs would be all different sizes, using a random value expression there too.
For posing the character, I created a simple rig inside Maya. I modeled the joints and painted the skin weights, and later on, used the same name convection of the joins as Mixamo to generate the controllers for the rig with their plugin. Since this project wasn’t for an actual game and wouldn’t be animated, the rig worked really well for posing but it would need more time to work for animation and gameplay.
For the renders, I used Marmoset Toolbag 4. I created a simple lighting using key light, fill and some lights to outline the character and highlight necessary parts. Using Ray Tracing, all shaders became more realistic and with correct object lighting. I added a slight depth of field effect, some grain and chromatic aberration for a more realistic rendering.
I also added some particles flying around the sci-fi gun and around the character. I created a simple floor using Megascans and opacity maps to blur the borders, so the character would have somewhere to stand on and the opacity would work like smoke around it.
I learned a lot from this project and I will definitely be better prepared for the mentorship term. I would like to thank my mentor during the advanced term, Luis Omar, all my colleagues, friends, all the staff and community at Think Tank Training Centre.
Thank you all for taking the time to see my project. I wanted to thank 80 Level for the amazing opportunity too. I hope you have a great day and would find this article useful.