2025 | WINTER REGISTRATION NOW OPEN!

Make sure to Enroll Today!


All articles

Real-Time Character Creation

Bailey Wheatland prepared a great breakdown of his real-time character Amasol: building a female figure and facial features precisely, creating voluminous hair, experimenting with shadows in UE4, working on the corset material, and much more.

Introduction

Hello, my name is Bailey Wheatland. I am a character artist and a recent graduate from the Savannah College of Art and Design (SCAD). I currently reside in the small town of Streator, Illinois where I have lived for most of my life. As a child, I always had a massive interest in video games. Some of my fondest memories include me and my family having Crash Team Racing tournaments at my aunt and uncle’s house. This formative gaming experience is what led me to love them as deeply as I do now.

For as long as I can remember I have always been referred to as the “art kid”. I would make my own comics, create new dinosaurs, and write short stories just to keep training up my creative muscles. I took a 2-year break from art during middle school and it wasn’t until then that I realized that my love of games and my passion for art could coexist. This realization is what led me back to creating art. It became this new thing of knowing exactly what I was going to do with my life.

This journey into 3D art began around the time I was 13 when I started learning Blender.

I realized early on that my main interest was in creating characters and creatures. There was something that appealed to me about organic forms as opposed to hard surface ones. I used to model all my organics in Blender with a trackpad on my laptop at the time.

I remember modeling the Thanator from Avatar with that setup. that was the last organic object I made from scratch in Blender, primarily because around this time I picked up a copy of 3D world magazine that featured an awesome looking dinosaur on the cover (what child wouldn’t gravitate towards that?) It was based on a dinosaur concept Greg Broadmore had done for the magazine ImagineFX (which I also had a copy of).

During school, I was a part of many projects that gave me a ton of experience in regards to pipeline development and collaboration. These projects included two animated short films, one live action sci-fi film, three video game projects, and a few board game projects. A majority of these projects were created alongside my coursework, so I was always very busy at SCAD.

Amasol: Start of the Project

I had originally selected this character for Adam Skutt’s class Next Gen Character Creation at the Computer Graphics Master Academy (CGMA). The goal of the class was to create a realistic human for a real-time environment. These were our only guidelines in the class so I came up with a few self-imposed guidelines of my own.

  • Firstly, I wanted to create a female character since my portfolio lacked that area of character art.
  • Secondly, I wanted to create a character with pretty intricate hard surface elements to contrast with the innate organic nature of the human figure.
  • My final requirement for the project was to create a character that was just simply beautiful.

I spent 2-3 days searching all over the internet for a character concept before the first class at CGMA. For a while, I couldn’t find a concept with the qualities I was looking for. When I came across an astounding piece by Shin Tae Sub for Legend of the Cryptids, I knew in an instant that this was the character I wanted to tackle for the class. I saw the beauty in the image, but I also saw all of the challenges that came with it. The latter was my primary reason for choosing this character.

Since the class was focused on realism, I knew I wanted to change a few things in the concept to bring it a bit out of fantasy and more into reality, which I will touch on later.

Art by Shin Tae Sub.

Sculpt of the Body: Getting the Figure Right

Before I started this project I was working on another character project of mine that featured Mediterranean figures. And it happened that the topology was already good to go, so I just used that base mesh for Amasol. It may have been easier to have started from scratch, but the challenge of taking a very muscular male and turning him into a curvy sun goddess seemed like a fun idea at the time. It was also very educational in the long run because you make these neat associations between what makes a character look masculine and what makes them look feminine.

Over the entire project, I also looked at very many reference images of women. 3d.sk was an excellent website for it, plus Pinterest helped with general anatomy breakdowns. After finding a few women that had a similar body type to what I had in mind, I began working on the figure. On 3d.sk they give you so many different perspectives of the same model. Once I found one or two models, I would just keep clicking through the images as I revolved around my sculpt so as to match the view I was referencing.

