Knight
Introduction
Hi, my name is Alexander.
I am a 3D artist from Russia, and I have been actively involved in 3D since 2020. In 2022, I completed my master's in engineering and decided to change my occupation and dedicate myself to 3D graphics.
Project
I have made several attempts to get into Unreal but they were not very successful. With UE5, I have decided to take a deep dive into it and start learning it seriously.
For this project, my main goals were:
- Learn how to rig a character and be able to retarget it to the UE5 character blueprint.
- Learn about shaders in Unreal.
- Start practicing hair design as it is one of the things that showcase the personality of a character and helps with storytelling.
References
The references that had the greatest impact on the work are as follows:
For this project, I had to find numerous references from Pinterest and Google. To ensure high-quality references, I utilized the collections of the Metropolitan Museum of Art in New York (MET NY), the Royal Armouries in the UK, and Timur Kvasov’s Free Medieval Armour Pack.
MET NY
Royal Armouries
Timur Kvasov Free Medieval Armour Pack
ZBrush Sketch and Inspiration
This project originated from one of my head studies and my exploration of Warhammer Empire knight fan art. However, I changed direction and made the decision to finish this work. Initially, I had a rather superficial understanding of armor before embarking on this project. Now, I feel much more confident in this area.
Design Progress
As you can see in the early stages of the work, there was symbolism representing the imperial faction at the beginning. In fact, this is where I originally drew inspiration from. Then, I began to study real armor in more detail and encountered the beauty of the Italian armor school. I took the Maximilian armor as a basis because I really liked how it managed the wasp waist and fluted reinforcement.
As a result, the design is not historically accurate, but I believe it is quite functional. By the way, regarding the plausibility of such armor in real life, my design has one assumption that I made for the sake of artistic value. I covered the fold at the elbow joint, the armpits, and the back of the armor with clothing. In real armor, it would have been covered with chain mail.
After successfully creating a couple of parts of the armor (breastplate and shoulders), I decided to continue in the same style by adding flutes to the elbows, gloves, and knee pads. As one very talented artist once said, “Let your design inspire you.” I also tried to alternate the places of detailing and relaxation along the entire body and supplemented the composition on the back with a handbag and a flask.
Armour
Armor creation is a rather specific task, requiring special skills to work with curves and clean shapes simultaneously. When dealing with organic shapes, we need more topology, whereas for clean shapes, we aim for minimal topology. Therefore, creating armor involves finding a compromise between these two endless tasks.
In this project, I experimented with three methods of creating armor elements.
The first method involves creating topology using ZRemesher and ZModeler. I learned this technique from Sheng Zhong, who can be found on YouTube under the name Zetheros. He is a genius when it comes to making armor.
To achieve this, I prepared the base in Blender and then edited it in Zbrush. Below is a mini tutorial.
- Polishing features will help you achieve a clean and neat shape. As a result, you will obtain a model with good topology. Additionally, with the Delete Loops function and some manual work, you can create your low-poly model quite quickly.
- Making flutes by hand. This method requires practice and a steady hand. However, you are not limited by topology and can achieve some interesting shapes. It is also recommended to temporarily move the object to the center of the scene to work in symmetry mode or use the new Gizmo symmetry.
3. Just hard model it, if the element is not very complex.
For bag creation, I quickly created the base in Marvelous Designer, ensuring proper topology. I also generated UV maps within Marvelous Designer.
After that, I exported the UV island map from Marmoset and hand-painted the pattern in Photoshop. Finally, I created a displacement map with height outlining in Substance Painter.
Retopology and UV
Since this is a personal project, I wasn’t limited to polygons, so I provided enough polygons for small details like rivets and fluted parts, especially in the upper chest, so they don’t look angular in close-ups. Meanwhile, I tried to simplify the overall and less important parts. The total triangle count for the armor is 230k.
As for the UV, I aligned it in a logical direction to facilitate directional polish and the anisotropic effect inside Unreal Engine.
Texturing
Right from the start, I recommend you to set up working color management as ACES 1.2. It helps maintain consistent colors and reduces guesswork between Substance Painter and Unreal.
At the beginning of texturing, I usually create custom RGB channels and separate materials.
Here, I have steel, gold, and masks for non-metal parts. I use them later in the Unreal shader to have control over the base color and roughness of specific parts.
I wanted my armor to be in good metal condition but look really dirty, as if it were right after a battle.
First, I created a base with slight variations in color and roughness, using metal polish.
Second, I added damaged and fluted details. I created them using an edge mask and outline filter.
Third, I incorporated large areas of dust. I usually made them larger as needed, smudged them, and then subtracted them using stencils or procedural textures. For me, the technique of subtracting worked better when stacking layers.
Finally, I added more stencils and made adjustments to the post-process layers.
For leather and cloth elements, I’m focusing on strong color gradients, variations in edge roughness, and dirt.
Head
For skin details, I used the 3D Scan Store’s head topology and displacement map.
Head Sculpt
I took the MetaHuman eye setup and made some tweaks. I incorporated a caruncle with a transparent interior for a seamless transition.
Instead of using the MetaHuman pupil, I used a custom texture and implemented a texture post-processing setup to gain more control.
Scalp and Hair Cards
For this project, I attempted to create a detailed sketch using curves to outline the profile that I can later transfer partially onto hair cards. Firstly, I divided the hairstyle into three parts: the temple (green), top front (blue), and back long hair (red). I created a base shape and generated curves based on that shape. Then, I added a few layers without texture to focus on the shape, logic, and flow initially.
To ensure a smoother transition, I painted the hair on the head texture. I began by painting guidelines and then worked on the major parts before finishing off by adding bright, transparent hair across the head.
Nowadays, hair creation is much easier with new tools like the Hair Tool add-on for Blender and FiberShop for textures. FiberShop hair cards have some limitations, but it’s procedural, which allows for fast iteration, avoiding the geometry baking process.
So, as I mentioned, I changed the solid profile to the hair card profile, defined texture UVs, and separated the curves into layers.
My main focus was on hair-splitting and the transition from skin to hair.
Unreal and LookDev
The transition from Marmoset to Unreal was not an easy task for me. There was a quiet struggle with lighting and tons of settings that immediately overwhelmed a beginner like me. However, over time, I began to appreciate the ability to customize everything. I really love the Unreal Shaders system, as it allows for extensive post-processing of texture maps, material blending, and processing multiple instances, which provides a great tool for Look Development.
In the DefaultEngine config file, you can write console commands that will load every time with your project.
Config path
r.Streaming.PoolSize=15000 – I used it because of a problem with automatically lowering textures over time while working.
r.Tonemapper.Sharpen=0.7 – I used it for better rendering, as it makes the image look sharper.
Here, I used a Material Parameter Collection to tweak the values of multiple instances simultaneously. This is particularly useful for armor, as you can experiment with different color tints and roughness values. To isolate the steel parts, I utilized an ID Masks map.
Conclusion
In conclusion, the move to Unreal Engine opens up many possibilities for elegant workflow solutions. I made sure to take more time to practice the hairstyle as it has a huge impact on the character as a whole. In the end, I was satisfied with the result and the experience I gained.
However, I was not able to fully achieve one of the goals of my project, as the model turned out to be quite heavy for the initial attempt to rig. I will try to implement this task in future projects.
I want to thank Games Artist for the opportunity to share the process of creating this work.