Peter Zoppi, Senior Character Artist at Treyarch, has provided us with an exclusive look inside the beginning stages of his WIP, Blackbeard. There is a lot to be learned from the initial stages of an artist's process, and this breakdown is packed with invaluable tips and tricks to inspire your own workflow. Check it out:

1. I collected a variety of reference, but try to stick to only using a few while sculpting. Sometimes having too much reference, especially of actors at different ages, can lead to some confusion. I try to keep the reference focused. While I generally referenced shots of Ray Stevenson from the TV show, I did need some additional images to guide me on the forms that are hidden by the long beard and long hair. I have a background in photography and I find it immensely helpful to have an understanding of camera focal length and how it relates to what I’m seeing when looking at reference. Long lenses compress forms and flatten things out, while wide lenses can lead to exaggerated features and distorted forms. With time, practice and careful studying, you gain an understanding and feel for how lenses work and the types of images they create.This becomes very helpful during the sculpting process because it allows you translate what you’re seeing into the sculpt.

2. Before beginning my sculpt, I ensure that I’m building everything at a proper scale. Working at a proper scale allows me to move seamlessly between sculpting, displacement extraction and rendering.I set my scene units in Maya to centimeters. With the help of measure tools in Maya, I create accurately sized eyeballs which serve as a foundational element in the sculpt. On average, the eyeball is 2.5 cm in diameter while the iris is about 1.1 cm across. One important thing to do is to rotate your eyes from the top view about 3 or 4 degrees outward. This will keep the character’s gaze feeling natural instead of cross eyed. I also begin with a base mesh that is appropriately sized as well (1). This mesh has good topology flow which allows me to accurately hit the anatomy of the face.

The first several hours of sculpting are always the most challenging, but the most fun for me. I stick to the lowest subdivision level for as long as possible which forces me to focus only on primary forms (2). I constantly keep an eye on my reference and work through it by making comparisons between the various forms. I’ll often bring reference images into Photoshop and draw straight lines on the image between various landmarks. This helps me properly gauge angles and relations between the forms. I can’t stress enough how important it is to look at and analyze reference while you work.

By focusing only on primary forms I’m able to establish the entire likeness at an early stage (3). This mesh has only been subdivided twice. Don’t get consumed by detail work too early, no amount of high quality pore detail will save poor anatomy and poor forms.

3. While sculpting the face it is important to look at it in context with surrounding forms and accessories. I needed some sort of placeholder for the hair to allow me to accurately judge the proportions of the face. I blocked out some very basic geometry for the mass of the hair, brought that to ZBrush and used different insert mesh brushes to rough out the mass and flow of the hair. This isn’t meant to look that great, but is more for blocking it out and beginning to establish the forms. I’ll use this hair mass later on to draw curves on top of . These curves will be turned into XGen guide curves for the hair style.

4. With the main forms established, I move over to making sure several of the technical aspects are sorted out on the head before moving forward. I use this opportunity to make sure eyelids have proper thickness and that they adhere onto the eyeball properly. This is most easily worked out in Maya, on a low resolution mesh where it is easy to make adjustments. I also ensure that lips, nostrils and ears have realistic thickness built into the mesh. If this isn’t taken into account, the subsurface scattering shader won’t work accurately on thin areas. For example, if the ears are too thick, you can end up pushing your SSS shader further than what it needs to be. Modeling and sculpting isn’t only about what is seen. It is just as important to properly model the things that aren’t always seen so that shaders work appropriately. The backside of the ear is just as important as the front.

I create a UV layout to be able to move seamlessly between sculpting, high frequency detail and texture painting. I’ll be utilizing a UDIM workflow on this project and because he has a lot of hair that covers the skin, I bias the UV layout towards the front of the face. I’ll only need 2 UV tiles to be able to achieve the detail that I want.

5. With the main forms in place and a UV layout done I move onto getting high frequency detail started. I utilize TexturingXYZ maps for the high frequency details.

TexturingXYZ maps store Displacement, Bump and skin microstructure all in one map which is why the color looks a little strange. The red channel stores the larger scale displacement information, the green channel stores the higher frequency bump information and the blue channel stores the extremely high frequency skin microstructure.

There are several programs which can work with this data and allow you to project it onto the mesh. I use the stencil and projection brush in Mudbox to project this information onto the mesh. Once I’m satisfied that I’ve cleaned up all seams and projected the image on properly, I save it and bring it to Photoshop.

In Photoshop I save off each of the channels as their own image file. I do this so I can apply each image to my sculpt individually. This allows me to easily control the blending between the displacement and bump information.

