Creating a Female Gunslinger in Maya, ZBrush & Substance 3D

Ivan Lim has shared a breakdown of the Female Gunslinger project, discussed his education process at Think Tank, and explained why he chose Unreal to present the character.

Introduction

Hello, my name is Ivan Lim. I am living in Singapore, and currently, I am a student studying at Think Tank Online. I have been studying and making Character Art for about 4 years now and currently am still studying at Think Tank Online with about a couple of months left.

I started my journey in 2017 when I studied at Nanyang Polytechnic, a Polytechnic here in Singapore, for an Animation Diploma, but when 3D and ZBrush were first introduced to me, it was when I started focusing more on Character Art. Now I am on my Mentorship Term at Think Tank Online.

Today, I would like to share a breakdown process of my recent final project piece at Think Tank, which is a 10-week project given to us to make a game character.

Think Tank

I joined Think Tank a year ago, in May 2022. I actually heard about Think Tank from a friend and an amazing artist, "Ian Tan," who also studied with me back at Nanyang Polytechnic. After seeing the jaw-dropping student works and the high ranking of the school on the Rookies, I knew I wanted to learn from the teachers and supervisors there.

The process of coming into the school was pretty smooth. We were given a brief about what to expect moving forward, and the expectations of putting in the work for great results were high. The supervisors were all very helpful and always provided weekly feedback on our assignments and what we could improve on further in the next project.

The Gunslinger Project

For this project, I really wanted to draw the viewer's attention to the face more. So, I knew I had to get the face right, which is what I spent the most time doing. Since I did not have too much experience with real-time hair card creation, I also had a focus in mind, to push further and make it the best I can. The original 2D concept that I chose was based on a piece by Meltifire on ArtStation.

For all of my projects, reference is a very important and fundamental part of the process. I like to split my references into different categories, such as faces, hair, anatomy, asset parts, etc. This helps with organizing the reference board and for ease of access to certain categories I am working on. The reference board can give you direction on how to make the character, where you can visualize what the final outcome would look like. You can also add certain references by creating a story for the character, like where was this character born? How was the character raised? Is the character confident or timid? The images you find dictate what type of character you are trying to make.

Head and Body

Before starting the project, there were some things to set up in ZBrush. Firstly, it is important to ensure that the scale of the character is correct for the final lighting. This is because Subsurface Scattering is made for real-world scale, and if your object is too small, it could cause artifacts in the light transmission or give unexpected results. To ensure proper scaling, I first created a rectangular mesh in Maya, with the height of the character I was going for, and brought it into ZBrush as a scale reference for the character.

Secondly, it is important to set up the focal length for the character. Personally, I prefer an 85mm focal length in ZBrush for this project because I wanted the final camera during render to be set up similarly to a portrait camera.

Now for the face, I started off with a very basic base mesh and added forms to it. I always kept in mind how the forms of the face work, which are layered by bone, then muscle, then fat, and finally skin. Each layer plays a role in creating the overall forms of a face. Knowing where the bony landmarks of the face are by looking at references to anatomical skulls and references of real-life people, especially people who have very defined features, gives you an idea of where each landmark is on your character. A good reference for anatomy is Anatomy360's 3D scans of real people. They have a lot of free references for different genders, body types, and even different poses.

The face is a very complex mix of forms, from overall silhouette all the way down to the microdetails of pores. A good start is to understand facial plane changes of bigger forms and see how light creates shadows at points of plane changes. For pores' detail and reference, a really good reference is DANIEL BOSCHUNG – Face Cartography, where you can zoom all the way into the face's microdetail to see each and every pore up close when detailing. The images by Daniel Boschung are amazing and show high-resolution close-up images.

I always start off my characters with a block-out phase. It gives a solid understanding of how each asset of a character links with one another. You would not want to start making a high poly straight, spending hours, only to realize that the asset does not actually make sense. So having a quick sketch of each piece and placement of it gives you a realistic way of how the assets look. For example, in the concept of the gunslinger, there is actually no gun strap holding the large gun, so that means the gun would be floating on her back, which does not really make sense. Thus, having an idea in the block out would fix these issues.

Outfit

When it came to the clothing, I determined which parts of the clothing would benefit more from Marvelous Designer. I knew that the corset and the pants would be skin-tight, so simulation was not really needed. Therefore, I only used Marvelous Designer to make the shirt of the character. I used the block out as a reference for how the stitching of each piece of cloth would come together, then created the shirt with the simulation in Marvelous Designer.

