3d artist Bao Ngoc Vu from Ninja Theory gave a complete how-to on building high-profile characters for real-time.
My Name is Bao Ngoc Vu and I am a Character Artist working at Ninja Theory. Before Ninja Theory I worked as a Character Artist at Yager (Spec Ops the Line, Dreadnought). In my free time I do a lot of freelance work or just personal projects if circumstances allow, so I am constantly trying to push myself doing Character Art.
In this article I want to share some tips and tricks on building real time characters based on this character example. There are also certain aspects I want to talk about which I think are really helpful to speed up your workflow. Hopefully after reading this you will be able to build and handle a lot more work.
Since this interview is mainly about my latest contribution to the “our Ghost Of War” project I want to give you guys a breakdown of this Character. Hopefully this might be useful to all the people who are interested in creating real time Characters (in this case for the Unreal Engine 4).
First of all you need to know what you need and then what you want:
- If you work on a character it is really important to know what you need to do.
- What kind of character are you doing?
- For what purpose are you building this character?
- Is it for a game project?
- If yes then what are the game’s limitations?
- Do you see the whole character?
- What is the art style?
- Do you feel confident working with the given art style examples?
- How important is the character you going to build?
- Is it only a high res model which is needed or do you need to do the textures as well?
It will be less stressful if you can answer these questions and the planning is going to be a lot easier.
So once you sort out what you need to do you can start thinking on what aspects you want to push yourself. For instance, I am also really interested in the character presentation aspects. So for this project I knew I am going to build the character with the purpose of lighting him as well, where I have full control. Of course the things you want to do should be appropria te. So keep that in mind before you go all out trying out new things.
Be smart on doing things
I try to avoid doing certain things over and over again. This will not only consume you a lot of time but eventually you get less motivated. So let’s talk about how I usually build my character heads. For all my heads I use a base mesh which I created the UVs already in 3ds Max. I split the head into several polygroups in Zbrush. This is really important since you can easily work on specific areas on the face without breaking too much.
(Base mesh Polygrouped)
In Zbrush I use the move tool for the first two subdivision levels. In this early stage you will set up the base characteristics of the face. I always make sure that I move the eyelid accordingly so when I get to a higher subdivision level I do not have to sculpt the eyelid and try to carve in that fold because it is already modeled.
(Eyes Polygroup: See how the red and the blue polygroup define the eyelid?)
(Here is a screenshot with the lowpoly on the left. On the right you see the lowpoly only subdivided and not sculpted on. See how the eyeshape, mouth and nose is defined already? This gives as a perfect base to start sculpting on!)
(Same screenshot but with polygroups turned on. The polygroups help you define the proportions and keep your model clean, so make use of it!)
Once I am more or less satisfied with the the overall proportions I move on to a higher subdivision level. It is really important that you only go higher if you are satisfied with the proportions, if you feel that you need to do some changes later on you can always go back to subdivision level 1 or 2.
After the sculpting is done I proceed with the polypainting. Usually all I do is to paint a gray scale mask on the face which will be used as a base for my Albedo. Since we are rendering with the Unreal Engine 4, we will make use of the dynamic shader instances. I’ve built myshaders with the purpose that I can change specific parameters on the fly. But i will talk about it more later on.
(Here is screenshot of the model with and without polypainting. As you can see I kept it fairly simple but that is already enough for me to use as a mask)
(Final Head Highpoly)
After this stage everything is prepared and we can proceed with the next steps. Since we created our UVs on our basemesh already we can bake down our polyppaint to our Lowpoly.
I often use the subidivsion level 2 as my final lowpoly. It is at around 7k triangles and I can optimize it if needed.
So in the next step I just export my highest subdivision level model and my 2nd subdivison model as my Lowpoly and then I bake down my maps. (for the head I mostly bake down only the normal map and the polypaint)
For the clothes there is nothing special what I did. I used Marvelous Designer and Zbrush. Since there are amazing documentations regarding the creation of clothing I think I don’t need to elaborate any further on how I did my clothing.
Working in the Unreal Engine 4
I prefer using the Unreal Engine 4 for my renderings. So here I will talk about my lighting setup, tips and tricks on how I usually handle lighting and presentation.
I’ve built a lighting room which is basically just a big box with no openings so no light is coming through. I typically have a staged lighting scene for all my assets.
(Here is a screen showing my whole level in Unreal Engine 4)
Since this image was for promotion purposes only I had our rigger pose me the character which I then imported into the Unreal Engine 4 as a static mesh.
Usually I light my character starting with the face. I try to get the general mood with a key and 2 fill lights and then 2 rim lights. For the lights i mostly use spot lights.
(Lowpoly with lighting setup)
(lowpoly with normal map displayed)
One thing what I noticed working with the Unreal Engine 4 is that sometimes the normal map looks not as desired as you want (faces for characters) So what I often boost the normal strength of my character’s faces.
Here is a comparison with the default normal map and a boosted normal map:
(default normal map strength)
(boosted normal map strength)
(final head posed)
Here is how I boost my normal map in the shader.
Basically from here on it is just a back and forth between moving lights and camera position. I also add specific lights just to focus on specific areas.
Here are the indivual lights and combined:
(So in this case I deleted all the dummy lights and started with a top light- top light only)
(Key light only – sometimes I increase the source radius of the key light so you get that shiny spot on the eye)
(Fill light only)
(All lights turned on)
(Final Image with post)
If you have any desire to talk to me here is my email.