SWAT Warrior

Character Breakdown

Alsu Rakhimova

18
29

Alsu Rakhimova

3D Artist

Introduction

Hi, my name is Alsu, I am currently a student at Think Tank Training Centre on a Character for Games path.

In this article, I am going to share with you the main steps in creating my recent piece ‘SWAT Warrior’ in Unreal Engine. It is based on the concept by Dia Nak.

The goal for this project was to improve my sculpting and texturing workflow as well as to learn how to create hair cards and to render in Unreal Engine.

 

References/Inspiration

Before starting any project, I always gather a lot of reference images to make sure I understand the character design from a functional point of view. I use PureRef for that.
For this character, I gathered a lot of images of SWAT uniforms including tactical vests, belts, leg protectors, etc.

I also gathered a lot of images of cornrow braids and braid buns to have a good understanding of this hairstyle. I highly recommend watching this Youtube video which clearly shows the whole process – it is both a great reference and just really impressive to watch how much effort, time, and skill it takes to create such braids.

For the face of the character, I was mainly using Rihanna’s photos from the GettyImages website. I recommend finding images on a website like this one since it has a lot of high-quality photos that were made using the same camera lenses, on the same day, and from multiple angles.
I also collected artworks of other 3d artists as a source of inspiration and a quality I would try to achieve.

1-References

I also made a day-by-day schedule using Miro dashboard. It helped to keep track of my progress and see if I’m lagging behind anywhere.

2-Plan

Block-out

The block-out stage is very important as it helps you to see the scope of the project, understand the overall silhouette and proportions of your character. I did both block out and the sculpting in Zbrush. I think this advice “start from primaries and then slowly move to tertiaries” is applicable to every stage of character creation – sculpting, texturing, retopology, etc. Following this advice will save you time, nerves, and prevent reworking. 

I mainly use the following Zbrush features for my block-outs:

  1. For very simple objects, I use primitive shapes (Append> Sphere/Cube/etc.).
  2. In case the shapes are more difficult (e.g. jacket or a vest), I use Dynamesh + move/clay buildup brush to give it the needed shape. 
  3. For objects like straps or loose belts, I use the “extract” function
  4. In case the objects like the belts, small buttons on the pouch, I just draw them on the existing main objects using polypaint.
3-Blockout

Sculpting High Poly

Once I was happy with the block-out (i.e. I knew the overall silhouette and the shape and size of each object), I started working on the high poly stage. It included polishing the existing objects, ZRemeshing, or modelling using ZModeler (e.g. I used this tutorial for a military pouch for the character’s vest and belt). I created pants and the jacket in Marvelous Designer to have more realistic cloth folds. However, after exporting the objects back to Zbrush, I accentuated folds with inflate/clay build-up brush. I highly recommend Outgang YouTube tutorials, which share useful tips on how to work with MD files and export them to Zbrush. 

While sculpting, it is important to keep the subdivision levels of your model. This way, you can still easily fix primary shapes in lower subdivision levels, while having control of small details in higher subdivision levels.

4_HighPoly

Sculpting/Topology/Low/High/Uving 

After the high poly was ready, I decimated all the objects and exported them to Maya for retopology and UVing. I used Zplugin “FBX ExportImport” for exporting my objects:

5-Export

For retopology in Maya, I made decimated objects ‘Live’ as my high poly references and used the Quad Draw tool to create a low poly. I recommend this tutorial by FlippedNormals if you want to get familiar with the Quad Draw tool for retopology. Important tip – make sure that decimated objects do not have holes inside them. Having holes in the objects makes it very difficult to retopologize using Quad Draw. 


Baking

 
I baked all the maps in Substance Painter. Before baking the maps, it was important to make sure that the model was in a real-life scale – otherwise, you would have problems with your bakes and shaders. Since the model had a lot of objects, I wanted to utilize the “Color Selection” feature of Substance Painter. It helped instantly mask all the objects with the same Color ID. In order to have a good ID map, I painted all the objects in Zbrush, decimated them (with the “Use and Keep Polypaint” option on), and baked IDs with “Vertex Color” selected as Color Source (please see the screenshot).

6-ID-ZbrushtoPainter

Texturing 


I textured my model in Substance Painter trying to stick to a procedural method for as long as possible. This allowed me to quickly change the textures to my liking and even use the textures later as a smart material in my later projects. For skin texturing, I was using the multi-chanelled face texture from Texturing XYZ as it has both albedo and displacement maps. The maps were applied using the Killer workflow with help of R3DS Warp. It was extremely fast as it took less than an hour to get a decent result. After I applied the face texture, I cleaned it up and refined it in Substance Painter.


Hair
First, I created and baked hair cards using xGen in Maya. I baked the following textures in Maya Arnold:

  • ZDepth
  • Alpha (opacity)
  • ObjectID
  • RootToTip
  • HairFlow
7-HairCardsBakes

In order to create cornrow braids, I started with a simple braids curve brush. I placed each braid individually in Zbrush. After that, I exported the braids to Maya and unfolded each braid into 3 long hair cards.

I was using hair card #1 for all my base braids.

8-HairCards