Another great reference I had was 3D scan data of a female model. I took an anatomy class with Ryan Kingslien a year ago and with that class, I got a bunch of scans of the same model in different poses. It was so beneficial to see how those forms looked in ZBrush with the same material as my model. The biggest question for me about sculpting realistic humans was how much or how little to push forms and details to get that proper design hierarchy seen in the real world. Luckily with 3D scans, that question has been answered. That solution is also related to what skin shader you will be using since some of them diminish the detail more than others.

There was an issue when I began to block out the primary proportions of the hair and the body. In the illustration, her legs were too long if you draw beyond the image. I quickly found out that there was a trope of fantastical female characters having incredibly long legs. In 3D this created a character that looked a bit disproportionate and didn’t capture the elegance that was seen in the illustration.

Since I needed to design beyond the boundaries of the image, I came up with a concept that would resolve these issues. I wanted to extend the legs through realistic means so my solution was to put her in heels. In this way, I am paying homage to the fantasy proportions of the original work while putting a more realistic spin on it.

The scale of the hair also played massively into the elegance of the figure. If the hair was too big, she looked very childish and short. If the hair was too small her presence wasn’t as strong and deviated too much from the concept. This took a lot of tweaking after the texturing process took place to get right.

In terms of pushing realism in the figure, I would say breaking up the manufactured look to the anatomy is the biggest thing. This is caused by an issue of the primary forms being lifeless due to a lack of fluid lines in the structure. Once you lay down your initial primary forms, you should give them a little bit more character and randomize some of those neat straight lines to create a more dynamic figure.

I normally do this when I reach the secondary and tertiary stages of my sculpture. Another personal trick that helps me is getting to the skin detail a bit earlier in the process once my primaries and secondaries have been established.

For this project, I used a combination of projecting TexturingXYZ textures with Mari and employing noise passes, alphas, and hand sculpting in ZBrush in order to create the skin texture. Once I go through this process of adding “flesh”, I go back a subdivision level or two and continue working on my tertiary and some of my secondary forms, along with the occasional tweak to a primary as long as it isn’t such a massive change that it would distort the skin texture.

This newly added noise to the polygonal surface of the sculpt fools my mind into thinking I’m sculpting a real human. I will use a combination of the Inflate brush set to an intensity of 5, the Standard brush set to 10, and the Clay Build Up brush with no alpha set to a 6. With the inflate and standard brushes I honestly feel like I am injecting fat underneath the skin. In my case, this led to a very organic result due to the build-up of subtle form creating a surface that reads as flesh and not as rigid forms.

Once the game resolution model is in the engine, I will further this detail by adding a micro normal map that can be tiled and really helps sell the illusion of skin for up-close shots.

Facial Features

There were a few supermodels and actresses who this concept reminded me of so I put a reference sheet together of features that I thought these models shared with Shin Tae Sub’s work. The models I chose were Adrianna Lima, Ashley Greene, and Stella Maxwell.

Once I had my references, my approach to the head was very similar to the process I described with the body. I started with the primaries, then added some break up with the secondary forms, added a few tertiary forms, and then started projecting the XYZ textures in Mari. I then imported the secondary, tertiary, and micro grayscale textures into ZBrush as displacement maps where I set each map to a different layer. This allowed me to get the right blend between the different levels of detail. I then continued to sculpt the head, placing additional form breakup around the fattier areas and adding a bit more asymmetry to the face.

Once the face was done, I added peach fuzz to the sculpt with fibermesh in ZBrush. I then groomed it with the snake hook brush and zproject brush. Peach fuzz and body hair have specific flows that they abide by so grooming the hair in a specific way is pretty important.

I then baked the peach fuzz in a separate normal map along with vertex color that would act as a mask so I could then control the fuzz normal in either Photoshop or UE4.

For the albedo map, I used Substance Painter and followed the method laid out by Magdalena Dadela which can be checked below. This method includes using a smart material as a base and then adding the different tonal zones to the face along with mottling and the other specifics to the skin. I highly recommend watching that video since it will go into greater detail than I will here.

GDC 2017: Face Texturing in Substance Painter w/ Magdalena Dadela

