Grim Mercy: Modeling a 3D Character in Blender and ZBrush

Dane Petersen did a breakdown of his project Grim Mercy: texturing the skin, sculpting the body and accessories, setting up lighting and final render in Marmoset Toolbag, and more.

In case you missed it

You might find these articles interesting

Introduction

Hi, I’m Dane Petersen, a Senior Character Artist working at Certain Affinity. Most recently, I worked on Halo Infinite and my current project is under NDA, so I can't give any detail on it.

I first learned about 3D modeling through mods for Morrowind ages ago. I was amazed that people could use software to create cool stuff for games. I messed around with whatever free software I could use and eventually got into Blender when I got a PC that could run it. For a couple of years, I just followed tutorials on websites like blendercookie and tried out different parts of the program, but still didn’t really have career aspirations, it was just a hobby. 

Around 2012, I learned about ZBrush and was amazed at what people were doing with it, so I had to try it out for myself. I grabbed the trial and Michael Pavlovich’s classic ZBrush starter tutorial from eat3d, and after a couple of weeks of suffering through the weird interface, I was hooked. At that point, I pretty much decided I would actually try to make a career out of it, but I was becoming painfully aware of my lack of art knowledge. I used Ryan Kingslien’s tutorials at zbrushworkshops.com to learn the basics of anatomy and character sculpting. After that, I spent a couple of years working on mod projects and indie games, which gave me enough experience with the game pipeline stages like retopo, texturing, etc. to eventually land an internship at Arenanet.

1 of 2

Grim Mercy: Idea and Reference

For this project, I wanted to make a magical dark fantasy character with an elegant feel. I had seen a Paco Rabanne show from early last year where the models were wearing these really cool outfits that looked almost like ring mail armor, and some of them had spikes over the face and along the hems, like tassels. It was super refined and medieval at the same time. That stuck with me for a while so when I had the idea for this character, I grabbed that reference and used it for the hood design. I looked through a lot of other couture work too, it's a great ref for proportion and how you can make layers of clothing and other elements work on a body.

I  also used references from medieval armor and clothing to ground the project in reality as a piece of believable fantasy design. There’s definitely some Ringwraith influence in the armor design as well for extra grimness.

A concept artist friend gave me some great feedback and urged me to think more about the story to guide the design. The 3D sketch I had at that point had features that resembled a nun or queen type character, so I leaned into those elements. The idea I followed was a secretive religious sect that followed a teacher who learned to use magic to fight demons and evil beings, a chaotic good character. This also led me to the visual elements of the relics and using a lot of gold. Narrative is definitely not my forte, but with this project, I saw how it can help make design decisions easier!

Sculpting the Body

For the body, I started with a basemesh in ZBrush, with low poly topology that is easier to edit. This is the sort of thing everyone says to do, and for good reason; it’s much easier to make big changes with simpler geometry. To start sketching the design of clothes and armor, I first applied Extract to pull out the main shapes, and then used ZRemesher on Half several times to lower the polycount, again to get simpler topology that’s easier to work with.

As the parts were built out, I sculpted in some basic surface information while still trying to focus on the big picture. Keeping an eye on anatomy and proportion is important in order to maintain a believable look while still emphasizing aspects that are key to the character. All told, this character ended up with about 75 million tris in ZBrush.

Skin Texturing

I don’t really have a brain for hyperrealism, so I just wanted to create a believable effect rather than something that is totally real-life accurate. I used assets from texturing.xyz as alphas to create the skin pores in ZBrush. It can be tricky to dial in how strong the pore effect should be, so I typically do test bakes of the head as I go to see how the effect is looking in a rendered scene.

For painting the skin, I started with some basic polypaint in ZBrush, just to get the overall colors. When I baked my textures, I also baked out vertex color. I loaded that texture into Substance Painter and worked on top of it, adding some color zones and using cavity data from my bakes. A lot of the tricks I use are from Magdalena Dadela’s Goblin texturing demo from a while back, it's a great resource to look at.

To add more depth to the texture, I use tight small noise patterns. Even if they are not exactly realistic, they help break things up so there are no areas of the texture with just a flat color. I’ll also manually paint in some breakup with rough brushes. When painting textures from scratch, it can be easy to exaggerate the underlying colors too much so I like to find references for the face and just pick colors from there to go on top to tie everything together. 

For the subsurface scattering map, I added a user channel in Substance Painter and set up my export to use it as my SSS map. It’s always a bit of back and forth to figure out what colors to use for that map, so I found it really helpful to have it set up as a channel in SP for quick iteration. This also easier helps define things like eye shadow or darker spots on the skin in the subsurface texture.

Facial Details

I like to make use of spec and gloss variation to make the features stand out. Faces don’t have a constant level of shininess all over since some areas have different types of pores, amount of oils, and thickness of flesh, so taking advantage of spec can help define the face.