6. With my individual maps saved out, I subdivide my model up to Level 7 which equates to about 50 million polygons and use the “Sculpt Using Map” feature in Mudbox. This allows me to load the TexturingXYZ maps and directly apply them to my model. I make sure the Mid Value is set to .5 so that 50% gray is neutral and anything darker than that will push into the surface and anything lighter will push the surface out.

In this example, I’ve set the Sculpt Layer for the displacement information to 50% opacity while the Bump information is set to 20%. The Bump information gives the displacement information a little bit more structure and definition without being too noisy. This workflow allows me to continually balance these two layers as I continue working. I can also use Mudbox’s layer masking to reduce the intensity of the information in any area that requires it, and it is done non-destructively. At this stage I continue working on larger scale wrinkles and skin variance. I’ll work towards unifying and bridging the gap between the large scale sculpt with the high frequency information.

7. I want to begin establishing the hair so I bring the rough hair mass into Maya and use “Generate -> Make Paintable”. This will allow me to quickly draw Paint Effects curves onto the surface to direct the flow of hair. Once I’m done I convert the Paint Effects strokes into curves which can then be converted into XGen guide curves. In order to better control the hair, I’ve decided to break it up into several, easier to manage pieces. I have a beard, mustache, top hair, side hair, eyebrows and flowing hair dropping down from the top of the head. I didn’t create a lot of guide curves and guide hairs. As you can see in the beard and mustache area, the guide hairs are there to determine length and basic direction. I’ve chosen to use the XGen guide curve workflow for every part of the hair except for the eyebrows which I used XGen groomable splines.

Once all of the curves are set up, I use the Paint Selection tool to select faces of the mesh where I want to grow hair from. I add an XGen description to those faces and use the XGen utility ‘Curves to Guides’. This turns my curves into guide hairs that XGen can use to generate hair.  

8. I approached all of the hair in the same way to keep a consistent look, so we’ll take a look at the beard as an example. I set the modifier CV count to a high enough number so that any effects I create on the hair will work properly. If the CV count is too low, effects like clumping and noise won’t display accurately. I also give the hair a little bit of taper on the width by using the ‘Width Ramp’ controls. I end up with hair that is very straight, but it is placed in the right spots and follows the basic guide curves that I set up. I’ll be utilizing the modifiers to give the hair a more realistic look.

9. The first thing I set up with XGen is the clumping. I create three different clump modifiers and I work from broad to more refined. The first clump modifier gives the hair a little bit of clumping but also I use the Noise and Curl effects to introduce a little bit of randomness. Xgen has been very enjoyable to use because the feedback from the modifiers is real time. The second clump gets tighter and uses Noise and Curl as well to add more randomness. The final clump modifier is far more dense and I introduced a substantial amount of noise to the ends of the hair to get it to curl more and generally look more random and chaotic

10. An important part to the beard is the random hairs that break away from the main mass of hair (1). I add a Noise modifier, but need a way to control just a small percentage of the hairs. Clicking the down arrow on the ‘Mask’ attribute, I go to Load Expression -> Samples -> XGen->WaterRelatedExpressions->Noise and select noise_smoothstep (2). I now have a noise image acting as a mask for the noise modifier. Whatever is white in the mask will allow the modifier to work and whatever is black will mask out the modifier completely. I play around with the attributes of the mask to get the right amount of stray hairs and I also make sure to keep the mask high contrast (3). I use a low frequency and a high magnitude on the noise modifier to get the stray hairs to break away from the beard (4)

11. I use the same workflow from the previous slide on all parts of the hair. Every part is comprised of 3 clump modifiers and noise to achieve the full hair groom.

12. I want to make a lower resolution version of the hair as geometry that I can import into Mudbox so I can continue working on the sculpt while accurately seeing the hair. I go through each XGen description and turn up the width of each hair and also decrease the density. This will give me less hairs, but they’ll be much thicker. I also turn down the modifier CV count so that I don’t have too much geometry generated. Once I do this, I go to Generate->Convert XGen primitives to Polygons. I make sure Combine Mesh is checked and I hit convert. I now have flat polygon planes for the hair. The last step is to Extrude this geometry slightly so it has some thickness and I’m ready to send it over to Mudbox. Depending on the poly count of the hairs here, you can run Maya’s reduce to further decimate it and make it a little more efficient. The resulting geometry isn’t as detailed or accurate as the XGen version but it works well to visually represent the hair style in your sculpting program.

13. This is the current state of the project. I’ve created a solid first pass of the likeness, hairstyle, high frequency detail and all of the technical parts are in place. The next steps will be refining the sculpt further and moving into painting color information. From there I’ll be ready to start extracting displacement maps and doing a bit of look development in Maya.

We want thank Peter for providing us with an inside look at his workflow and techniques. Be sure to check out his Gumroad to learn more, as well as his classes: Character Creation for Film/Cinematics and Character Casting.