Female Head – UE4

Latest image

 

 

The Beginning – Intention & Modelling

Currently where I am working, I get to make a whole range of 3D models. Although my passion is making characters and I do get to make some at work they are targeted more towards Mobile devices so I don’t really get to make highly detailed characters. Although I get to learn some technical skills on efficiency etc.

So I wanted to in my free time do some detailed characters, also with the new release of Blender 2.80 I wanted to take a look to learn about it as well as check out Eevee as well as try Unreal Engine 4.

Finding reference I started with a base mesh I found online, although this base mesh did also have it own nicely sculpted head I wanted to start really basic so I smoothed it into a creepy looking head so I can make my own with out being influenced by what is already there.

Sculpting – ZBrush

001

Yeah, it creeps me out too. But like every artist out there I can tell you there is a long period of the model or any art going through the phase of sucking hard. It’s really demoralizing but you just have to keep pushing on. One of the problems I usually end up having is when it is going through the “suckage” stage and someone is watching then I start to get paranoid and think I need to speed this up so it looks nicer. Probably part impostor syndrome as well.

But after some more time of looking at reference and adding to the forms etc you eventually get there hopefully.

002

Seeing online a lot of heads with awesome detail mainly from photo textures with high res alphas used I decided to do the same as I was trying to practice as if this was kind of in production. Usually I try to do most of it from scratch etc, as I feel I learn more that way. So using high resolution displacement maps and using HD Geometry to get the extra detail out I eventually get to the next stage.

003

After thoughts:

Looking back at the sculpt again, I feel I was relaying on the high frequency noise a bit too much. I should have gone back and defined more facial shapes etc more heavy handed as a lot of detail gets lost seeing it in this ideal conditions compared to the real time engine.

One of the problems I had trying to make out the normal maps with the head in this pose is having the eyelids and mouth projecting more than I want. So to fix this I would create a separate sculpt layer purely for baking as well as I don’t want the double eyelids to be baked into the normal map. The reason for this is if she blinks it will still look like she has the eyefold which doesn’t happen. The fold should come from the actual geo when the eye is opening etc.

004

Here is the difference in the eye area for the normal map to not have the double eyelid “burned” in.

LidBurn_01.jpg

Without the “burn” in

NoLidBurn_01

Some nice little bits I like to do is have layers for sculpting this way I can sculpt heavy handed if I want and just tone it back with the layer slider. Problem I often have is maybe I am sculpting on a specific layer and forget to switch layers and just keep sculpting.

SculptLayers

Base layer is the that has all the sculpting for primary secondary forms. The rest except for the baking layer is the fine detail, wrinkles under the eyes, the indentations on the lips etc.

With that done time to take it into Substance painter to start texturing.

Texturing – Substance Painter

For texturing I used Substance Painter and high resolution photo textures that have the colour information removed. Basically it is just a matter of projecting the textures on and painting out the seams or anything you don’t want like spots, hair etc.

The basic Texture with just the photo texture

RawSkin

After some editing and adding in what I needed

SubstanceColourFace

Originally I tried to use the hair from the photos as well but they turned out to be more effort that it was worth for me. So I just decided to go the old fashion way and paint it by hand with Alphas. The reason I did this was I could just go fast and cover the whole areas since it didn’t need to be detailed since this part is only for “IF” you see inbetween the hairs not to see a big bald spot.

The advantages I did have from this was I could paint my own fly away hairs in front of the ears and back of the neck etc. I also decided to just paint in the eyebrows as well, but I will have to go back and add some fake AO to it.

For the skin after projecting the photos on I had to go back and just use like a spray brush to blend the seams as well as making some areas of the skin less blotchy and paint out some dark spots etc. I also used the curvature or you could use cavity as well with a slightly red hue and colour burn at a low level just to bring out some more of the reds.

The reason I did this was because the photo and the displacement or normal didn’t match up so I wanted to take some of the normal information and incorporate it back into the colour texture.

Originally I tried to hand paint the eyes as well but it looked too strange so I just took a photo off the internet changed the colour and used that. The whites and veins for the eyes were hand painted and looking at it again I need to go back and add more with more variations.