In addition to the methods discussed in the video, I also added a peach fuzz layer to give the strands a bit of color in the albedo to fake the skin reflections that you would see on actual peach fuzz. The vertex color I baked off earlier acted as a mask for my fill layer in Substance Painter.

Once I had the initial texture done, it was just a matter of importing it back into the engine to see how things were looking. This was tested in a look development map I had created, and in the map we used in the video.

Working on Hair

Before starting on the hair I gathered some references for the flow of the hairstyle. A big challenge for this project was creating a wavy style along with posing it in an animated way to give it the sense of floating in the air.

The workflow I chose was a blend between Tom Parker’s approach and Adam Skutt’s approach. I originally created my own insert mesh brush divided into 3 segments in Blender. You have one part for the root, the middle part that can be continually repeated to add length, and then the ends. Once I got my curve brush set up in ZBrush with the mesh, it was just a matter of drawing each strand out and placing it by hand.

I had the idea of doing a simulation in Marvelous Designer with the hair strands at one point, but since my UVs aren’t useable in that program, there was no way I could pin the strands at the root to get a good simulation. So my other solution was just to mask the roots in ZBrush and then use some of the deform modifiers in there to help me out a bit with getting that light quality to the hair. I was able to quickly mask the roots by flattening the model with the uv master, box masking them, and then unflattening. For some reason, this only worked the one time and all other times I tried this the masking would always get lost between unflattening and flattening. Fortunately, I was able to just use the mask pen and mask the roots fairly well on the model without that additional step.

During this initial process of laying out the hair, I quickly drew a few texture strands for it just so I could get an idea of how much area I would be covering once the planes were textured.

These were just quick-and-dirty sketches that I would then replace with hair textures generated with Xgen in Maya.

I only rendered out an alpha and AO map for the hair. Unreal has a powerful hair shader that requires a few additional maps so I went ahead and made those for faster look development iteration.

These textures included a root to tip, hair ID, and pixel density offset (PDO) maps. I was able to get away with just using constant vector 3 (CV3) nodes to create the hair color. For those unfamiliar with programming or Unreal, this is essentially a node that just offers me any singular color I want, much like how you select colors in Photoshop. The 3 vectors relate to the R, G, and B channels. With the ID map, I was able to get color variations between each strand of hair as well as variety in the values of the hair.

Two other textures I created came from altering the AO which was the normal and the flow maps. The flow map helped blend the planes together so they didn’t appear so segregated from one another. The normal map allowed me to add extra depth to the individual strands which helps a lot for close-up shots.

From then on it was just back and forth between ZBrush and Maya as I continued to shape and place the hair all while adjusting the UVs by hand for the further breakup between the layers of hair. I wish the process would have been a bit more streamlined, but I’m happy with the result I was able to achieve in a couple of weeks time.

I was able to push Epic’s hair shader a bit more by changing the shading model from hair to subsurface profile. This allowed me to not only achieve a softer look to the hair but also to control the extinction scale of the effect which allowed some very nice light to pass through the strands in combination with the PDO map.

Texturing & Colors

The textures for the clothing were very simple. The entire process took me around 20 minutes from start to finish in Substance Painter. With this project, I actually did shader work before texture work which was an absolute reversal of how I normally approach character art. If this were in Marmoset I would have done textures first, but there is so much more you can do with the material editor in UE4.

I did most of my legwork with the sculpt already so when it came time to texture, I used a combination of texture bakes as masks in Substance Painter. I had curvature, AO, cavity, and world position maps for the metal parts of the outfit. By using one of the metal smart materials and a little bit of tweaking and hand painting, I was able to get a good result in a very short amount of time.

I normally multiply the base texture with a flat color (CV3 node) in UE4 so when I made a material instance from the master material, I could then alter the color instantly to match the colors in the concept more effectively.

As I got further along in the process, I did alter the color scheme a bit from the illustration, because the lighting of the scene called for a different approach towards how the colors interacted with one another. For instance, the value of the corset changed a lot over the process. Sometimes a higher value looked better so it could stand out from the chest piece and other times a slightly darker value really made it stand out from the skin. It just took time before I settled on a happy compromise that was everything I was looking for.

