Tips on How to Achieve Photorealism with 3D Characters
Since he was a kid, Tomas Sackmann loved art and design. In Argentina, Tomas studied Industrial Design. A few years ago, a colleague of his shared work he created whilst studying at Think Tank Training Centre Online and the quality of it, motivated Tomas to join the school and get into this world.
Tomas aspires to work in big production pipelines at studios like, Scanline, ILM, and Pixar. He shares with us his tips on how to create a photorealistic 3D Cyberpunk character.
Below you will find the process I followed for my Intermediate final project at Think Tank Training Centre Online. For this term, I decided to make a character with robotic props to allow me to develop both my organic and hard-surface modelling skills.
Instead of following a concept 1 to 1 as in my final project for the foundations term (link here), for this project I decided to leave myself a bit of freedom taking some elements from different concept artists.
The hardsurface elements were inspired by Abran Khan and Sparth concept art while for the girl, I allowed myself to play a bit with the design.
I imagined her as the main character of a movie; she had to be attractive but at the same time, strong and tough. I took as a reference different pictures of girls in similar environments with particular characteristics that I found interesting from each of them.
The softwares I used:
- References: PureRef
- Modelling: Autodesk Maya
- Sculpting: Zbrush
- Hair: Xgen
- Clothing: Marvelous Designer
- Texturing: Substance Painter and Foundry Mari
- Lighting and rendering: Chaos Group Vray
- Post-production: Adobe Photoshop and Nuke
Blocking in ZBrush
Even if it is most known for organic sculpting, Zbrush is also a great tool for creating hardsurface concepts. It allows you to block out the design without thinking about topology and this speeds up the process significantly.
I started the process doing a quick model of the head of the character to take as a base to build the helmet. When I got the head done I started blocking out the helmet starting from a sphere and using mainly the move brush, clay build up and dam standard.
After the block out I used Zremesher and Zmodeler to start to get the surfaces a bit cleaner. The polish brush is a great friend at this point.
Anatomy and Topology
In this part of the process, for two weeks the priority was the character itself. That's why I forgot about all the hardsurface parts and I focused mainly on her.
After a first sculpt block out there is a moment when you cannot push the Dynamesh anymore, so it is time to export the mesh to Maya and rebuild it with the proper topology.
That mesh with the right topology needs to get back to Zbrush, subdivided a few times and the detail reprojected from the original sculpt.
As the main goal of this project was to learn as much as possible and the productivity in time was not the first priority, I decided to sculpt all the skin details by hand in Zbrush. In a production environment most probably this will be done projecting textures like texturing xyz, allowing you to have photorealistic details in a shorter amount time.
Hardsurface Modelling and Retopology
The two main hardsurface elements of the artwork had two different workflows. For the half helmet I brought the high res mesh from Zbrush to Maya to use as a base. With the quad draw tool I retopologized the piece in a really low res to have the proportions right but after this there was a long process of remodelling and adjusting the design. The Zbrush model was a good starting point and it is a quick way to concept ideas, but for objects like this it is much cleaner to do it in Maya.
For the weapon, I started the model directly in Maya. I started placing the 2d concept on my side view and with the quad draw tool started defining the main shapes applying the edges on the surfaces angles.
Even if the main body of the gun is divided in several pieces it was essential to model it in one piece at the beginning to keep the correct flow between the parts. This was a particularly difficult part of the model because of the amount of plane shifts on the surface.
Try to keep your UVs organised, with the same texel density (scale) and symmetry as you can. It will make your life much easier after.
For the posing I gave it a first shot with Zspheres but I realised that it was going to take me longer than the one day I had scheduled to do it, so I decided to do it with the transpose tool and masking instead.
Polypaint Zbrush - Organic
As I mentioned before this was all about learning, so I decided to do all the texturing by hand trying to use as little projection textures as possible. Again the most productive way to do this would be with texturing xyz but painting the textures by hand allowed me to understand better the variety of colours and textures that the skin has.
It's really important to understand that the skin has a lot of colour variation even if we don't realise it. The older the character in general, the more the variation increases.
I did a first pass of polypaint in Zbrush that allows you to paint directly in the 3d surface.
Substance Painter - Hardsurface
For the hardsurface models, almost everything was done in substance painter. I did a first pass with some basic smart materials to block out mainly the colours. After this I started almost all the materials from scratch again to have more control.
In general, the materials I started with, were given some procedural masks and then a lot of hand painted details and scratches to give a more realistic look.
Procedural masks and smart materials are great, but in general it is quite easy to spot if you use them. For example in the case of metals, the edge wear mask is a great point to start, but it will give you a too even distribution in every edge. In real life that never happens like this. To break up this edge mask with hand paint and deciding where to show each break up or scratch is the best way to tell the story of the object.
Tip: subdivide and soften edges of your mesh before importing it to Substance. This will give you a better resolution on the masks that Substance bake, and it will prevent them to be faceted.
Mari - Organic texturing, dirt and dust
After having a polypaint base from Zbrush I brought the character to Mari to go more in detail on the different maps. A good diffuse colour map with nice variation is key and it will allow you to extract data from there to the other maps as bump, gloss, SSS, etc.
When I had all the textures done for the organic and hardsurface elements in different softwares I packed everything in one .obj and put it through Mari to do the final masks for the dirt and dust. This was what made all the objects of the piece match with each other.
In Maya, I used the above masks to do two different materials for the dirt and one for the dust. This allowed me to layer them on a VrayBlendMtl to have more control on each of them.
Xgen - Grooming
As the hair was not a priority and the main goal of this project was more modelling and texturing, I scheduled only a few days for Xgen. It was a learning process with a lot of frustration. If you want to achieve a good level of realism in your grooming I would really recommend to leave a good amount of time for this and as always collect a good amount and good quality references before you start.
I used Xgen core, placing the guides one by one and then as you can see in the image I used a few modifiers with random expressions to give variation.
Shading and lighting
For the shading I used a few blend materials to overlay the dust and dirt on top of the original material for each object. This was key to allow me to control the colour of the different materials individually directly in Vray without the need of returning to Mari each time I wanted a change.
Rendering and turntable
In projects like this, with textures of several UDIMS (around 60 for this character in total) and displacement maps you always need to consider that the renders will take long, for sure this will vary depending on the resolution of the renders.
In my case, I had to do a turntable of 200 frames in 1920x1080 that took around 3 days to render. Here you need to do a test frame in the desired resolution and adjust the settings until you get the time per frame that fits with your scheduled days for rendering.
The still renders were in 4k, 6k and the main in 8k, so these also took several hours to render each one. Always leave a window buffer in case something goes wrong. I scheduled one full week for rendering.
It was a great learning experience, I loved to work on it and I learned a lot on the process. But it also showed me how much more I need to learn.
Big thanks to my amazing intructor Magnus Skagerlund and to all my colleagues and people from Think Tank that are making this journey better and better.
Last but not least a big thanks to my wife Valerie. In the middle of the project we had to live the most difficult moment of our lives, and our mutual support was key to keep going.