3D Artist Vismay Soni shared an in-depth breakdown of the Stylized Leather Bag project, demonstrated the modeling, texturing, and rendering processes, and discussed the retopology process in Maya.
Hello everyone! My name is Vismay, I am a 3D Artist for games, doing props and environments. I am currently working as a Freelance 3D Artist at NOWWA Corp. I got interested in video games after I played Counter Strike Global: Offensive for the first time back in 2014 and I got addicted to it because of how competitive it is. And then with my curious mind, I looked up on the Internet, how these games are made.
From then, I started digging more and more about the development of video games and began exploring different software and art tools, along with various forms of game art like characters, animation, environments, and such. And after completing high school in 2019 I went to 3DSense Media School, Singapore to pursue my passion for video games. There I studied various modules of game art in which I chose Environment Art as a specialization.
The Stylized Leather Bag Project
The main goal behind this project was to learn hand-painted texturing, as it is something that I had never done before. After exploring some games that used hand-painted art styles, I decided to go with World of Warcraft and League of Legends as my main sources of inspiration. So I started gathering references of various props and environments as well as some in-game shots of WoW and LoL. While looking for a concept for the prop, I came across an amazing concept by Daniel Denissenko, and I immediately fell in love with the cute little bag he made. After getting permission from Daniel Denissenko, I started planning things out for my stylized leather bag.
Modeling and High Poly
The modeling process was pretty straightforward for this prop. First, I blocked out the major shapes of the bag with the correct scale and proportions in Maya. I also exaggerated the shapes a little bit of some pieces, like the top strap and the bag itself, to make the overall silhouette look a little bit more stylized and interesting. These subtle changes add a lot to the overall look of the final prop. When I was happy with the blockout, I took the model into ZBrush to sculpt the details.
Note: Try to avoid Ngons in the model, which you will be exporting for sculpting in ZBrush.
As far as sculpting goes, I tried to keep the details fairly clean, like weathering and damage, because I wanted to add much of the details in my Albedo texture as hand-painted texturing was the core focus of this prop. Some of the brushes which I used very often throughout the sculpting process are Standard, Trim Dynamic, Dam Standard, and Stitch Basic.
After finishing the sculpt, I decimated the high poly model, which was about 9.4 million polygons, to 2.9 million polygons using decimation master. Usually, I keep the decimated model fairly low, as long as it retains all the details from the original sculpt and you are good to go because the decimation master does a really good job at retaining the original details on the decimated model.
Although 2.9M polygons are still high to be exported for retopology and baking maps, I wanted to get as many details baked down on my Normal and Curvature Maps as possible, as it would help me in hand painting details and highlights during the texturing process.
Retopology and UVs
I do retopology and UVs in Maya, as it offers pretty much every tool needed. For retopology, I used the standard Quad Draw tool in Maya. It is quite simple and easy to use. While doing retopology of any models, I keep a few points in my mind while doing as it helps me to be mindful of the polycount. I would like to share some of those key points here:
- Add bigger shapes to the topology first and then go with adding more geo for smaller details as it would be easier to work with and will help you to maintain a nice edge flow.
- Only add vertex or edge loop to your topology if it is contributing to the overall silhouette of the model. This is very crucial for game-ready props for performance purposes.
- Try to avoid Ngons in your topology, because the model will eventually get triangulated in the game engine and because the Ngons don't triangulate so well, they might cause shading and clipping issues in the engine.
When it comes to the polycount budget for my portfolio pieces, I try to keep them as low as if it is being made for use in a video game, but this time around for my leather bag prop, I bumped up the polycount a bit by adding some more topology to areas where I thought would enhance the shape of the model. The final polycount ended up being 4.2K Triangles.
After retopology is done, it's time for unwrapping the model. While adding seams to any prop, I try to add as few seams as possible to avoid any kind of artifacts while baking the Normal Maps.
When I was done adding seams to my leather bag, it was time to unwrap it and lay out the UVs in the 0 to 1 UV space. I arranged all the UV shells/islands by hand while also respecting the padding distance between them to avoid any kind of bleeding and artifact while baking the texture maps. I try to keep my UV shells almost straight whenever possible, as it becomes helpful in the texturing process. For this prop, I used a single 2048*2048 texture map with a texel density of about 10.22.
Hand Painting and Texturing
My hand-painted texturing process for this prop revolved around Substance 3D Painter and 3DCoat. After packing the UVs of my model, I brought the model into Substance 3D Painter for baking texture maps. I went with the standard method of baking maps in Painter without tweaking many settings and I got the desired results. The Normal map, Curvature Map, and Ambient Occlusion Map are the most important maps that helped me down the texturing process.
After the bakes, I started by assigning appropriate blockout colors to the model, and then I added a stylized baked lighting filter on a separate layer and set the blend mode to Overlay, which gave my prop so much depth and form with fake lighting. Just by doing this, it started looking a lot better. A big shoutout to my friend Adam Wood for sharing this tip with me!
You can tweak different settings of the stylized lighting filter to get different kinds of results as per your liking. The three main components of the stylized lighting filter are Sun sky, Light 1, and Light 2, which you might want to play around with. One thing I do whenever I work on the Albedo Map is that I always do it in the base color mode in the Painter viewport, as it shows pure colors without any lighting.
After I was happy with the adjustments for my base color, I then exported the Base Color map and brought it to 3DCoat to start adding hand-painted details on top of it. Also, this was my first time using 3DCoat, so it was a lot of fun exploring the software features. When I was done setting up my prop with Base Color in SP as the starting point, I started painting and defining major shapes and directions of the light. Because this was a hand-painted prop, determining the direction of lighting from the very start is important, as it would later help in painting highlights and shadows further down the texturing process. In 3DCoat too, I painted my textures in base color mode in the viewport, eliminating PBR lights and shadows. The brush I used for painting my textures is Quad with Radius, Depth & Opacity pressure as the pen pressure setting which gave me desired brush strokes for the style I was going for with my prop.
Also, the 3DCoat's Edit All Layers in External Editor feature is really amazing. It lets you directly paint your textures in Photoshop and update them in almost real-time without the need to save them and import the texture into 3DCoat again. This makes the workflow much faster.
After painting in major forms, I started to paint smaller details and highlights like the leather strap and the lock which is holding it in place. And then I went on to paint fine details such as weathering and damage to give a bit of storytelling element to the leather bag. This process is really going back and forth at different parts of the model and painting accordingly.
A good tip to actually see if the painted details look good or not is to zoom out and look at the model from afar. This will help you in figuring out if something looks off in the texture. After I was satisfied with texturing, it was all about finishing up and giving it the final touches and a few color variations by adding some blues and purples to it. This adds some breakup to the monotonous brown look of the leather bag.
Lighting and Rendering
After I finished hand painting the textures for my stylized leather bag, I brought the model and textures into the Unreal Engine to light and render it. The lighting is a pretty standard three-point lighting setup: the main light, the fill light, and the rim light for the silhouette.
For the background, I set up Exponential Height Fog and changed the Fog Inscattering Color to dark grey, and set the Fog Intensity value to 1. Also, the color of the floor material was changed to match the color of the Exponential Height Fog to form a smooth backdrop gradient.
Here's a tutorial I followed to set up the scene in Unreal Engine:
One last thing I did before rendering the final image is I sharpened the overall image using the command r.Tonemapper.Sharpen 1, with 1 being the amount of sharpness.
As a closing thought, I would say ask other artists for feedback and critiques throughout the project because sometime you might miss out on some areas while working on your project for so long, that's why fresh eyes are needed to notice something which you would have missed out otherwise. One thing I would recommend is to join game art serves on Discord as there are a lot of experienced people on those servers who can help to level up your project by providing relevant and valuable feedback.
Thank you so much to the team at 80 Level for providing me this opportunity to share my knowledge and skills on their platform which is widely loved by artists across the globe.