Guellor Maweja showed how the real-time female afro was created, demonstrated how FiberShop was used for texture creation, and explained how GS CurveTools helped with card placement.
Hi, my name is Guellor Maweja, I am a 24-year-old Congolese artist from the Democratic Republic of Congo. I am currently working as a 3D Artist specializing in real-time hair creation for games at Share Creators. So far in my career, I have gotten to work on IPs such as Diablo, The Lord Of The Rings, Call Of Duty, and many more.
I spent most of my life in South Africa; growing up, I always wanted to do be an artist, but those ambitions were always geared towards 2D art. After finishing high school in 2015, I played around with the idea of doing 2D art or going to business school but after seeing all the cool stuff my brothers were doing in 3D, I decided to take that path instead and attended a 3-year course in 3D animation at Boston Media House in South Africa. There, I learned about 3D animation and being a 3D generalist for the entertainment industry in South Africa. I did not learn 3D character art for games though, and that is something I wanted to do when I started learning 3D, so during my time in college, I started teaching myself game art because the end goal I had in my head was to work for the games industry, specifically the American and European games industry.
I started freelancing as a 3D character artist in 2020-2021 and focused on real-time hair creation for games in 2021. I had realized that this was an area in the industry that not many people specialize in, and as a character artist you have to make hair for your characters anyway, so I thought this would be a good way to improve an already needed skill as a character artist and solely focus on that aspect as a career. In 2021, I got to freelance as a hair artist for Devoted Studios, CGHero, and Share Creators. Later that year I accepted a full-time position at Share Creators where I work as a 3D artist specializing in hair and also occasionally as a character, prop, and texture artist.
The Real-Time Afro Project
So, let's talk about the project. I recently wanted to start pushing my skill set even further outside of work so I wanted to start doing some new portfolio pieces and show people what I am currently capable of doing. I also want to start teaching people my approach to making real-time hair as I have taught myself this aspect of game art.
I have also learned a lot from just the mere fact of having to do it every day at work and also learned a lot from fellow colleagues like lead artists Eric Maweja and Andre Pires, they have taught me a lot in this field and yes, one of them is my brother, he has taught me a lot, and if I ever need to know something, I always ask him for help. In fact, the textures used on this project were actually made by him, so I would like to give him a shout-out for that and say thanks.
I will be going through different topics for creating this hairstyle: from the philosophy to the tools and some tips and tricks to help people tackle such a hairstyle and also apply it to other complex or simple hairstyles.
My goal for this project was to make an awesome addition to my portfolio that displays my current skill level and my understanding of creating quality appealing hair, that is what I have set out to do with my recent portfolio pieces and that is what I tried with this hairstyle as it is a challenging one and not easy to get right as for its complexity, I hope I achieved what I set out to do when people see it.
The challenging thing about this hair was to get a good amount of volume, negative space, and also a good sense of layering. Alongside this was the challenge of not having the hair look too straight or too wavy, as you will see from my references, some of the curls can be quite straight going down in relation to the viewer or a little angled coming towards the viewer; finding a balance between these aspects was what helped me finish the hairstyle and get a good result. There was a point when I wanted to pause the hairstyle, and when I had mentioned that I was having a difficult time getting the look I wanted, I received a few messages from fellow artists in the industry telling me they liked the look of the hair. I also received some feedback from my brother Eric Maweja and another hair artist Miroslav Disanski, it is always a good thing to be open to feedback as an artist because at work it makes up most of what you do as you have to either address feedback from your art director, leads or clients.
So first I start off like any other project: I gather references and in this case, made sure to gather enough images that would guide me in the process of the type of afro I wanted to make, which was an afro with big curls. This was a challenging task because I have not done this type of hair before and this was going to be a first, so it felt fun and a little scary to try and make sure I captured the feel as best I could, a big part of doing so was getting a good sense of volume, negative spaces layering, and a cool aesthetic.
Regarding the software that was used, the biggest ones people need to know about that made this whole process fun and fast were FiberShop and XGen for texture creation and GS Curve Tools to place the hair cards. As I mentioned earlier, the texture was created by my brother, but I will be showing you what you can do in FiberShop to create textures like the ones I used, with an example of the cards I used to create the hair. As you can see, there isn't a crazy amount of variation because these were all I needed to use.
FiberShop for Texture Creation
There are two ways you can go about making curly hair for a project like this one. The first is creating curly hair in XGen that wraps around in a shape of a tube and then you can bake the textures in xNormal onto a tube, that way you have a good shape that twists and is not flat. Most of the time hairstyles like this are made with flat curly textures and then around the edges of the hair you get a twisted mesh that is not flat, which seems to be usual for this type of hair for games. For this project, I did not want to use flat plains with curly textures, I would recommend that people use tubes with baked texture twisting around the tube, or you could go about it another way, and that is what I did.
The second option is to make a wavy texture that looks something like this, then you map it onto a tube and after that, you twist the geometry of the tube in order to get a nice twisted curl that works well for this kind of afro hairstyle.
So here we are in FiberShop, I'll go through two different types of hairs that were used for the project and how you can go about making them for yourself. So first off, we are going to use one of the new cool features in FiberShop – the draw mode, where you draw out how you want the shape of your hair to be. We will be making something very simple, so you start by drawing your shape like this.
After that, we will start playing with some settings. I recommend you always test all the parameters in each setting to see what each parameter does to the hair.
The first thing we are going to do after we have our shape is change the clump strength by lowering it so we get the hair a bit looser than it was, and we will also be increasing the segments. What this does is increase the CV points for those that are familiar with hair creation in XGen.
After that, we add Curl and Noise modifiers again, I would encourage you to play around with the settings for both these modifiers until you get something that you like and that has some slight shape variation and noise and is not uniform. After that, we are going to go back to the main scatter and increase density and with that, we are done with this texture. The thing I like about FiberShop is that even after you are finished, you can start testing this out on your character and if you have any changes, you can just quickly hop back into the program and make your changes. This is not really the case with texture creation in XGen and xNormal.
Here is another example of creating a texture that we are going to be using for our final layer of the hair. I will explain the layers when it comes to hair creation later, but for now, here is a breakdown of the said texture.
First, we start off by creating a new block and then adding a clumping modifier. After that, we play around with settings for width, depth, width density, randomness, and strength until we get something that we are happy with. After that, we add a noise modifier, crank up the strength of the noise, and then finally decrease the density of the hair since this will be used for flyaway hairs. Then I also reduced the strength of the noise by a bit, and with that, we are done with the two types of textures we will mostly be using for the project. The other type is just an afro-type texture, one that is dense and one that is more sparse. I will not be showing how to make this texture but I will show you what it looks like in my placement scene.
Last but not least, we will bake and export these textures, and it's as easy as one click to get multiple different textures that will be useful for the shader of the hair.
GS CurveTools for Card Placement
I used GS CurveTools for the card placement, this is what my workflow consists of when making real-time hair. I cannot praise this tool enough for streamlining my workflow and being a good addition to the pipeline. It helped make real-time hair creation very fun and iterative, it's nondestructive, very orderly, and helps you make changes to your projects very fast, from optimizing tri count to organizing groups and keeping track of all your cards as you go. Overall, you can do some really cool stuff with this tool, gone are the days of using bend modifiers and moving verts. Although a lot of times, you may find yourself depending on the project, needing to move verts, and using modifiers, there was no soft selection vert movement for this project, and that’s why I love this tool.
If you do not use it and want to learn, the creator has some really good videos on their YouTube channel, I will not go over everything there is but I will explain what aspects of the tool I used for the project.
So now on to some aspects of the tool that I used. Here you can see the layer system, you can place whatever you want in a layer, for this project, I placed each layer of the hair in a corresponding layer: 0 has the base layer, 1 has the secondary layer, and 2 has the tertiary layer.
The first layer I use for the blockout of the hair, here is where I plan the overall base shape and get a good sense of volume, this is a very important step for this project. There are many different ways to go about doing hair and here, I chose to go with 3 layers. Some projects can go up to 4 layers, it depends on your needs and if you have a cap that’s used to cover the scalp of the hair. The base layer also served as a way to cover any gaps that could show the skin underneath.
The secondary layer was used to flesh out the hairstyle and start putting in the landmarks for this type of hair. This layer consisted of twisted tubes that had a wavey texture assigned to them, this is what it looks like before and after twisting the tube, the width parameter was also altered to get some randomness in the shape. It is the same for the fly-away hair, it’s the same tube but with a different texture.
The third layer was used to add to the silhouette of the hair and help break up the look in some areas. It is also used to help add a fluffy or softer look to areas of the hair.
There were 4 different aspects to making this hair that were very important: silhouette, layering, negative spaces, and volume. When I refer to layering in this instance, I am not talking about the 3 layers that comprise the hair, I mean the technique that is used in real life to help the hair have more volume, and this is done by having the hair cut in different lengths and have each layer rest on top of each other.
In the images, you can see a visualization of the layering of the hair. Another great thing to have for almost all types of hairstyles is negative spaces, this is when there are areas in the hair that have obvious occlusion and space between the strands.
The volume of the hair was a tough thing to achieve, even though there is clear layering to the hair to help with volume, it was still missing the type of volume we have in the end product. What I did to help with this volume was adjust the overall shapes of the hair and also introduce a lot more negative spaces this really helped sell that the hair had volume.
Adjusting the Silhouette and Shapes
Here, I will talk about the tools I used to help me achieve volume and also randomness and waviness to the curls the hair was missing to get it to that final push of achieving what I wanted. One great tool to use for your shape changes, especially if you want to make massive changes to a lot of hair, is the Lattice tool. It saved me a lot of time to get good broad changes to the entire hair with ease.
Now regarding the curls, I already did the majority of the whole hairstyle, and as you can see from some of these references, a lot of these curls are relatively straight, but that was not really working well with my hair. From other references, I could see that some of the curls were wavey, so I wanted to incorporate areas that had wavey curls and some that were relatively straight. My initial thought was to start going through each and every curl and make them wavy, but this was taking more time than I wanted to spend on this, keep in mind that you don’t want to spend a lot of time on something and then realize that it does not work. So what I decided to do was use a curl modifier and since GS CurveTools uses curves, this worked very well, all I did was select all the specific hairs that I wanted to make curly and apply the modifier. I did a few tests until I found the values that worked well and then went along different curves and adjusted them to look how I wanted, this really saved me a lot of time and I could keep iterating until I got the look I wanted.
Throughout this project, I was working on only one side of the hair and after I was satisfied with what I saw, I would mirror the hair. Finally, in order to get something that didn’t completely look symmetrical, I ran a Curl modifier on the mirrored hair, and this helped me get variations without manually going into every single curl and making changes.
For the presentation, I used Marmoset Toolbag 3. When it comes to hair, it's all about what you prefer your hair to look like and playing around with the different settings for your shader.
I would like to tell artists out there that you should never give up on hard projects because when you are having a hard time with a project, that means you are growing as an artist and it will only ever be worth it to see the project through. You should never be scared to scrap certain things or even redo something entirely even if it's taken days to complete, especially with personal projects, always try and push them as far as you can.
When it comes to real-time hair, it can be a very laborious process, but I always have a great time getting to create something that’s fun in different hairstyles and I really like the fact that it has become such a big career path that you can find many studios that have a dedicated job position for a real-time groom artist.
I have not followed any courses on hair creation as I am self-taught, but being self-taught has its problems when you hit a wall, so in the future, I would like to make some hair tutorials. I plan on releasing a course for making simple to complex hair next month, so be on the lookout for that on my ArtStation, but for now, if you are looking for a good course from a great artist, I would recommend you look up Andre Pires, who is a great hair artist and has been my lead on many projects.
I hope this has somehow helped someone, and if you ever want to know more, feel free to reach out to me via email or my ArtStation. I also have an Instagram account, where I post a lot of work in progress images of my projects.
Guellor Maweja, 3D Character Artist & Hair Specialist
Interview conducted by Arti Burton
You may find these articles interesting