One problem I always faced in Marvelous Designer is that I would always get tunnel-visioned into spending a bunch of time to get the perfect folds of the cloth. Due to the deadline for this project, I created a simulated shirt that looked good enough and quickly exported it back into ZBrush to do additional folds that fit the look that I wanted. My process of taking the mesh from Marvelous Designer to ZBrush is quite simple.

In Marvelous Designer, I exported the simulated cloth and made sure the settings were set to a single object, welded, and thin. After bringing it into ZBrush, the mesh is actually triangulated because Marvelous Designer uses triangulation for their simulation. So we have to make the topology good enough for sculpting. I simply duplicated the mesh, ZRemeshed it, and finally reprojected back the details from the Marvelous Designer mesh onto the newly created ZRemeshed mesh. Now there is a mesh that has decent topology to sculpt on.

The meshes, such as the straps, were made using hard surface techniques. I created a simple shape for the straps using the "Slice Curve" tool to get the shape that I wanted with no thickness. Then, I ZRemeshed the shape to get a clean topology, added thickness, creased the edges, and used dynamic subdivisions. The same technique was used for the small gun and the big gun which were made with multiple smaller meshes.

Hair

I started to work on hair with a block out to see how it would look on the high poly head. Then I planned by drawing out in Photoshop what type of hair strands I needed for each individual hair card. Then, I brought the image in as an image plane for a guide of how the hair splines would follow.

Hair Cards

I used curves to draw out the shape of the hairs and converted the curves into hair splines in XGen. When creating the hair, a good thing to always look out for is negative space. As the hairs get from opaque to flyaways, you should try to add more and more negative space between hairs. This creates a feeling of depth when you start layering your hair cards over one another.

Hair Card Placement

When placing the hair cards, I used a method that Johan Lithvall used. He has an interview with CGMA about creating hair for games, and I highly recommend listening to his workflow. Following his method, I created hair chunks instead of using hair cards. The hair chunks were created by having three hair cards forming it, creating a sense of depth and volume when looking at the hair chunk from multiple angles.

Afterward, I started using the hair chunks and started placing them in layers: Opacity, Breakup, Sparse, Sparse Thin, and Flyaways. Each chunk layer has lesser and lesser strands of hair. Like in Johan's method, I used bend deformers instead of using soft selection when moving the hairs. It gives more control over the hair, and when using bend deformers, the vertices will have a proper edge flow as it bends. Even though it is a little more time-consuming, the control you get from it is worth the time spent. Hair card automation could work, but it could end up taking more time in tweaking than placing the hair cards by hand.

Hair Card Placement

When placing the hair cards, I used a method that Johan Lithvall used. He has an interview with CGMA about creating hair for games, and I highly recommend listening to his workflow. Following his method, I created hair chunks instead of using hair cards. The hair chunks were created by having three hair cards forming it, creating a sense of depth and volume when looking at the hair chunk from multiple angles.

Afterward, I started using the hair chunks and started placing them in layers: Opacity, Breakup, Sparse, Sparse Thin, and Flyaways. Each chunk layer has lesser and lesser strands of hair. Like in Johan's method, I used bend deformers instead of using soft selection when moving the hairs. It gives more control over the hair, and when using bend deformers, the vertices will have a proper edge flow as it bends. Even though it is a little more time-consuming, the control you get from it is worth the time spent. Hair card automation could work, but it could end up taking more time in tweaking than placing the hair cards by hand.

Retopology

Head and Body

I started the project with a base mesh, so the head already had usable topology. However, for the UVs, I redid them because I had accidentally merged some meshes and deleted some faces along the way, which destroyed the UVs.

Assets

I started with a decimated mesh and used it as a live surface so I could use quad-draw over it to conform the quad-drawn mesh onto the live surface. I then used quad draw in Maya and started out with big faces of geometry to block out the entire mesh and slowly added edge loops to conform to the shape of the live mesh. For areas that needed more geometry, such as folds, I would go in with the Slice Edge tool and add more geometry where it is needed.

UVs

I used Maya UV tools to unfold and lay out the UVs. Meshes with the same material type, such as leather, metals, etc., have their own separate texture sets so that it is easier to texture in Substance and to add tileables in shaders because it would apply to the same type of material. I gave each material type a separate Maya Lambert material so that Substance would be able to recognize them and split the different Lambert materials into different texture sets.

Eyes, Eyeblend, EyeAO, Tearline Meshes