For Roughness I do what I usually do for Specular except Specular and Roughness don’t behave the same way. How I use to do the Specular map is taking the blue channel from the colour map. The reason for this is that the Blue wave length penetrates the skin the least out of the the Red and Green wave lengths so its a closer representation of specular.

But since roughness is different I end up just look at the individual channels and look for one that is closer to what I want. Darker values for the lips, cheeks,forehead and nose. Basically areas that tend to shine more. Problem with this is the moles on her face would also be dark as well so they would be extra shiny.

SubstanceRoughnessFace

To fix this I had to go back and just paint over the moles with a lighter colour.

So with the textures done time to export them.

For the eyelashes I went into Maya and made them in xGen using the interactive groom then converted them to polys. Usually I would just use multiple cards with a alpha painted out. But I saw some of the newer models for games that would just poly model the hair so I wanted to try the same.

This worked and it looked nice but I the poly came out as just planes which from some angles they would disappear because of how thin they were. So I had just give them a triangular body while still trying to keep the polycount low. But since I am aiming for more high end machines I am not TOO worried about polycount, more want to see what I can achieve and learn from it.

LashesEyebrowsCards

The eye brows were made the same way, but I kept them as thin planes since they will be seen predominately just from the front.

We started using Blender 2.80 at work last week. So I’m learning it from scratch, giving Eevee a go with the female head I’m working on in my free time. Nice to see a model in real time and getting instant feedback

Being new to Blender it took a lot of learning and getting use to, but a lot of the things I learned from other 3D packages work here too.

My shading network for this isn’t anything special just a bunch of curves so I can make my own adjustments in Blender instead of having to go back into Substance Painter.

SkinNodeGroup

Quite a few of the masks I used such as for the specular etc were from just the same roughness but because the areas I wanted to mask out(e.g. hair) is darker than the rest of the map I can manipulate the curves to give me just the hair which I would multiply by the other maps to stop things like the hair being too shiny or stop the hair from receiving SSS.

FemaleWIP01

Definitely a big difference between making a real time character and a pre-rendered character. Although a lot more constraints stepping up to the challenge of being more efficient and optimize has it’s own rewards.

Finding the balance between how much detail to put in. Will this detail be seen? does it add to the overall effect? Next will be giving her hair cards, I did a bit of research on some recent character models and noticed that some of them use a combination of hair cards as well as straight low poly hair for fly aways and what not.

Polycount now a days doesn’t impact as much as it use to. Claire from the Remake version of Resident Evil 2 has quite a lot of polygon hair as well as cards. I’ll look at trying something similar for this.

Would like to take this into UE4 to learn the systems,materials and shaders in there.

Eyes revision

Added in card eyebrows using xGen in Maya. A bit too many for actual game play and would probably only used this much for cinematic which actually has close up of the face.

Also made a eye waterline using just flat plane. Works for the eye not moving but if the eye was rigged I would keep the eyeball more spherical and planes would need to have it’s edge loops match up with the edges of the eyesocket to have it deform with the eye properly

FemaleWaterLineWIP01

The way the eyes are made is with 2 spheres and a waterline. Although ideally I would want to have just 1 sphere for the eyes and use some shader magic to fake the refraction,AO,reflection etc.

I have seen something similar done for characters in UE4. I’m hoping to eventually taking this there and trying out the technique I saw as well as doing some reverse engineering.

For the double eyelid I need to pull it back in further so you can actually see it as well as making adding a bit of make up for contrast.

This is my structure for the eyes

EyeStructure

So the eyeball, faked occlusion and the waterline

WaterlineEye.PNG

The water line I did by making the eyeball and the face Live objects to make geo from. So I would copy a temp version and combine the geometry to do this. Then just using the modelling tool kit in Maya to make the geo.

Back inside blender the eyeball combined looked like this, I guess I painted the top part a bit wrong so you can see through the top where you shouldn’t. This shouldn’t matter though since the eye even when rotating the occlusion would not move with the eye rotation.

