Introduction
Hello! My name is Pedro García and I'm a Character Artist from Spain.
I have been in the industry for around 3 years and I worked on Total War: Warhammer 3 and a few unannounced projects.
Goals
Working on personal projects is always an excuse for me to keep practicing and improving my skills.
In this case, I set the goal of creating a high-quality real-time character in Unreal Engine 5. Besides, I was very excited to try out some of the new features they introduced.
I chose Tooth Wu’s concept art because I wanted to make something a bit more exaggerated in terms of proportions than what I already had in my portfolio, and the character design was just so cool.
Software
- Zbrush
- Marvelous Designer
- 3DCoat
- Rizom UV
- Substance Painter
- 3DS Max
- Photoshop
- Unreal Engine 5
Sculpting
I always open the concept in Photoshop to check the proportions before starting to sculpt. This step is quite important for me because, for a character like this one, nailing his proportions is key to conveying his personality and making him look tall and majestic.
In this case, I wanted to focus on the proportions and silhouette of the whole character, so I worked on everything at the same time to have an equal level of progress all around. I started with a human base mesh that I moved around quite a bit, and then I began to add the different pieces of armor and cloth.
The head in the concept looks a bit more elongated than what I made because I wanted to go for a more “realistic” approach to the bone structure, but I think it ended up looking good enough in the engine.
I used an alpha of pores for some areas, but most of the details were added by hand using the “DamStandard” and “Slash2” brushes (the latter can be found in the Lightbox in the “slash” folder). I used the classic “Claybuildup” brush in the lower subdivisions to give it an organic touch.
Cape
I took some references to check how the scales would be arranged on the cape:
First, I masked the back of the character and used the “Extract” feature to obtain a mesh to start with. Essentially, I pulled it to give it the shape of the cape and used “ZRemesher” as much as necessary.
1. Here, you can see the basic mesh that ZBrush gave me after using “ZRemesher” several times.
2. I took the mesh to 3DSMax because I needed to adjust the arrangement of polygons slightly in order to achieve the desired look based on my reference.
3-4. I selected all the vertices and applied a “Chamfer” with the settings shown in the image to reorganize the polygons (remember to weld the overlapping vertices before returning to ZBrush). Now, we have a new arrangement of polygons that will allow us to place the scales in a more visually appealing way.
5. I created a simple scale and distributed it all over the mesh using “Nanomesh”. I adjusted the settings to introduce some randomness, so it doesn’t appear too procedural. I also removed unnecessary parts of the cape that I wasn’t going to use.
I followed this process again to position the low-poly scales after retopology, UVs, and Baking.
Armour
I created each armor piece using the following process:
- I masked the body and extracted a mesh without any thickness. Then, I shaped it according to my preferences and utilized “ZRemesher” as many times as necessary.
- After achieving the desired shape, I added thickness using the “ZModeler” brush. To maintain the angles I liked, I used “crease” with “ZModeler” and experimented with “Polish by Features.”
- To add some variation in lighting, I employed “TrimDynamic” and “DamStandard” techniques.
Example of how I created all the ornaments to decorate the armour:
For some other examples below, I used the “Orb brushes” to carve some lines and “TrimSmoothBorder” to create surface variation.
(I repeated the steps shown above a lot of times to combine different meshes and make the overall piece look interesting):
Retopology
Since this is a real-time character, the topology must be ready for animation. So, I basically added edge loops around the joints that will bend when the character moves (elbows, shoulders, knees, etc.).
Something else I had in mind was to keep the silhouette of the high-poly model as intact as possible.
UVS & Baking
RizomUV is my software of choice when it comes to UVs. I tried to hide the seams as much as possible, and since I had a lot of armor pieces to cover, I created a seam on every edge that had an angle of 90 degrees or below. Otherwise, the maps wouldn’t bake properly.
My textures are 4K but the weapons are 4K x 2K since the meshes are thin and long and they don’t take up much space.
I used Marmoset 4 for baking because it’s incredibly fast and gives you a lot of control when baking your maps. Something I find very powerful is that you can create folders and group your meshes as you please.
I baked the scales I created for the high poly in three different meshes in order to keep my silhouette accurate and save some polygons:
- Blue meshes are a low poly version of the scales I created in the high poly. Making this low poly version will help me maintain the silhouette when the character is viewed from the front.
- Red meshes are just one-sided planes to help me create a transition between the blue ones and the cape.
- Green is just a low poly version of the cape that I used to bake the rest of the scales.
Texturing
Head
I always start texturing faces from scratch because it’s something I really enjoy. In this case, I focused a lot on the Diffuse map and tried to contrast his features so they can be read well from afar.
For instance, I darkened the eye area quite a bit because I knew the eyes would be purple/pink, and this would create a huge contrast. I saturated the rest of the features a bit for the same reason.
I also played with the Cavity, AO maps, and “Smart masks” to create some skin variation here and there.
Don’t forget to constantly check how it looks in the engine because there’s usually a huge difference between viewports.
I really recommend this tutorial about texturing organic creatures Maria Panfilova made a while ago.
Leathers
I combined Substance Painter Smart Materials with some scanned textures to add a touch of realism.
For this character, I utilized Quixel’s impressive library because it offers a wide range of textures and provides various maps that can be advantageous (diffuse, normal, cavity, roughness, etc.).
Metals
The armor was looking a bit dull in Unreal, and I thought it was due to the lack of variation in color and roughness. I tried to make it more interesting by adding some purple and blue variations to the Diffuse using “Smart Masks.”
To provide contrast, I included a warm color in the Cavity/AO and a brighter color on the peaks using the Curvature map. Additionally, I experimented with grunge maps in the Roughness map to make the reflections more captivating.
Material Set-Up in Unreal Engine 5
I didn’t do anything fancy with my material set-up inside the engine; I simply followed this excellent tutorial made by JHill regarding this topic.
Here are a couple of examples:
Hair
Looked for some references online before starting to work on the hair:
I created the hair textures in ZBrush using ‘Fibermesh.’ I placed a plane facing downwards, masked it, and enabled Fibermesh.
I recommend this ArtStation post where the grooming process is explained.
I always lock a camera and save it in a folder.
Locking the camera allows us to export the maps we need, always from the same angle, and saving the camera is crucial since we need to load it every time we reopen the file to tweak our textures.
I then exported the maps I needed and made some adjustments to use them in Unreal.
I created groups of cards and manually placed them in 3DS Max using a spline and the “Path Deform” modifier.
To create the base of the braid, I used the thickest card and turned it into a tube that I manually placed. Then, I added the flyaways on top.
I used the Hair Material that comes with the Paragon characters, which you can download for free from the Epic Games Marketplace, and migrated it to your project.
Pose
Fortunately, the pose is quite simple, so in this case, I used the classic “Transpose Master” in ZBrush.
I masked the parts of the body I needed to move, and I used a combination of the “Transpose” tool and the “Gizmo”.
Lighting & Rendering
I began my scene by importing half of a “ChamferBox” that I created in 3DS Max to use as my simple background. For my key light, I opted for a “Rect Light” since it produces softer shadows. Additionally, I added some rim lights to distinguish the character from the background.
To enhance the overall appearance of the scene, I incorporated an “ExponentialHeightFog” and a “PostProcessVolume.”
In the beginning, it always looks a bit too dark, so I added some fill lights and a “Sky Light” to make the subject more visible. I don’t want my character to be lost in the shadows.
This is a long process of trial and error, to be honest, but be patient because this is one of the most important parts of the whole process. This is the moment when your character has to shine.
I also used some “Point Lights” to highlight certain pieces of the character that I wanted to make pop.
For an in-depth understanding of lighting in Unreal Engine, I highly recommend the YouTube channel of William Faucher, especially this video.
If you are interested in movies and lighting, you may find this account interesting.
Tip: Take a look at the “Samples” section in the Epic Games Store. You can get free resources to improve your scene; you just have to download the project and migrate what you like to your project. For instance, I found particles that I used around my staff and smoke to put behind the character, etc.
For rendering, I used the “Movie Render Queue” feature, which I love since it allows you to obtain high-quality images and is easy to set up.
Once again, William Faucher has a very thorough video explaining the Movie Render Queue.
Conclusion
I’m glad I finished this project because I’m really happy with how it turned out in the end, and I learned a couple of things along the way!
Thanks for reading until the end!