Jérôme Hartman / Avril Lavigne making of

I am a Senior Lighter and Look Dev Artist. I’ve had the pleasure to work on titles such as Alice in Wonderland, John Wick, Amazing Spiderman and The Expanse.

For a while I had the personal goal of creating a photoreal Avril Lavigne. Texturingxyz opened shop at the exact same time fortunately, making it easy for me to get the skin just right.

To begin, I combined the three included maps and cut them into smaller more manageable maps as described in the other tutorials. I preferred using the Tertiary layer as my base because the Displace layer has rather large features comparatively and all I needed was fine pore detail.

Projecting displacement maps from these scan is enjoyable since they themselves are an unwrapped face and all you have to do is rotate the model to align with the feature without having to worry about distortion.

Important points to remember when painting:

  • Keep pore size consistent.
  • Don’t worry about repeating parts of the map e.g. to extend the cheek texture. No one, not even you, will be able to tell.

As you paint I recommend painting on different layers for the different views of the face. Especially the lips. They are intricate and will need special attention.  

After the entire model is painted I found blemishes to be too prominent in the displacement. Clamp the entire texture a bit higher than the average value of the map, if this is a problem. I wanted nearly perfect skin.

For parts of the model that aren’t covered by the texturingxyz map it is possible to use random parts to fill in the blanks like ears and neck but I recommend using the MicroSkinFace package. It’s a must have to fill in the gaps. There is a variety of 30 tilable skin textures. I blended them together to paint the scalp, ears, neck, chest and shoulders.

It is important to make use of the Warp Grid brush when using some of the tileable textures. I liked the ones with a crease to mimic compression zones in the neck but I needed them to flow with the sculpt better.

I use Arnold to render. I also use an exported displacement map from zBrush to keep the sculpted details. It is simple to use both. View the network.



A plusMinusAverage node won’t plug into a Displacement node which is why a aiUtility node is used. If you’re not using Arnold a Ramp node will work too.  The values of each displacement map won’t align. You will need to lower the Mari values by the multiplyDivide node. Mine was .135 for example vs 1.0 for the zBrush file.

 One last note. These maps have a ton of information in them and you will need to have high subdivision levels to take advantage of them. My base mesh in Maya is 70k quads. I was fine with the look of 4 subdivisions but going to 5 allowed for every detail to render, but more than doubled the render time. You’ll probably test at 1 or 2 subdivs but keep in mind these details will change the look drastically.