However a problem I see is that to simulate the bulb on the front of the eye I pulled out the Geo on the Occlusion sphere which is suppose to stay stationary. The way I can think of to fix this is have the Occlusion be just purely for occlusion not for reflection as well and make a normal map for the eye sphere which has a bulb in it as well as combining it with the pupil detail I sculpted. The detail for the pupil might not even be needed since we might not go this close to the character.

EyeShader

So this doesn’t have refraction which kind of kills the realism a bit, it’s most obvious if viewed from the side. I’ll use UE4’s technique to try and fix this.

What I’m hoping to do next is to move onto the hair on her head which will be a big challenge in itself.

Skin Revision

I went back to fix up some minor detail errors I saw earlier. I tried to add a bit of make up but currently just looks like a burn.

Vik_DiffuseSite

I will need to go back and fix the AO burn on the top lip

I wanted to mask out the SSS a bit since heavier make up will cover up the skin so the SSS contributions at these points would be less. In saying this I feel in blender the masking didn’t quite work how I wanted, maybe because of it being real time it’s just a approximation.

Realigned the eyelashes so they are more in line with the eyelids. I took the eyelashes and eyebrows into substance to rebake the AO. I did this so that I can use the areas that intersect the eyelids to bump it out a bit as well as give it a slightly darker colour. I wanted to simulate the eyelashes looking like they were coming out of the skin. But, kind of wasted as we don’t get close enough as well as the eyelashes cover most of it.

Darkened the areas just under the eyebrows so they don’t have a solid colour(eyebrow hair) just popping out of the skin. I also smudged the edges of the hair texture on for eyebrows. Darkened around the eyes a little.

FemaleWIP03

After thoughts:

I feel you can still see quite obviously that photos are used. Maybe a too much patchiness in the skin. I could paint most of it out but then it could look too clean and CG. It could be the lighting that’s throwing my eyes off as well. Maybe too much red in the areas with AO is strongest as well as toning down the SSS.

Still trying to look for reference of hair that I like as well is challenging for me to try and make.

Currently the model stands at about 9000 poly’s for just the head without hair on her head. Decent amount but I was aiming for a highend look, 4K Normal Map, 4K Albedo, 4K Roughness, 2K SSS Mask.

Still not happy with the eye make up so will eventually go back to try something different. Actually thinking if I want to paint in some fake hair on her upper lip, although I feel that would end up being on of those situations where if it wasn’t there it wouldn’t be missed but if it was there you would think ohhh wow so detailed even has the hair there………probably not worth it.

Still need to go back and fix up the eye, I want to add the pink membrane on the inner eye part. Can combine it with the occlusion map that’s already there, as well as adding more veins and a fine fractal like normal for the white part of the eyes.

Using different HDRI really help with checking how the SSS was. In one of them it looked really strong and in some other it looked very weak. So need to find a balance

I am working on the hair, but will take it into Unreal soon as the final destination will be UE4 so getting it in there as soon as possible will help me as maybe something that looked off in Blender look fine in UE4. Saving me time

I tried to give another iteration on the eye make up as well as get a nicer render out of Blender, I will most likely go back and reiterate on the make up again.

Unreal Engine 4

So I took my model into UE4 and hooked up the textures to the materials and didn’t actually need to do too much to get a nice looking model.

HighresScreenshot00000

I really like Unreal’s skin shader, it looks especially nice around the lips has a very soft look to them. I redid the eye make up a bit, mainly just tried to tone down on it.

I just did a simple 4 light set up, basically the same as the normal 3 light set up but I added a second rim light on the left.

HighresScreenshot00001

I haven’t been able to give Unreal material editor much of a go before. I’ve looked into it to research how some game models were done to learn from. I wanted to see if I could edit the colour of the Iris without needing to make specific masks for it.

The material editor was actually a lot more different that I thought. I’m use to photoshop and being able to see the graph as well as interactive with it. Although UE4 has some similar things there were no graphs(At least not to my knowledge) to alter.

So for something like adjusting the levels you have to manually enter the values. Although frustrating at first I got use to it. I actually also went into photoshop to play with the levels so I had a idea of what values I would need to put in.

Iris Masking

