Lvbo Huang shared with us the workflow behind the Elf Assassin Project. He shared tricks for making characters with fantasy elements refined and vivid, and skills for making hair look more natural.
Introduction
My name is Lvbo Huang. Initially driven by my interest in games and art, I chose to enter the game industry and was fortunate to become a 3D Character Artist.
Before entering the industry, I received training related to 3D characters, and after working for several years, I had the opportunity to further my studies in character rendering and sculpting. Based on the learning and accumulation from these two training sessions, my professional skills have improved significantly. I am very grateful to my mentor at the time for imparting all their knowledge to me.
In the early stages of my career, I participated as an outsourced contributor in the production of God of War and the Assassin's Creed series. In recent years, I have mainly been involved in the Where Winds Meet project at NetEase, focusing on 3D character production.
About The Elf Assassin Project
The initial inspiration for the work Elf Assassin came from a quick sketch practice of a portrait I completed. During the creation process, many new ideas were generated, such as incorporating more fantasy elements. Later, I gradually optimized and deepened them, eventually turning them into a complete workflow piece.
In this process, I found some male models as references for appearance, referenced some sculptures to build the structure, and the final rendering quality was largely inspired by the effects of the animation Secret Level. In the creation of this work, I mainly tried to make the characters refined and vivid and further enhance my understanding of Unreal Engine 5.
Modeling
When shaping the character's hair, I first sculpted the overall form, grouping, and flow of the hair in ZBrush. Then, I imported it into Maya, enabling the snapping feature to draw curves based on the previously sculpted trends. After adjustments, I converted these into XGen guidelines, forming the first level of the base hair.
Then, I selected an appropriate portion from these curves to generate the second level of hair, which lies on the surface of the first level to enrich the details. Special attention was paid to the rhythm of density and the silhouette when selecting and adjusting the curves.
Finally, I repeated the previous step to select a certain amount of curves to generate the third level of hair, adjusted the curves to the outer layer of the overall hair, set a lower value for the hair count and added some noise to create a relatively sparse and messy effect, making the hair look more natural overall.
At last, I imported all of these into Unreal 5 to adjust the color and glossiness, and the production of the hair part was completely finished.
In Unreal Engine 5, MetaHuman offers a comprehensive solution for eyeball creation, including eyeball materials, tear ducts, and shadows above the eyes. We can directly export these assets to Maya, match them with our own characters, and then adjust the material properties in Unreal Engine 5.
The only thing to note is that in the Unreal 5.4 version I used, the original eyeball shadow encountered display issues when rendering with Path Tracing, so I assigned it a base material and then re-drew the shadow part of the texture in Substance 3D Painter.
For the equipment creation part, I used ZModeler in ZBrush to build the base model, and then directly proceeded with wrinkle sculpting.
In order to save time, I have tried to minimize switching between different software during the modeling process to maintain a smoother workflow since my previous work. Therefore, I learned ZModeler and enhanced my ability to sculpt folds.
In the early stages of trying to do so, it may feel a bit uncomfortable, but once you get used to it, you will find that ZModeler is a relatively convenient tool. Using ZModeler when creating models with low complexity can save a lot of time and provide a better overall experience.
As a personal work, I did not strictly follow the topology rules for game or CG characters. Most of the character's components in Unreal Engine 5 are low-level versions of the models I sculpted in ZBrush, and I used Maya for UV unwrapping and layout. Simplifying the production process as much as possible is one of the goals I am striving to achieve this time.
Texturing
For the skin texture, I used 3D Scan's scanned portrait material, which provides excellent facial texture details and a base color map. After processing the character's facial texture in ZBrush, I baked Normals, Curvature, Cavity, Occlusion, and Albedo Maps in Marmoset Toolbag.
Then, I proceeded to correct the basic skin texture map in Substance 3D Painter, which mainly involved the following steps:
- Correct some flaws in the original skin texture
- Divide the colors of different areas of the face
- Enrich the details of the color texture
- Import the occlusion texture to moderately enhance the sense of volume on the face
- Add some acne and moles to enrich details and enhance realism
- Use Curvature and Cavity maps to handle the model's specular and roughness, paying attention to the glossiness of different facial areas, and finally add moderate noise to simulate the oil reflection on the skin surface.
For the texture part of the clothing, I used the smart materials sold by Javad Rajabzade on ArtStation as the base texture. These materials come with quite excellent preset effects. When using them, I only needed to adjust the color and texture ratio according to my own needs. I could use the preset dirt and aging effects or add or remove them based on my own requirements.
Based on this, I added some damage and simple patterns to the clothes according to the character setting, thus completing the clothing texture part of the production.
Lighting & Rendering
The implementation of lighting effects is relatively simple. First, I added a skylight with low brightness to the scene. Then, as shown in the figure, I tried using two lights with the same angle of incidence but different ranges to overlay, thereby enriching the layers of the structural face. I used a bottom light and a side light to prevent the character's side and neck area from being too dark. I also added a backlight on each side to clearly outline the character's silhouette.
The entire character was rendered in Unreal Engine 5 using Path Tracing. In post-production, I adjusted the character's exposure and saturation in Photoshop and added a subtle amount of noise.
Summary
The entire work took about two months. When creating this character, since there was no clear conceptual design at the beginning, the process went through several iterations (including the facial design and costume design) to achieve a more ideal result. That was also the biggest challenge in the creative process.
Optimizing the entire character creation process and dedicating more time and effort to the creative or shaping aspect itself is a valuable lesson I have learned.
For beginners, moderately restraining perfectionism psychologically and enjoying the process of creation itself can help you smoothly advance in the process of creating works.