wip 1 I started blocking the primary forms last week and created a setup in UE4 so I can start iterating on the likeness sculpt. Zbrush UE4 decimated meshes.
Looks good, really like the UE4 renders - would you mind sharing your skin/eye setup? Main thing that is currently bothering me are the lips and the chin, seems like the chin should go more outwards and the shape of the lower lip maybe could be a bit more straight in the middle.
I agree with Shyralon. You seem to have modeled the lips based on a sad picture and ended up with lips that pull down. Also her chin is too weak. Compare her 3/4 view in the bottom right reference with your model. If you're working with hair planes on the eyebrows, don't make them too dense. Looks great otherwise.
@Shyralon@Xelar Thank you both for the critiques. I straightened out the lips and moved the chin outwards not sure if it is enough though, but I will gather more references and reevaluate.
I attached the skin material to the post. For the backlit parts I had to edit the source code of the engine. I am just copy pasting code and still trying to figure things out at the moment.
For the eyes I have three parts one is the actual eyeball (MI_EyeRefractive), one is to blend the eye with the head (MI_EyeBlend), and the last one is to to darken the eye and blur all the parts together (MI_Eye_Occlusion_Bust). You can find all the materials in unreal's photorealistic example.
@slosh Thank you. @jose.fuentes Thanks. I hope I can improve on this project. @CybranM Unfortunately the season 7 braiding is too complicated (shown below), so I am probably going to go for the style from season 3/4. @Swaggernaut Thanks. I try. Not much progress I have just been experimenting.
I worked on adding a secondary specular lobe and a fuzz layer to the material. The fuzz layer was exaggerated and also made blue for debugging purposes. I still need to figure out how to send custom data from the material.
I also started to play around with the hair material to see how to achieve very light hair colour and how I might go about creating the braids.
Created a comparison image for Single specular lobe vs Double specular lobe + fuzz: https://imgsli.com/MDgwMg
Sadly I have been messing around with the skin material again, but after many issues I managed to add in some extra material pins to control the fuzz, transmission and secondary specular. Hopefully the skin looks more velvety. Time to move on and get back to sculpting.
GBuffer.CustomData.rgb is already being used for subsurface color GBuffer.CustomData.a is being used for opacity I am storing specular2 and specular2 roughness in the green and blue channels, transmission is alpha and fuzz in red. After that these values are being used in ShadingModels.ush. Maybe I am doing something wrong? I don't know much about real time rendering.
To be honest, i would probably modify the existing BRDF (or copy/paste it, and modify that one) that's used to calculate specular reflections, so that it just calculates two lobes, and adds them together. No need to go into the gbuffer for that. If you're smart about it, you can probably even derive a way of doing it so that the secondary lobe's reflectivity and roughness are derived from the first, which would stop you having to hand in additional parameters.
Similarly, you can probably calculate transmission in the surface shader too.
I'll see if i have time to experiment with this over the weekend. But what you're doing now is cool man, good job!
Any chance you could share the shader or give some breakdowns? I'm trying to get my skin to look nice in ue4 your's look incredible! How do you add extra slots to a material like the fuzz/specular2/specular 2 roughness?
@almighty_gir That sounds like it is way beyond me, but I am trying to learn OpenGL so I can understand RT graphics in particular deferred rendering.However,I am prioritising learning 3D art .
Probably after I can get the transmission to work properly. I am stuck trying to figure out where or how to get the shadow map information to the shaders.
To enable the pins you need to go toEngine/Source/Runtime/Engine/Private/Materials/Material.cpp
and there is a function bool UMaterial::IsPropertyActive(EMaterialProperty InProperty) const
where you can enable the pins for certain shading models.
To rename the pins in the file Engine/Source/Editor/UnrealEd/Private/MaterialGraph.cpp
there is a function FText UMaterialGraph::GetCustomDataPinName( uint32 Index ) constwhere you can rename the custom data pins.
To use them you need to call the functionshalf GetMaterialCustomDataX(FMaterialPixelParameters Parameters)
defined in Engine\Shaders\Private\MaterialTemplate.ush
Added back ambient occlusion(SSAO) for the hair shader, which had been removed from recent versions of the engine.
I also did some experimentation with X-Gen for styling and then converting them to polygons, but I wasn't able to get anything useful. I was wondering if anyone has gotten some success with it? or if anyone else is working with UE4's hair material and getting good results because official documentation on authoring textures is so scarce.
I like the addition of the glints. I think it helps to give the hair some texture/noise and shimmer. More hair stuff: 1. Added a forth lobe that is supposed to help with low absorbing hair at more grazing angles.
2. Fixed an issue with the glints being too bright. Now the eccentricity works within the expected range of 0.85 to 1.
3. Due to the lack of a normal map I added some pixel depth offset to give the appearance of depth/volume to the hair cards. I jacked up the dial so you can more easily notice the effect it has. I am probably getting closer to the final look of the hair, but I am still trying to achieve the softness.
Some early hair colour experiments. Some of the colours are probably too saturated and there's not enough colour variation, but it's easy to see the different components.
After a long break I started working on this again. Currently blocking out the hair. I need to figure out what I should do for the back of the head, and the braids. There is quite a lot of dithering/noise, but hopefully it will go away once the hair cards are UV mapped and textured.
I also changed the shader, using an idea from Uncharted 4, by reducing the shadows on the hair. This is supposed to make it look softer. Left is unmodified and right is modified shadows. https://imgsli.com/MTIxMw Reference
It looks really good , it's nice to see your process with the character , i always have problems with the hair and xgen .Excited to see your final result
Thanks Merpra. I think hair is problematic for everyone. Started working on the hairline and fly aways. This seems to be as thin as they can go before the anti aliasing starts failing.
Finished UVing and texturing the hair. I also added some normal map support to the hair shader. A fairly uninteresting test, but the left plane is using default lit shading model with normal map, and the right the hair shader with normal map.
Replies
I started blocking the primary forms last week and created a setup in UE4 so I can start iterating on the likeness sculpt.
Zbrush
UE4 decimated meshes.
Main thing that is currently bothering me are the lips and the chin, seems like the chin should go more outwards and the shape of the lower lip maybe could be a bit more straight in the middle.
Also her chin is too weak. Compare her 3/4 view in the bottom right reference with your model.
If you're working with hair planes on the eyebrows, don't make them too dense. Looks great otherwise.
@Shyralon @Xelar
Thank you both for the critiques. I straightened out the lips and moved the chin outwards not sure if it is enough though, but I will gather more references and reevaluate.
I attached the skin material to the post. For the backlit parts I had to edit the source code of the engine. I am just copy pasting code and still trying to figure things out at the moment.
For the eyes I have three parts one is the actual eyeball (MI_EyeRefractive), one is to blend the eye with the head (MI_EyeBlend), and the last one is to to darken the eye and blur all the parts together (MI_Eye_Occlusion_Bust). You can find all the materials in unreal's photorealistic example.
What hairstyle will you make? I'm assuming the double braided one in the centre of your ref-image.
@jose.fuentes Thanks. I hope I can improve on this project.
@CybranM Unfortunately the season 7 braiding is too complicated (shown below), so I am probably going to go for the style from season 3/4.
@Swaggernaut Thanks. I try.
Not much progress I have just been experimenting.
I worked on adding a secondary specular lobe and a fuzz layer to the material. The fuzz layer was exaggerated and also made blue for debugging purposes. I still need to figure out how to send custom data from the material.
I also started to play around with the hair material to see how to achieve very light hair colour and how I might go about creating the braids.
Created a comparison image for Single specular lobe vs Double specular lobe + fuzz:
https://imgsli.com/MDgwMg
Time to move on and get back to sculpting.
For the transmission I think I was initially trying to use:
http://www.derschmale.com/2014/06/02/deferred-subsurface-scattering-using-compute-shaders/
For the two specular lobes I am using the implementation details on slide 45 of:
http://www.iryoku.com/downloads/Next-Generation-Character-Rendering-v6.pptx
@Nathair23 Thanks. I got side tracked and spent too much time on the material.
https://forums.unrealengine.com/unreal-engine/events/84784-mclaren-car-configurator-rendering-techniques-june-2nd-live-from-epic-hq?p=759898#post759898
I hope that Epic will improve their skin shader because so many other game engines already have features like transmission for quite a while now.
I was wondering if you know what marmoset uses for its fuzz effect?
before we get into that though, what's causing it to use an extra buffer? all of this can be done with what's already there.
GBuffer.CustomData.rgb is already being used for subsurface color
GBuffer.CustomData.a is being used for opacity
I am storing specular2 and specular2 roughness in the green and blue channels, transmission is alpha and fuzz in red.
After that these values are being used in ShadingModels.ush.
Maybe I am doing something wrong? I don't know much about real time rendering.
Similarly, you can probably calculate transmission in the surface shader too.
I'll see if i have time to experiment with this over the weekend. But what you're doing now is cool man, good job!
Really impressive what you are doing with the skin shading.
That sounds like it is way beyond me, but I am trying to learn OpenGL so I can understand RT graphics in particular deferred rendering. However, I am prioritising learning 3D art .
@Sunray
Thank you.
I have been busy with work, so I was just fixing and testing stuff. I am using the new datapack from eisko.
Thanks hopefully I can get there soon.
Some more experimentation, but this time with the hair:
Comparison showing only R and TRT components (without scattering):
https://imgsli.com/MDg3MQ
More hair stuff:
1. Added a forth lobe that is supposed to help with low absorbing hair at more grazing angles.
2. Fixed an issue with the glints being too bright. Now the eccentricity works within the expected range of 0.85 to 1.https://imgsli.com/MDg5NQ
3. Due to the lack of a normal map I added some pixel depth offset to give the appearance of depth/volume to the hair cards.
I jacked up the dial so you can more easily notice the effect it has.
I am probably getting closer to the final look of the hair, but I am still trying to achieve the softness.
Some early hair colour experiments. Some of the colours are probably too saturated and there's not enough colour variation, but it's easy to see the different components.
References
http://www.graphics.stanford.edu/papers/hair/
https://benedikt-bitterli.me/pchfm/
https://docs.unrealengine.com/latest/INT/Resources/Showcases/PhotorealisticCharacter/
There is quite a lot of dithering/noise, but hopefully it will go away once the hair cards are UV mapped and textured.
I also changed the shader, using an idea from Uncharted 4, by reducing the shadows on the hair. This is supposed to make it look softer.
Left is unmodified and right is modified shadows.
https://imgsli.com/MTIxMw
Reference
Started working on the hairline and fly aways. This seems to be as thin as they can go before the anti aliasing starts failing.
I also added some normal map support to the hair shader. A fairly uninteresting test, but the left plane is using default lit shading model with normal map, and the right the hair shader with normal map.