Corset Material

The corset is the material I’m most proud of. This was the most complex material I put together on the project, and while it took some tweaking, it came out better than I had envisioned. I knew the general approach to get the material done and that’s why I wanted to have my final character done in UE4 and not Marmoset. You can create beautiful images in both, but the flexibility of the material editor in UE4 is what made this solution a no-brainer to me.

The goal of the corset was to make it a two-layered material. It would feature a cotton twill material at its base and a silk sheer material on the top. I chose to use the clear coat shader as a starting point for the material since it utilizes 2 normal and 2 roughness map slots.

I knew I was going to be utilizing two normal maps so I considered that when creating the high poly version of the corset. I started by creating the base in Marvelous Designer and referenced a sewing pattern of a corset I had found online. Once I got the base done I then brought it into ZBrush to further refine it. After the base sculpt was finished I then sculpted the sheer material on another layer. This allowed me to toggle that sheer structure on and off so when I got to baking the textures, I could easily export two different high poly versions of the corset.

The sheer texture was taken from a picture I took at my local Hobby Lobby that had the exact structure I was looking for. I created an alpha texture from that image and that is what I used to begin constructing the top layer.

When making the shader for the corset, I had originally wanted to use the cloth shading model, but it didn’t offer the layered effect that I wanted. I noticed that one of the cloth-specific texture slots called fuzz replaced the emissive texture slot. So in the clear coat shading model, I treated the emissive slot like the fuzz and I was able to get the same effect seen in the cloth shader.

The biggest challenge in the material was to get the opacity fine-tuned in a way that allowed enough translucency on the border of the model as well as having some opacity shifts within those borders. Sheer is a very translucent material so it was paramount that I got the effect right.

My solution for the effect involved using a combination of fresnel nodes for the opacity mask, emissives, and albedo. Most of this was driven by a thickness map I had baked out of Marmoset that contained the sheer corset high poly information.

Corset before texture work in Substance:

Once I had all my textures I started to plug them into my shader and, with material instances, I was able to tweak the values of the fresnel masks to my liking.

Presentation: VFX, Animation, Lighting

The initial idea to do a short video came about when speaking with my good friend Antonio Gil, who handled the video editing, VFX, and environment for the project. We got to talking a little more about the collaboration and we both decided we wanted to see it through. I had already done a short video for my previous character project so I figured this would keep in-theme with that showcase method.

With Antonio still being at SCAD, this project was what he pitched in one of his studio classes. From that moment on, we were on a 10-week deadline. By the time his quarter started, I was already in a good place with the sculpt. I probably spent one more week tweaking it and then began the retopo process so we could get the game ready asset underway.

Throughout the quarter there were suggestions from Antonio’s professor that initially had me stressed out because of the quality expected and the time we had. One of the suggestions was to employ a good bit of animation which included blinking, breathing, and hair movement. I am not an animator so my mind was already reeling on how I was going to get this done.

Luckily I remembered I had done a degree of the limited animation we wanted with a different project two years prior. My solution was to use blend shapes that I could call via a timeline in Unreal Engine 4. This solution allowed me to animate directly within Unreal.

The drawback to this method is that you can’t currently track morph targets with Sequencer in UE4, so the solution I had was to call the sequence at the beginning of hitting play via the level blueprint. This allowed me enough flexibility to get the timing down for our shots.

Due to time, posing the character all in ZBrush would have been tricky so my friend John Aaron Lohrey provided me with a rig using Human IK in Maya. This allowed me to quickly get the main pose for the character. John also provided me with eye and mouth controls that could be used as well. At the end of the process, I had 7 blendshapes I could animate with timelines in UE4. I had an idle pose, head turn, blink, and breathe, as well as eye, finger, and mouth moves.

The lighting was a shared responsibility between both myself and Antonio. Antonio did the initial lighting for the environment. I then matched that lighting on the character with area lights provided by the engine.