This was my graph I made so I could edit just the Iris part of the eye. I could change the hue as well as control the amount of saturation in that area. The main way I did it was by playing around with the levels. I knew the Iris and the Pupil would be a lot darker than the surrounding part of the eyes so I would adjust the levels to basically give me just those areas then invert it to use as a mask.

Some of the problems I did have was I wasn’t able to get all of it, as some of the values were a bit too close or just out of reach but from a distance isn’t too visible. Another way I could have made a mask was just to have a ramp that I would make circular but I don’t quite have the knowledge or method for this yet. I think I saw it done on one of the Paragon characters so I might go back sometime to do more research.

Iris Control

Here is the result of the mask. So it did about 95% of what I wanted, just the small parts close to the pupil didn’t get picked up. Another problem which I was trying to solve was making a Material which has layers so that I can combine so I can just have a single material on the eye instead of currently I have two pieces of Geo and Two materials.

But so far even with this quick venture into UE4 Materials I’m really enjoying it.

XGen

A friend showed me this method which I later found is actually a tutorial and technique that Johan Lithvall teaches and shows.

Went back to Maya to start making some xgen hair so I can later make some cards and hair textures from. Still a lot of playing around with settings to get more layering and making sure I have shapes I can use for my cards

xGen_Hair_01

Spending some time with xGen and creating hair was really fun and I learned quite a lot and I made a couple of variations to use later for my hair cards, Using Techniques I found online

xGen Hair

What I found useful was using the rand() expression as well as the stray() expressions.

Rand

