Making of a real-time portrait
Glauco Longhi shows how he develops his amazing portrait from a real-time scan, refining the details in ZBrush and sculpting the leather jacket...
This project started as a ZBrush demo for Jeffrey Wilson's class on how to clean up a scanned head, done by my friends at 3dscanstore. I decided to take it further and re-texture it, refine the details and change the sculpt a bit, hand sculpt the leather jacket and study real-time shaders/light/render.'The scan'
I started cleaning the raw data using the Clay brush with Alt pressed (ZSub), and the Smoothing with a tweaked algorithm (hold Shift, click, and then hold with the pen, release Shift, and there you go). This smoothes out the topology without changing the overall surface too much, and also removes all those stars and triangle points that you get using DynaMesh.
I duplicate the head, set a Morph target and then re-project all those raw details back onto the mesh. With the Morph brush, I can just remove the necessary areas. Actually this process helps if I just want to get rid of something specific, for instance, in this case I re-sculpted all the micro surfaces and some small forms to make it more interesting.
I love sculpting pores and these kinds of details. I don't think that it's boring or whatever, but maybe it's because I've been doing it for the past years in traditional sculpture, mainly by hand without using alphas or stamps.
Anyways, this is a small breakdown of how I approached those details, variations and pore directions.
I used the Standard brush with dragrect mode for those alphas, DamStandard to carve fine wrinkles and Inflat to give it more weight and a feeling of gravity. For specific pores like positive details, I tended to use the dragdot mode and change the size of the brush manually.
The jacket and T-shirt began with a simple sphere DynaMesh sketch, a quick ZBrush retopo, then into 3ds Max to close the topology and UV it. Then, back to ZBrush to sculpt and detail it for normal map extraction.
I used two leather alphas for the jacket and then sculpted those fine details by hand. Be careful about using the Inflat brush over textured surfaces though, usually, I go to a lower subdivision to inflate them.
For the textures I jumped from ZBrush to Photoshop, using the same principle as used on cleaning up the mesh. The UVs were done with UVMaster.
I projected the textures into my Polypaint, painted it as I wanted, then exported and mixed it with the raw data in Photoshop. I also added some tattoos and blurred some details too.
I exported a cavity map to bring back some details lost in the painting and used this map as my base for the gloss map. Having no spec inside deep wrinkles seems to help the contrast between the forms. I was going back and forth to Marmoset Toolbag so I could check the end result of what I was doing.
I had many questions about the hair. Again, I tend to think traditionally, punching those hairs into a silicone head so I do it by hand, without plug-ins or scripts. It looks like it would take forever to finish but you can place them faster than you think (Also, much quicker than one by one with a needle).
Having as many variations as possible is key here. Also, single black or white hairs tend to make things pop as they contrast with the others.
I painted my alpha cards in Photoshop, duplicated it, boosted the lightness and then copied to the Alpha channel. I exported them as TGA 32-bits and was ready to go.
I placed them in 3ds Max and constantly checked the rendering and Marmoset on my pre-set lighting studio. Color, specular and shadows tend to vary in these conditions so I'd do the hair by the end of the project.
If you are familiar with 3ds Max, I used the Bend and Twist modifier to help me create directions for different hairs. I also used the layer system so I had more control for later adjustments. For the diffuse of those hairs, I just used a plain gradient for the painted hairs. This depended on the color and variations/limitations I was going for.
Regarding the skin shader and marmoset rendering – this was no big deal. I just played with those values, always using real photo references.
I found myself setting the shader using only the sky light and then tweaking it with the lights on. I had a gloss map, normal map, normal detail map (generic noise), translucency map, and a cavity map to help me break the spec.
If you have any questions about the shader, let me know. Those values can vary from different scales and
The leather jacket was also a skin shader-based material. The Subdermis Scatter helped to break down the shadows a bit and also gave more of a leather look to it. I extracted the normals from ZBrush, generated a generic noise to use as a detailed normal map, painted some gloss based on the cavity extracted from ZBrush. The diffuse/Albedo was painted in ZBrush and tweaked in Photoshop. I also painted some black-and-white masks in ZBrush to create variations on diffuse and reflection.
View more Glauco Longhi's work on his website
Check out 3dscanstore for detailed anatomy scans
Want to learn more about ZBrush? Try ZBrush Character Sculpting
To see more by Glauco Longhi, check out ZBrush Characters & Creatures.