Axill TNT talked to us about the Shady Old Lady project, discussing modeling, setting up the hair, eyes, and outfit, and texturing wrinkles using Substance 3D Painter, ZBrush, Maya, and Marvelous Designer.
Introduction
Hi, My name is Asill Tantush, though I’m better known as Axill TNT on social media. I’m a Senior Character Artist from Libya, based in North Africa. I’ve been in the creative industry for about 10 years, with six of those years dedicated to the game industry. Over the course of my career, I’ve had the privilege of collaborating with prestigious clients in both the video game and film industries.
Some highlights include my work at VOLTA as a Concept Artist and Character Artist on Population: ONE, Meta Quest 3 introduction, and Dungeons & Dragons. Additionally, I contributed as a VFX artist to the film Wetiko.
Inspiration & References
This character started as part of a side project for an exhibition. My goal was to capture a slice of life – a fleeting moment of an unimpressed expression, one that speaks volumes without uttering a single word. It’s the kind of face you make when someone tells you they got back with their ex for the fifth time or when you accidentally crack an inappropriate joke in front of your grandmother. I wanted to evoke that universal feeling of being silently judged, conveyed through unique faces and diverse experiences.
This particular character, Shady Old Lady, is directly inspired by my friend’s grandmother and her wonderfully shady attitude. Her personality was a perfect muse for the character’s demeanor.
Aesthetically, I drew inspiration from Dorothy Zbornak from The Golden Girls. Growing up, I loved watching the show and admired Dorothy’s dark humor, sharp facial expressions, and witty comebacks. Creating this character was also a way to pay homage to her timeless charm.
The original concept and mood board:
Modeling Face & Body Sculpting
I began with the face because it’s the focal point of the piece and can make or break the character, especially since this is a portrait. My goal was to give her a classy and feminine feel. I sculpted and modeled the face using ZBrush, my preferred sculpting software. To save time, I don’t start sculpting from scratch anymore. Over the years, I’ve built a library of base models that I’ve created throughout my career. Starting from a base not only boosts efficiency but also helps me avoid art block.
Using symmetry, I first focused on blocking out the basic shapes of the face without worrying about details. At this stage, I don’t mind experimenting or going overboard, as I usually save multiple versions of my project to track progress or pivot if needed. Topology isn’t a concern at this stage – I refine that in the later phases.
After finalizing the shapes in a neutral position, I began refining her expression. I focused on shaping her eyebrows, lifting them slightly, and defining the nose and mouth to convey her personality. For the eyes, I added two spheres as placeholders in the eye sockets.
For the clothing, I used Marvelous Designer to create the scarf and sweater. I modeled them directly on a base mesh, using reference images for accuracy. Once the designs were finalized, I imported them back into ZBrush for retopology, UV unwrapping, and preparation for texturing.
Eyes
For the eyes, I always work with three distinct layers: the sclera, the iris, and the pupil. Additionally, I include a separate “eye wet” layer to represent the liquid sheen, giving the eyes a more realistic appearance. Rather than creating new eyes from scratch for every model, I prefer reusing an eye model I crafted years ago. This approach saves time and allows me to focus on tweaking the texture, shape, and finer details to suit each character.
Maya Setup
After completing the previous steps, I exported each element separately in OBJ format to Maya. The first thing I do is scale the model and set up the environment. I always start by naming and setting up the project to ensure a clean workflow. Since I use Arnold for rendering, I set up a skydome with an HDRI for basic room lighting as a starting point.
Achieving realistic subsurface scattering for skin and hair requires the model to be scaled correctly – not too big or too small – so it interacts accurately with the light source. To determine the correct dimensions, I created a box with a scale of 27.000 units in all directions, which serves as a reference for character portraits. I then scale the head to roughly fit between the top and bottom of the box.
Next, I added a camera and set its focal length to 108, which, in my experience, provides the best depth for portrait renders. I always perform a test render at 1K resolution to evaluate the setup before moving forward.
Asset & Accessories Modeling
For this model, I initially didn’t have a concrete plan for what type of accessories she would wear. To refine the concept, I gathered additional references and ultimately decided on diamond pearl earrings paired with red Ralph Lauren glasses. I felt these items would perfectly complement her attitude and personality.
I modeled the glasses in Maya, paying close attention to their structure and style. For the earrings, I used a free model from Sketchfab, which I later edited to suit the character’s look and feel.
Retopology & UVs
Before exporting all the scaled assets from Maya back to ZBrush, I addressed the topology. For the head, I began by selecting it and enabling the Live Object feature (the magnet icon in the top left corner). This allowed all geometry to snap directly to the head model. I then used the Quad Draw tool to draw each polygon manually, a process that can be tricky depending on the complexity of the model. For guidance, I recommend referencing images of video game character face topology, as their patterns are often optimized for animation and can be very helpful.
Once the topology was cleaned up and I was satisfied with the polycount and flow, I moved on to UV unwrapping. To start, I assigned a Planar Map to the model. Using the UV Cut tool, I made seam cuts around the back of the head and inside the mouth, creating an edge loop for proper unfolding. After the cuts, I clicked Unfold in the UV Kit. This process can take time, so I used the checker pattern to ensure the unwrapping was accurate. I made additional adjustments, relaxing and flattening important areas like the nose and front of the face for clean results.
For the sweater, I followed the same process. However, for the scarf, I simplified the workflow by exporting it back to ZBrush, using ZRemesher for automatic retopology, and then re-importing it into Maya for UV unwrapping, following the same steps.
Face Details
Detailing the face was a delicate process, as creating an elderly character requires adding numerous wrinkles and fine details without going overboard. To achieve realistic results, I employed multiple techniques, starting with real human skin maps from the 3D Scan Store and Texturing XYZ maps.
I began by applying a Texturing XYZ map to a basic plane and wrapping it onto my model to establish the primary layer of skin details. After this, I cleaned up any imperfections using the Morph Brush in ZBrush. The workflow is fairly straightforward: first, store a morph target and create a new layer, then project the details. This process can result in artifacts, particularly in challenging areas such as the eyes, ears, and mouth. However, having a stored morph target made it easy to clean these up with the Morph Brush.
To fill in any remaining gaps or inconsistencies, I used custom brushes designed to replicate similar skin textures. As I progressed, I increased the model’s subdivision level to add more intricate details. Finally, I emphasized the deeper wrinkles by using the Curve Brush.
Sweater & Scarf Texturing
For the sweater and scarf, I manually projected wool and fabric details using a JPEG Displacement Map as the base. To apply these details, I used the Layer Brush in ZBrush. Then, I added a subtle surface noise layer to blend the detail.
Exporting to Maya
Now that all the assets are finalized and ready to be fractured, it’s time to export them. I use the Multi Map Exporter in the ZPlugin menu. I select the displacement, cavity, and export mesh options, set the subdivision level to 2, and then click Create All Maps to complete the process.
Face Texturing
I started with a solid base for the face, thanks to the Texturing XYZ maps. These maps often require adjustments to fit the specific character.
To customize the maps, I edited them using Mari and Photoshop. In Mari, I refined the details and ensured proper alignment with the model. In Photoshop, I removed features like the default eyebrows, added warm tones to bring life to the skin, and applied filters for additional texture enhancement. This process allowed me to create a more natural and polished look tailored to the character’s personality.
For the skin shader, I used the AI Standard Surface Shader since Arnold was my rendering engine for this project. I started by replacing the current shader with the Skin Preset to focus specifically on adjusting the subsurface scattering (SSS) values.
Initially, I adjusted the Subsurface Weight and changed the Subsurface Color from pink to gray, setting it to an RGB value of 0.180. This allowed me to clearly observe the subsurface scattering effect during the tweaking process.
Note: Achieving accurate subsurface scattering is critical for realism, and ensuring your model is scaled to real-life proportions is key. The head of my model measures approximately 24.5 cm, which matches the average size of a real-life female head.
There are two parameters that significantly affect the scattering effect: Scale and Radius. The Radius controls how far each RGB channel scatters light inside the model. By default:
- R (Red): 1.0;
- G (Green): 0.3;
- B (Blue): 0.1.
The default red channel value of 1.0 represents light scattering 10 cm in depth. Since light typically scatters about 1.25 cm into human skin, I adjusted the Scale to 0.13, effectively scaling the scattering depth to a more realistic level.
Additionally, I fine-tuned the RGB channels to achieve a more natural look:
- Reduced the Red channel by 10%;
- Increased the Green channel by 5%.
This method yielded the most realistic results for the character’s skin.
Then I connected the Specular, Specular Roughness, SSS, and Albedo maps to their designated spots in the shader. To ensure the setup was working as intended, I performed a series of render passes at each stage of the process to evaluate the results and make any necessary adjustments.
Additionally, I created a Coat Weight Map in Mari and then set the Index of Refraction (IOR) to 1.45 to mimic the effect of a thin layer of oil, enhancing the surface’s specularity.
For the scarf and sweater, I connected a Bump Map to the geometry and used Displacement Maps with wool and fabric textures. I adjusted the UV tiling, added some sheen, and tweaked the colors to achieve the desired look.
For the scarf specifically, I used a pattern texture I found online that had a sophisticated, fancy design.
This process involved a lot of trial and error. Achieving the perfect result requires experimenting with settings rather than sticking to default values. I recommend lowering the render samples during this stage to speed up rendering and performing multiple passes to evaluate and refine the quality.
Hair & Fuzz
The hair was created using XGen during the final stages of the process. There’s nothing overly complex about it – it involved manually placing guides and utilizing some base expressions to control variation. I created as many descriptions as needed to maintain control over each part of the hairstyle.
I made three separate collections for the head:
- Base hair – for the main structure;
- Transition hair – to blend the hairline seamlessly;
- Face fuzz – to add realism and detail around the facial areas.
For the scarf and sweater, I added fuzz to mimic the texture of wool and fabric. For the sweater, I increased the CV Count significantly to give it a very fuzzy look.
Lighting & Rendering
After completing the model, the lighting setup was straightforward. I used an HDRI for the overall environment lighting and added a rectangle light positioned to face the character, specifically to enhance the reflections in the eyes and bring them to life.
The entire scene was rendered in Arnold at 4K resolution, with the samples increased to minimize noise and ensure a clean, high-quality render.
Conclusion
This project took me about six weeks to complete and came with its fair share of challenges. One of the most difficult aspects was balancing the detailed wrinkles and skin textures to maintain realism without overdoing it, as well as creating natural-looking hair with XGen. Throughout the process, I honed my workflow efficiency, improved my knowledge of subsurface scattering, and learned to be patient with the finer details.
For anyone starting out, I’d say focus on the fundamentals – anatomy, form, and texturing are key. Use references, don’t hesitate to utilize tools to save time, and remember that every mistake is an opportunity to improve. Consistency and curiosity will take you far.
You can find me on Instagram, ArtStation, and LinkedIn.