For the final image, I ended up redoing a good portion of lighting due to our previous map in UE4 crashing when trying to open it. Fortunately, this was after the quarter and after the final turn in for the video. I had duplicated the map, but in that version, the lighting needed to be rebuilt. Every time I tried to rebuild it, the project crashed so that is why I needed to alter the lighting in a way that roughly matched what we had for the video.

When it came to the final beauty renders, I edited one of Antonio’s particles to give me a cool circular shape around the energy sphere. The trail was just created in photoshop for an added kick to the image

Feedback: Lessons Learned at CGMA, Experiments, Reflection

This project took 3.5 months to complete and it taught me so much in terms of patience and iteration. I learned a couple of things in the CGMA class, but most of what you are seeing is a culmination of my education over the past 4 years. Having just graduated, I now have the time to apply everything I have learned to my projects in a much more effective way than in years previous.

I would do so much outside of school whether that be working on collaborations or participating in other coursework. For this reason, my mind was always in a state of “go, go, go” so I didn’t get a chance to think about what I learned as much as I would have liked. I understood the content, but I still had so much to figure out in terms of applying it.

Adam’s CGMA class was my one educational obligation this past summer so I committed to that class with my undivided attention. I didn’t learn much new information since I already had access to Adam’s course through recordings on Game Art Institute. I applied for the course primarily to get Adam’s feedback on my work. The course to me was kind of a giant test of my current knowledge and I used Adam’s feedback as a point of validation for said knowledge.

If I were to give a few insights into the specific lessons learned with this project I would say two big ones are the importance of lighting in displaying character details and the patience needed to craft a project of quality.

In terms of lighting, there is a property in all UE4 light types called shadow bias. The documentation on this says decreasing the value allows the object to feel more grounded with shadows. This is pretty vague so I will give a little more insight on that.

From my experiments, decreasing the shadow bias increases the number of shadows your geometry casts. If you notice in the digital human UE4 project the default shadow bias is set to a value of 0.025. This is extremely low and it allows for much more accurate cast shadows and aids so much to the realism of the figure. All default values for lights are normally set to 0.5. It should be noted that if this value is set too low you will give some shadow artifacts on your model if it isn’t that high in polycount.

For instance, on the legs of my model, you would start to see the edges of the polys that composed the leg because the shadowing was too accurate to the surface. The head, being higher in polycount, was fine at lower values so there was a trade-off that needed to happen. A value of 0.065 seemed to be the perfect compromise for me. This value played a huge impact on realism for the character as well.

I had two maps in UE4 that tested the shaders and textures on the character. I had a look development map, which was just a duplicate of the digital human map, and then the Malta map which is where all the content for the video was. It was when I imported the model into the Malta map that I became aware of a disconnect in the lighting.

As I said earlier, the default value of the lights is 0.5 vs. the 0.025 lights in the digital human map. The body looked fine, but the detail on the face was really blown out when compared to how it looked on the other map.

I then set the area lights to a shadow bias of 0.025 and the body looked really off and all the edges of the polygons could be seen.

I spent an entire day thinking that this was a smoothing groups issue. I reached out to Adam Skutt and he said it looked more like a shadow bias problem. Thankfully, this was the issue and not smoothing groups.

The other lesson I learned came exclusively from CGMA. Most of the time in the class you are just sculpting the portrait. This caused concern for me because I didn’t know if I or anyone else in the class was going to finish our characters completely. The class is called “Next Gen Character Creation”, so the name implies that you will be making a whole character in 10 weeks’ time. As it turns out only two people have done this in Adam’s class during his entire time of teaching. This put to rest any nerves I had about not being fast enough.

I was thankful we got a lot of time to finalize that sculpt and apparently, this was the norm in the class. Some portrait sculpts apparently can take up to 6 months in the industry according to a few people I have asked, so it didn’t seem unheard of to spend the majority of a 10-week class sculpting the head. Most of the mind-numbing sculpts and works I’m seeing nowadays have taken around 4 months to complete. These numbers are coming from the heads of the industry too, so even people of such a high skill level require the proper time to make amazing works of art.

With that, I conclude my breakdown for my character, Amasol. I hope I was able to answer all of your questions thoroughly enough to where there aren’t a ton of question marks.