Bringing a fantasy character to life
Self-taught 3D artist Dmitry Cheremisin brings life to his beautiful Elf girl using ZBrush
Hello everyone! I'm going to share with you my workflow of my latest project. I'll show you my process creation of this Elf-girl (sculpting, texturing, shader setup and rendering) I hope it would be very interesting and you will find something new and helpful. Let's start!
When starting a new project I usually make a draft sculpt to get the base forms and proportions correct. Once this is done I can move on to refining all of the elements of the model; also, it's very important to have right size of the model because if the size is incorrect then the end result can be unpredictable you will spend more time to get right settings. That's why it's important to care about this at an early stage. With the elements refined, I retopologized the bust.
Next I created UVs without any overlap; each time I added a subdivision to the bust, I used Project All in ZBrush, doing this means I can transfer the sculpt to a new mesh. This gives me a mesh which looks identical to the previous sculpt, but has good topology and UVs. I follow the same steps for the rest of the objects: clean topology, make UV, projecting the sculpting on new mesh.
I find the key to a successful sculpt is using references; this is especially true when creating a character with realistic skin. I use some high resolution photos as a base, apply a High Pass filter to the image in Photoshop, desaturate it and correct the levels – this gives clearly visible pores and wrinkles, which can be used as a stencil for sculpting or as a base for a custom brush. With the skin pores added I use Noise Maker in ZBrush to add some variation to the skin.
All we need to set up a scene is an understanding of shaders, light sources and a camera – all working together as one system. If we use the right settings for the light sources and camera we can largely to facilitate adjustment of the shader. For test renders I placed test light sources and the camera for shader setup, the final placement can be different. I placed the light sources in such a way as to reveal subsurface scattering.
I usually use a frontal light source tilted by 45 degrees and the back light is to see the scattering of light in the ears. The settings for the V-Ray camera equate to real camera settings; White Balance is neutral (I try to avoid any color distortion). I added HDRi map in a dome light and used it as environment map. Once again I make sure that the scale of the model imported from ZBrush is correct, because VRayFastSSS2 shader is sensitive to the size.
Skin shader setup – part 1
Skin shader is a complex thing, that's why I prefer to split it into different elements, or sub materials. I started from the subsurface scattering (SSS) with the Specularity completely off. The textures influence the look of the shader (color, saturation, brightness), in the early stages I used VRayColor node instead of textures. This makes it much easier to work on the shader and in the future these nodes will serve as a basis for the textures. Next, I try to find correct scattering radius, the optimal size is between 1.2 and 2 cm.
I add a single scattering (SS) to the shader's structure using VRayMtl with grey color linked into diffuse slot. Then I connect both shaders by using VRayBlendMtl, but pre-subtracting the value of the SS (grey color) from SSS color. The difference between SSS and SSS plus SS will be more visible when I will use textures instead of VRayColor.
Since the red color diffuse is much deeper in skin than the green and blue ones, I decided to reproduce this phenomenon in the skin shader. I split SSS color on red, green, blue (RGB) channels using ColorCorrection node. Each channel has its own VRayFastSSS2 shader with its own scattering radius; these were all merged using VRayBlendMtl (Additive (shellac) mode is ON!). Eventually I get a multi-layered subsurface scattering and a nice color gradient transition in the scattering (See comparison between single and multi-layered scattering on the image).
Then I add primary and secondary Specular shaders. All shaders are connected to VRayBlendMtl (Additive (shellac) mode is ON!). Now we can switch to the texturing process.
I made a color palette based on references and corrected by value from the VRayColor node (which is the one I used for shader setup on early stages). Now it's much easier to draw the textures. I add more color tone's variations in texture with regard to color zones of the skin.
I used xNormal filter Normals2Cavity to get a cavity map from the normal map inside Photoshop and use it as a base for Glossiness, Specular, Single Scattering maps.
Here is an easy way how to get a texture for scattering radius:
- Invert normals of the model
- Link a VRayDirt map into Self-illumination slot of the VRayMtl shader
- Bake the texture (I used VRayCompleteMap)
- Invert received texture.
(Alternatively you can swap black and white colcolors the VRayDirt then you don't need to invert texture on last stage)
Here are showed all textures which I used for skin shader. I'd like to mention that makeup is placing in overall texture, not in SSS.
Skin shader setup – part 2
Back to shader setup. This is the final skin shader's structure and as you can see the VRayColor nodes have been replaced by textures. Also, I made seamless textures of the micro geometry of the skin for different areas of the head. I assigned own amount of repetition for each texture. Each area with different pore structure is marked by mask – I kept it to three masks in one texture. Each mask is placed in its own channel (R, G, and B) which shows in the mask's images being red, green, and blue! (Actually you can hold 4 masks per file (R, G, B and Alpha channels). Why is it useful? Because you can clearly see a border of masks and avoid any gaps. I extracted each mask from the file by using ColorCorrection node inside 3ds Max. Next I merged Normal map of the head with the Normal map of the micro geometry. I repeat this operation for the Specular and Glossiness maps.
I used three shaders for the gold mask – Base, Glossy with scratches, and Dirt shaders. I used masks to limit the impact of last two shaders. Again, all shaders are connected to VRayBlendMtl (Additive (shellac) mode is ON!).
I used the standard hair generator built in to 3ds Max, Hair and Fur modifier. I divided the hair into individual strands and I applied the hair generator to each strand. The pigtail/ponytail is a different story. I used a mesh as a base as a guide for the hair generator.
- First of all I made guides with splines
- Next I added circle as cross section for these splines
- Then I used different spline as guide to twist the pigtail around the ponytail. I used Path Deform modifier.
- I selected all edge loops...
- ...and created new splines from selection
- Finally I applied the Hair and Fur generator on these splines
I used additional (but temporary) geometry as a base for the eyelashes. 3ds Max has very useful Graphite tools. I selected Draw On: Surface and picked geometry on which I will draw eyelashes. In same category (freeform) I picked Splines. So now I can draw guides for eyelashes, and after all of this I applied hair generator. I made the eyebrows in the same way.
Render and final image
After all of these steps I finally had a rendered image. I made some image adjustments, such as tinting the shadows and highlights a little bit, I added saturation, contrasts to the image (not so much)... and that's it! Thank you for reading and I hope you found it useful.