After I applied hair texture to the cards, the hair was looking like this:

9-Braids1

In order to make the braids fuller and more realistic, I decided to use the method from the article by Ellie Porfiridou: I duplicated each braid geometry and very slightly scaled them up. I assigned hair cards from group #2 to these new braids. As a result, the braids started to look more realistic:

10-Braids2

After that, I added Flyaway cards and small strands of hair closer to the face (hair cards from Group #3) to create an effect of some hair strands slightly sticking out of the braid. The article by Emmanuel Lecouturier helped me a lot in understanding the hair workflow for braids.

11-Braids3
alsu-rakhimova-9-scaled
alsu-rakhimova-wip13-2-scaled

For the hair shader in Maya, I was using Arnold’s Shaderfx game hair. It had very nice and easily readable textures that worked well during the card placement stage.


Shaders/Technical 

After placing all the hair cards, I exported the model to Unreal Engine 4.26. I was using the MetaHuman project as my initial template in order to get access to the skin and eye shaders. Note, that if you want to use eyes by MetaHuman, you need to download the eyes meshes from one of the Meta Humans – they have very specific UVs. You can do so by using Quixel Bridge app and following the instructions by UE.

For the hair shader, I used parent material from a template Digital Humans. I uploaded my baked textures and used the following settings for the hair (please see the screenshot):

12-HairinUE2

Getting the right settings for the hair depends on the hairstyle and is mainly achieved by the trial-and-error method. Since the hair in this hairstyle is placed very close to the skin, I had to turn on the “Eyebrow” setting – it prevented the hair from “disappearing” under the skin. After I was happy with the main hair shader, I created an instance material for flyaway, hair cap, and eyelashes.

Adding VFX

For creating a cinematic effect, I took particle emitters like ‘Hallway dust’ from UE ‘Elemental Demo’ project (go to ‘Epic Games Launcher’ > ‘Learn’ > ‘Legacy Samples’) and added them to my project. I also downloaded free broken asphalt texture from Quixel Megascans and assigned it to a plane. I created a shader that utilized displacements in order to make the ground look realistic (I followed this YouTube tutorial by John Ford to create such a shader).

13-VFX

Rendering

In order to get high-quality renders, you usually want to take screenshots using ‘High-Resolution screenshot’ button. Unfortunately, this option did not work for me as the program kept crashing. Therefore, I had to use the ‘Movie Render Queue’ plug-in. I got this idea as well as many other tips from this Youtube video by J Hill – it is a great 30-minute tutorial that has a lot of useful information on how to utilize UE’s assets and features in order to create well-rendered characters in Real-Time. 

My workflow for getting high quality renders was the following:

 

  • 1) Create a Level Sequence by going to ‘Cinematics’ > ‘New’ > ‘Create Level Sequence’ and save it in one of your ‘Content’ folders.
14-Render1
  • 2) Edit the Level Sequence by adding a Camera to it in the panel ‘Track’ > ’Actor to Sequencer’ > [Camera of your choice]
16-Render3
  • 3) Cut the sequence to only 2-3 frames if you just need an image render. After that, Save the changes in the Level Sequence
  • 4) Go to ‘Window’>’Cinematics’>’Movie Render Queue’
16-Render3
  • 5) Press (1) ‘+ Render’ and pick your sequencer, then go to (2) ‘Settings’ and adjust the settings to your liking. Hit (4) ‘Accept’ to close the ‘Settings’ window. Hit (5) ‘Render Local)’ to start your render (please see the screenshot below for more details).
17-Render4

Thanks to this workflow, I managed to get both images and videos of high quality. You can find more information on how to manage your Level Sequencer on the official Unreal Engine website / Youtube channel.

Lessons learned

  1. Plan ahead and save time for unexpected bottlenecks in your project / sick days/ etc.
  2. Make sure that your high poly is suitable for retopology and animation. It is very important to start thinking about retopology during the sculpting – always ask yourself ‘can I place this object in a way that would be easier to retopologize? For example, don’t leave empty space between the pants and the tight belt. This will make the retopology process easier as you will be able to retopologize the pants and the belt as one low poly object.
  3. Upload your model in the rendering engine at the early stages of texturing. The textures that you see in Substance Painter viewport might look significantly different in the Unreal Engine.
  4. Setting up good lighting is very important. Do not underestimate lighting as it can break or make the final render. I made the mistake of overexposing my scene during the texturing and rendering phase. As a result, my textures were looking very light, and the render got very expensive. Make sure that your light is well set up from the beginning.

Conclusion

It was a big and intensive project which expanded my knowledge of every aspect of Character for games workflow and taught me about rendering in Unreal Engine. I think this project made me a bit more independent as an artist by teaching me how to research the problem efficiently and use existing techniques to devise my own approach to certain aspects of my project.

I want to thank my supervisor Nicolas Nino for his huge support and feedback throughout the project – thanks to his help, I managed to get the character to this quality level. I also want to thank the Think Training student community on Discord for their help and their support. And last and not least, I want to thank my family!

Please let me know if you have any more questions about the workflow and would be happy to help.

Thanks for reading!

18