Creating realistic handmade portraits
Creating a realistic portrait can be easier when you have access to 3D scans, high resolution texture maps, or even alpha brushes from photographs. But what happens when you don’t have all of that? In this tutorial, we will cover some techniques used to create all of the skin details using only ZBrush basic tools. Paint high definition skin maps from scratch using Mari, grooming hair with the xGen and rendering realistic shaders with Arnold in Maya. Everything you need to know in a workflow that was designed to make use of the most powerful software of the CGI industry.
1. Starting with a basemesh
Use the basemesh provided in this tutorial or the DemoHead project sample that comes with ZBrush. You can also create your own basemesh which is better to practice your anatomy skills. Try to match the reference as close as possible to the basemesh using the Move tool. Don’t worry about topology at this stage. ZBrush has a “see-through” slide in the interface that you can use to let a reference open in the background. This way you can switch between references without using an image plane.
2. Getting the forms
Once the primary forms is done, use the the ClayBuildup and DamStandard brushes, get the main shapes of the model (secondary forms) following the muscles, and make sure you have the proportions right. Go easy with the subdivision level of your model. Stay close to one million polygons. It will be enough for the head.
3. Time to retopologize and UVs
Export the head as OBJ with something around 60k polys from ZBrush, and import inside Maya. Select the imported mesh and make it a Live Object. Now, you can use the Modeling Tool Kit to create a new low poly mesh of your model. When the low poly version is done, generate your UV map and split it in multiple UVs (UDIMs).
4. Mastering the pores
Starting with a basic subdivided plane and sculpting something that looked like a couch button. Remember that the amount of detail you put in it, will be seen in the close "micro" render in the future. From that, create an alpha brush and save it as Pore Brush for example.
5. Sculpting high details
Re-import the new low poly version of the head into ZBrush. Subdivide it to achieve one million polys like before and use the Project All button on the SubTool palette to reproject the details from the old OBJ into the new one. Detailing time: in the GeometryHD subpalette, subdivide your model three times and with the mouse upon the model, press A to enter in the HD mode. Use the brush pore you created with the DragRect option to place each pore at a time (watch the video). It will take about two hours to finish the whole head.
6. Wrinkles and fine details
After all the pores are in place, use the DamStandard brush to create the wrinkles. You can use the standard brush with Zadd mode on to add some pimples on the nose, and add more details under the eye. With the Multi Map Exporter, under the Zplugin menu, set the Map size to 4k or 8k to get the most of the details. Click on the File Names button to set UV tile ID format to <UDIM>. Export the head again as OBJ with 60k polys. This will be the mesh for the final render.
7. Painting handmade maps
Inside Mari, create a Basic Procedural Color layer and choose the skin tone. To keep all the controls as possible, create another layer to paint the pores. Choose the PORE brush and set the opacity to 0.20 or 0.30. Increase the spacing to 0.2 and turn on the Jitter position with the max value of 70. This will be the basic setup for the whole painting process. Choose a lighter and a darker skin tone and paint the variations. In the end, you should have something like in the image.
8. Specular map
Create one channel to each map you will need to keep things organized. With the same brush setup as before, create a Basic color in black and paint the specular map with white. The areas with more glossiness, add more white. In the end, you should have something like the image.
9. Additional Specular (coat map)
The coat map will be to shine the most glossy zones (forehead, tip of the nose, lips, and eyelids). We will paint a separated map to get more control inside Maya. This time, create a White Procedural Color layer and paint on a new additional layer above with black. Use the SuperSlow brush to paint those areas according to your reference and the skin type of your model.
10. Exporting maps
Export each map at a time. To do that, select the Channel that will be exported first and right-click on it. Choose Export Flattened on the drop-down menu and select the option Export Current Channel Flattened. The default setting should work fine but be sure to let the Colorspace to sRGB.
11. Light setup
Although a HDRI environment makes things fast, use a combination of spot lights to simulate the physical ambient. Set one to be a Key light (with a higher intensity). Usually the main light is at 45-degrees (called Rembrandt light) to give a nice look in the scene. Add two Fill Lights and one Back/Rim Light to give more details in the shadowed areas.
12. Hair, eyebrows, and eyelashes
To create hair, you have two methods. The first one will be used to create the main hair, eyebrows, and eyelashes. Select the faces in the basemesh you want to groom. Create a xGen Description, choose to create primitives as Splines and set to Control Primitives by placing and shaping guides. Use the Add or Move tool to create the guides and the Sculpt Guides to give them the shape. Create a new description for each one (hair, eyebrows, and eyelashes).
13. Beard and peachfuzz
For the beard (just like the peachfuzz), create the hair automatically will be faster. Select the whole mesh and create a new xGen description but this time, set it up to Groomable splines. This is more interactive and let you use the Grooming tools to change the length, the width, position, and so on.
14. Shading network
The simpler, the better. With the AIStandardSurface, the maps will be connected straight forward. Displacement from ZBrush needs to be set as RAW in the colorspace and all the others as sRGB. The skin shader/color is composed with the same Diffuse map. Duplicate the File Node and attach a RemapColor node. One to Surface Color and the other to Surface Radius. Increase the red and blue position/values in the ReampColor to take some changes in the Surface Radius.
15. Render the final shot
With the camera and lights ready, it’s time to render. To have a clean and noiseless image, make sure the light samples are set at least to 2. Camera samples (AA) at 8, Diffuse/Specular/Transition/SSS set to 4. For a closer shot (like a macro), increase those values but remember that the higher the number, it will take more time to render the scene.