So how the rand(#,#) works is like this. It creates a random number with in the given range. So the two # are the ranges so rand(0,1) will create like a noise texture with the lowest value being 0 and the highest value being 1.

It doesn’t have to be limited to 0 or 1 you can go as high or low as you want. As for the stray() you first have to set the stray() percentage so you can actually see them.

Stray

Depending how much you want to see is up to you. If you know a bit of programming(I only know very basics) then the stray() function should look a bit familiar the way I used it was something like this

stray() ? a : b

which is also the same as

if( a == true){}

else{}

So basically stray() is saying for the stray hair and the ? is for our Ternary Condition. So after ? a will be what happens if it is true and after : will be what happens if it is false.

So lets say I want the stray hair to have bigger coils(10) but then I want the non-stray hairs to not(0).

this would be stray() ? 10 : 0 on the coil modifier. So if it is a stray hair it will have coils at 10 and if not then it will be left along at 0

 

But then you can also combine the rand() function as well.

Expressions

so here for the stray hair it will have a random value between 0.5 and 3 and if it isn’t a stray hair it will not have a value or the modifier won’t be applied to it.

With the hair done I output the curves to a Maya file

Output Curves

In a new file I import all the curves that I exported so I can make poly tubes from the. Lucky the Bonus tools has something like this already done. So I can just select all the curves then use the bonus tools and then play with the settings.

BonusToolsCurves.jpg

After the curves have been turned into tubes they will be taken to zbrush to smooth out the ends a bit to get a taper.

HairTubes.PNG

For baking I just create a plane and a cage which is the same plane but just above all the hairs. I take these into xNormals to do my baking, Opacity, Height, ID etc for Unreal Engine.

ID

Hair_ID.jpg

ID map which gives the hair variations, so what some people do is they might export out the hair in groups to give them slight variations in value. Maybe each hair clump you take out 10% and give it 10% black then the next 10% will have 20% black etc. Then layer it up in Photoshop.

Opacity

Hair_Opacity.jpg

Opacity or Alpha

Depth

Hair_Depth

Depth I used the Height map baking from xNormal this is to give the different levels you can see in the height. So hair clumps closer to the scalp are darker while the ones further are brighter

Roots

Hair_Roots.jpg

For roots I believe it’s like a Alpha blend almost so the hairs close to the roots are a bit more transparent so it’s not a hard edge coming out of the head.

Normals

Hair_normals.jpg

I don’t think the normals are actually used in Unreal but I made this so that I can see them a bit easier inside of Maya’s viewport.

With the maps made I assign the textures to a plane then cut them out to shape.

So with the method you want to take the hair cards and set them up almost like tents layered onto of each other like tents.

Hair Card Normals

So one thing I noticed about this tent method is that because of the angles you can really see the different cards and it’s not a very nice look. You could have the angles at a lesser degree which helps but I decided to instead change the normals of the cards.

HairNormals

So the Hair on the left has the normals changed and the hairs on the right are the default. How I changed it was by having the normals face the same direction which in this case was just straight forward to have it look like 1 consistent piece.

HairNormalsDisplay

So there are a couple of ways to do this. You can create a plane behind and just project the normals of the plane to the cards or you can use the “Set Vertex Normals Tools” which is a lot faster.

SetNormalDirection

So because forward for my hair cards is Z so all I needed to do was have the Z Value set to 1 and the rest to 0 and that’s it.

With all this done it’s time to place the hairs on the head. On the tutorial I was shown they used bend deformers which for me works but I found is a bit slow, I decided to make a curve that runs from the top of the hair to the bottom then use a wire deformer to deform the hair as well as lock the length of curve.

Hair Card Deformer (MEL)

I spent most of the day trying to automate the process of creating the wire deformer with MEL. Although I am quite limited with it I managed to create a script that works, still in early stages but you can get it here.

With this script first place the hair card where you want the root to be on the head. Then select two edges one closest to the root and one at the tip on the same geometry.

edgeSelections

With the two edges select just run the script then type in the MEL command line “HairCardDeformer”

RunScript.PNG

Which will create a curve between the two edges which will deform the cards it is bound to.

CardCurve

After this you can select the last vertex the one closest to the tip of the hair cards and move it around to shape it. Although there is some limitation and I’m hoping to look into it more to make it a bit easier to style.

If you need to add more edges so the curves look smoother you can. Using the multi-cut tool make sure you have Edge Flow on then you can CTRL click to add in edges which conform to the shape.

Now with a way to edit the hair cards a bit easier now I can concentrate a bit more on grooming the hair style. I actually wonder if I can use the xGen interactive grooming so that the curves won’t intersect with the geometry they are coming from But that will be something for me to look into in the future.

Second Thoughts

So trying out my script I find that it is good for quickly getting a basic shape but anything more precise it doesn’t do to tell. I could unlock the length and move the CV’s but I don’t want to end up stretching the hair cards etc.

So I have another idea I want to try. Making the shape I want the hair to follow with curves then attach the hair cards to it and have it deform in the shape of the curve.

I tried to just attach the hard card to the curve as a motion path which worked but then when I tried to set the Flow Path Object to it. I ended up with undesirable effects, if it was a cube it works fine though so I don’t think it likes flat long objects. I will have to do more testing but the idea I have would be something along the lines of this if I cannot get Flow Path Object to work.

  1. Create the CV’s in the shape I want, Rebuild the curve to have a unicorn spacing of points.
  2. Attach the hair cards to it and have it deform to the shape of the curve, with out any stretching.
  3. Be able to adjust the curve on the fly and the hair cards would just follow the shape.

Pretty much what Flow Path object is suppose to do. I did some testing with creating a lattice and having each section be a cluster then attaching the clusters to the motion path with offsets which works but I would have to write a script for it.

But then to have the cards not stretch I would have to use a distance measure tool to measure the length of the card then a arclen to measure the length of the curve.

If it’s not long enough just move out the last CV in the U direction then rebuild the curve then divide the length by the number of lattice subdivisions I input and attach each to the motion path.

so if the length of the hair clump is 15cm and the curve is only 10cm move the last cv out 5cm and rebuild.

If the hair clump is 15cm but the curve is 20cm then attach the hair but it should only take up 15cm since I do not want it to stretch. A added bonus to this would be you could move it along the curve a bit with the time slider too.

So in Theory I think it should work but I need to do some testing if there is a better way. Although if I try to do this it will be another good exercise for me as well as trying to expand my technical knowledge.

Plane, Curved Hair

After sometime with my limited MEL knowledge and a lot of determination I finally managed to get my script to working order………..in a particular way.

The purpose of this script is to take hair card and a curve, then deform the hair card to the shape of the curve.

Originally I thought you could just attach the hair card to the curve via motion paths then using the “Flow Path Object” to deform it to the shape of the curve. However, when I tried this it gave me undesired-able effects.

Sphere_Curve_MotionPath

The hair Card isn’t too close to the curve which can make it a bit annoying to manipulate the card to be where I want it something close to the curve would be nicer.

Running the script I get this result

Sphere_Curve_Mat

 

Hair Update

So I’ve been away on holiday for a while. When I came back I decided to get back to my character. Thinking my script would help which it kind of did, in the long run I took a look at the time it took me and I don’t think it’s faster.

Although I learned a lot writing the script, so I decided to just back to the usual deformer method

I found that with the curve method I would be spending time to shape the curves to how I want it and then when I was attaching the the hair planes although they fit the curve fine sometimes they would be twisted and I would be spending time untwisting them and then checking that they do not intersect with other hair too much.

With the deformer method since I am directly deforming the hair plane I skip the first part of it and get it into shape and then check any intersecting geometry.

Although a problem I did have was sometimes the ends of the hair would be twisted the wrong way, but then I would just soft select and rotate them back.

Hair Flyaways

For the small flyaway hairs I would use some of the sparse hair cards I had but I knew later down I would always do geometry planes for some of the finer ones as well.

I used xGen for the fly aways nothing too different from the things I have already done. Then I would just render them out as geometry. I did have a bit of back and fourth with the widths of the hair and looking at it again I might make them thinner. At first I thought having a thicker here would have it read better from a distance but the specular highlight that gets caught is a bit too strong.

HairFlyAwayXgen

I did have some problems with some stray hairs being stretched all the way back to world 0,0,0 But I knew when I converted to Geo I could fix these problematic hairs. I ended up just deleting the stray 1 or 2 that did this.

When the hair was converted as well I would tweak them  a little to sit closer to the head etc or not intersect with the cards.

UE4

So time to take it back into UE4, the lighting I had wasn’t that great so I ended up just taking lighting from one of the example projects of the realistic human and put my model in instead.

Lighting really makes a big difference, I also my inexperience with UE4 which limits me as I have done lighting for some of the commercials I worked on and short films etc. But with UE4 since there isn’t as many types of lights as well as I question my self asking if this is a limitation of the engine am I using too many lights etc.

I’ve always had interest in the technical side but haven’t had much chance to learn them although in my new job I got to learn some techniques it is something I want to focus on as well.

HighresScreenshot00000HighresScreenshot00001HighresScreenshot00002

What’s next?

Looking at the model more there are a lot of things I want to change but I also want to move on to new projects too. Originally I created this so I could try my hand at a more detailed character in a game engine and would concentrate on the face and learn another way of doing hair.

Things I would like to add currently is just collar for clothes maybe some accessories like earrings and necklace. I might add glasses but will have to see.

HighresScreenshot00006HighresScreenshot00005HighresScreenshot00003

Trying to quickly make something simple I wasn’t too happy with the look so I decided to go to Marvelous Designer to make something a bit more proper. Also so I can learn a bit more about it too

Marvelous Designer

Trying to find sewing patterns for button shirts are actually a lot harder than I thought. Had to look up a lot of images and just and fudge it really. Although I knew I wasn’t going to focus too much on the clothes and just try and keep it simple.

ShirtCloth

After having the clothing done it was onto the Blazer.

BlazerCloth

Not wanting to have the character in a A pose I did a quick rig in Maya then just posed her a little bit.

Clothing

I knew I wouldn’t be focusing on the clothes so didn’t really spend timing texturing etc. Just wanted to get something in.

Next I wanted to give her some nicer earrings so I just looked up some earrings and just made any I thought looked nice.

Earrings

With everything assembled and ready to come it’s time to go back into Unreal. I combined all the meshes and had the separate parts have their own material so they would have their own elements in UE. I combined the mesh just to free up a little bit of the draw calls  so it calls just 1 object instead of all the separate ones.

Viewport

Making some simple materials for the clothes,earrings and glasses, I decide to finish and call it there. Still things I want to do to fix but I gave my self a deadline and want to stick with it and move on. I don’t actually like the clothes and would have preferred to do the retopology myself as well as spend time to make a softer looking material.

But I take some screen shots which I will add here

B030102030404_FaceB01B01_FaceB02