I didn’t do anything fancy for the eyes, it was just a texture with a pretty typical eye mesh setup. I used two spheres, the inner one being for the eye itself, with a divot where the iris is. The other sphere makes the cornea or transparent part of the eye. I added a simple noisy normal map texture to break up the highlight a little bit.

To sculpt the lips texture, I used some of my regular face skin alphas and added some deeper line wrinkles with slash3.

As for the makeup, I added it as layers on top of the skin in Painter, keeping in mind the physical properties it has that contrast with the underlying skin.

Hair

For hair, I use Hair Strand Designer. It’s made by Robert Ramsay (available on ArtStation), and it works great for generating hair textures. I like it because it makes it super easy to change things like colors, amount of strands, and thickness of strands, export those textures and see how it looks in your renderer. With the textures from HSD, I have a selection of sets of hair strands that correspond with different planes in the mesh.

To do the actual modeling of the hair, I started with a simple long plane in Blender and added just enough divisions to achieve the basic shape. For this character, there isn’t much visible hair so it was really simple. This first base layer was using the densest hair texture. Going back to why I liked using HSD, I could quickly adjust the density of the texture to create a more or less opaque base for the hair. Then, to add some more volume to the hair, I added a few more planes using sparser hair textures and changing the angles of the planes so that there was enough coverage from different angles.

I also used a subdivision modifier to smooth the hair out, because trying to smooth the shape manually always ends up being a ton of extra work and never quite smooth enough. If you have a strict poly limit for hair, it's easy enough to take out extra divisions where they aren’t needed, to reduce the tris count.

Accessories

For things like the crown, armor, and relics, I did quick sculpting with dynamesh for the initial pass at design. As the accessories became more defined, I used polygroups and ZRemesher to split one simple shape into several more well-defined ones. Once I liked the general direction, I exported them to Blender to rebuild the topology on top of my sculpt for cleaner geometry. I brought that back into ZBrush and used ZModeler to crease the edges, using dynamic subdiv to check how it’ll look when it’s higher res. To finish them, I subdivided, then used the Polish deformer to smooth the edges and brushes like Slash3 to add surface and damage details. As a bonus, when it is time to make the low res model, half of the work is already done so it can save a lot of time.

Clothes

I usually use Marvelous Designer for clothes, but some of the pieces on this character were just modeled in ZBrush because it was simpler than trying to simulate the effect I wanted. For the pieces from Marvelous, I typically keep the clothing geometry fairly simple so that it's still easy to manipulate in ZBrush, where I add most of the detail.

As this character is pretty much wearing all black, I wanted to show material variation to make the outfit readable. The impulse with cloth is to make it pretty flat in spec/gloss (or roughness) and rely on a normal map for the small fiber detail. I think that approach can make the result look too flat, so I’ve found it helps to use a lot of spec/gloss variation to define the clothes. I also add a user channel in SP and use it for a fuzz map export, which adds another level of dimension to the cloth as well.

Lighting and Post-Process

Lighting is really tricky – if you don't get it quite right it can be unflattering to your work, which is always frustrating when you’ve put a lot of time into modeling and texturing. I try to balance between showing my work well and having a sense of place and atmosphere. For the lighting setup, I tried to keep it as simple as possible with just a strong key light and rim lighting to show the edges. I used environment lighting as an overall fill light, which also adds some interesting color variation. Finally, I added a small fill spotlight to soften shadows on the face. As an aside, I also like to add all my lights to a folder group, then duplicate that and modify it as needed for different angles. This way I can have a group that's set up for a full-body shot and another light group for close-up angles.

I also added atmospheric fog. With the high backlight I put in the middle behind the character, I think it made for a really cool effect and fit with the composition of the shots. It tends to dull the overall image, so I ultimately had to adjust my renders around that.

I rendered this project in Toolbag 3. For starters, I switch to ACES color on my cameras. This instantly makes things way juicier than the default sRGB. With that as a baseline, I’ve found I don’t fight as much with the lighting to get a nice dynamic range in my image. It started very dark, so I had to push the lighting higher. For this character, since she’s in all black, it was still very dark so I pulled my tone curve up to brighten the middle values without making the lightest values blown out.

Finally, I made some adjustments in Photoshop. I had thought my renders were looking pretty good as-is from Toolbag, but after making a few changes I saw how much more I could push the values. I upped the brightness, then did a slight color balance to warmer tones, a little saturation boost, and finally, a curve edit to brighten up the middle tones more. This helped the face, helmet and golds pop, and I think made for a rich, illustrative render.

Dane Petersen, Senior Character Artist 

Interview conducted by Ellie Harisova

Keep reading

You may find this article interesting

Join discussion

Comments 1

  • Anonymous user

    Any where I could purchase the stl for it, she would be a great addition to my dark themed campaign.

    0

    Anonymous user

    ·3 years ago·

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