These meshes were all extracted from the digital humans by Unreal Engine as a lot of complex shader work has been done to them, and Unreal Engine recommends users use their meshes.

Texturing

Head and Body

For this project, I used TextureXYZ multichannel face maps. I brought the low poly head into R3DS Wrap to do multichannel texture projection. The multichannel face maps have three different maps: Albedo, Displacement, and Utility. After projection, I extracted the R, G, and B channels from the displacement map and imported them as textures within ZbBush for clean-up and additional details. I did some cleanup using the morph brush and morphed out areas with projection artifacts, like the corners of the nose, corners of the lips, and eyelids.

Then, I used skin pore alphas to add on top of the mesh in its own respective layers. Using multiple layers gives me more control if I need to tweak certain areas, like the lips and eyes, for example. The texturing phase of the face is by using the projection that had been projected in R3DS Wrap and adding tileables, which I made in Substance 3D Designer by extracting some square textures straight from the multichannel albedo and just making it tile in Substance 3D Designer. Afterward, it's just adding skin details by using the baked maps from Substance, adding tonal regions and skin damage. I referenced some cross-polarized images of faces to get the different color variations of the face.

Assets

For the assets, I always start off by working with the base color, using different masks to add breakup in the color. I always try to make the textures as procedural as possible, making use of different textures as masks. At the end of the procedural texturing, I will go in and add more specific details by doing hand painting. This way, I get most of the texturing done very quickly and efficiently, as changing procedural masks is much faster than changing hand-painted masks. I like to break up the layers into three separate frequencies of detail: a large frequency breakup mask, a medium frequency, and a smaller detail frequency. After the base color is done, I will use the same layers that have the base color to add some roughness breakup as well.

Leather

Leather that is older and more beaten up has more color variation in hue, saturation, and lightness. That is why having multiple layers of different frequency masks is important to show whether the leather is older or much newer leather. In this character's leather, because she is a gunslinger and has been through some battles, I wanted the leather to be more torn and worn out, especially in areas where it's more exposed.

Early on in the texturing stage, after setting up some basic first-pass textures in Substance, I wanted to make sure that I had a scene set up in Unreal so I could do some LookDev work while texturing. Going back and forth between texturing and LookDev is crucial for ensuring that your textures are on the right path, as knowing how it looks in the render engine with just a click of an export button is really useful. The worst thing you could do is spend many hours tweaking small details and trying to make the viewport render look good, only to export it to a render engine and realize that something is off.

Lighting in Unreal Engine

The reason for taking it into Unreal Engine is that I had not used it much before, and the Unreal Engine Digital Humans Documentation has so much information and research done that I wanted to learn how to take my character into an actual game engine. Compared to other engines, Unreal has a lot of customizability where you have a bunch of nodes that can aid in making the character look amazing. That's not to say that other render engines are not good, it's just that rendering in Unreal has always been something I've wanted to learn more about.

Lighting

The lighting is a simple three-point lighting setup with additional fill lights to brighten up some areas where shadows are too dark, as well as lights to attract the viewer's eye to certain parts, like the gun.

Post-Processing

I used Bloom, Chromatic Aberration, Vignette, Depth of Field, and Color LUTs (LookUpTable).

  • Bloom: This produces haloing to create glow effects for bright objects, such as lights, giving a feel of looking through a real-life camera lens.
  • Chromatic Aberration: This simulates the color shifts in real-world camera lenses.
  • Vignette: This effect causes the brightness of the image to decrease as the distance from the viewport's center increases. This guides the user's eye to the center of the image, which is the character.
  • Depth of Field: I created a custom depth of field for each cinematic camera shot.
  • Color LUTs: The process of LUTs can be found in Unreal Engine's LUTs Documentation.

Overall, the project took 10 weeks to complete. I want to thank my supervisor, Mr. Babak Bina, for giving valuable feedback every week, as well as my peers who pushed me on. Challenges I faced included the need for a lot of research to make the character look good in Unreal. There is so much more to learn, which I am excited about. The concept was based on a piece made by Meltifire on ArtStation.

Lastly, I would like to thank 80 Level for giving me this opportunity to share my work and workflow with everyone. I hope someone can learn something from reading this. Thank you!

Ivan Lim, 3D Character Artist

Interview conducted by Arti Burton

Join discussion

Comments 0

    You might also like

    We need your consent

    We use cookies on this website to make your browsing experience better. By using the site you agree to our use of cookies.Learn more