I saw your work on Artstation a while back and it completely inspired me to start working on my characters again. Your work is amazing and so incredibly gorgeous I'm totally blown away every time I come back to your thread.
I saw you mentioned you have a custom build of Blender or something for better vertex painting. Where did you get that, if you don't mind me asking?
and the feature that made the difference for me is "- Basic support for painting through mesh in vertex paint mode using
'Limit selection to visible' option in view 3D header (like in weight
paint mode)."
somebody posted a breakdown of fancy new vertex paint tools for blender over in the mega-thread a few weeks ago. it's well possible that the newest versions of official blender do away with the need for this custom build. i only use it for vertex painting and use the regular ones for all other work (due to some crashes i ran into).
i'm halfway there with the hairstyle, kept some fibermesh where possible. it's about 13k triangles right now plus the rather unreal specific splines. aiming for 20k when finished. also a test for screen to gif. very nifty app:
i'm almost done with the layout now. hairline and ponytail will receive a makeover though before a test in unreal takes place. and since there were some questions: yes that's polygon strips, not some hairsystem, nothing needs to be baked or converted. textures are greyscale to make out easier where overlaps occur and to differentiate the layers.
imported into toolbag today for a first look with materials. big shock
because it all looked see through like an xray until i remembered that i
had pumped up the alpha all the way in blender's material nodes while placing the geometry. so,
had to fatten up all the hair textures. thankfully if you keep them as
vectors, that's merely a rebake with a bigger value for the strand
diameters.
the normal map is jaggy and kind of invalid but it's just a stand-in since in it's final destination - unreal - the hair shader does not even utilize one.
When you say "o, had to fatten up all the hair textures. thankfully if you keep them as vectors, that's merely a rebake with a bigger value for the strand diameters" do you mean, you had to thicken the strands you were baking from? Or do you mean turn your bitmap hair textures to vectors? Also is xRay a renderer? ive never heard of it and when i googled Xray renderer all I got were tips on how to make an actual x ray render haha.
I'm actually doin some hair right now, is it cool if I PM you sometime with some specific questions? so I dont blow up your sketchbook haha
testimport into unreal. i needed to check how much it differs from the look i have elsewhere before finalizing the mesh. is it just me or is their shader more trouble than it's worth? all i want from it is the backlighting, those id-, root- and depth-maps can be binned right away as far as i am concerned. i think a normal map with perhaps a baked AO would make control so much more predictable.
anyway, it appears a little too plane-y for my taste since there are no custom vertex normals on this temp mesh.
Hey Thomas. I've been using the UE4 shader at work for a few months now for testing dark and light hair. It definitely has potential, but it's not the easiest thing to work with. It has some tech that is similar to some nice vfx hair shaders from what I've learned (like the Marschner hair shader in Renderman https://www.fxguide.com/featured/pixars-renderman-marschner-hair). I'm still testing it out though. It definitely takes some getting used to.
hey john, yeah i read that they took the shading model 'from the movies'. in my experience always a good way to get a coder excited.
i miss my normal maps though. so much easier to play with highlights and simulate depth if your strands aren't just... flat. you can see that very clearly when you zoom in on this.
that depth pixel offset on the other hand - can't make sense of it for the model at hand. sounds fancy, alright. their example doesn't exactly show it off in a manner that sells it.
From what I can tell, the shader is using the ID, root and depth maps to simulate a sense of dimension that would otherwise be done with normals and ao.
With the UE4 example character from Paragon having that classic short, spiky hair style, I feel it's able to hide some things that become more noticeable on longer, more sleek hair, especially female hair.
It was used on the recent Meet Mike demo at Siggraph, who's hair looked pretty good....but it also had about 320,000 Tris dedicated to the hair:)
mike indeed looks very good. would love to take a peek at the setup.
i've
thrown out depth and root maps for the time being and am now just
flying with color and id maps. seemingly getting a bit of a hang of it. color map could probably be swapped for vertex colors but am not at that stage yet.
John, let me know how that turns out for you. i'd be curious to hear if the shader makes sense to use on VR assets. last VR project i worked on did not use alpha masks for hair due to resolution concerns with the current generation of goggles.
I just tested it very quickly on a very short haired asset that I have and did not notice a difference actually, either in editor or in VR, at least in the Rift. My hair textures were much more quickly and crappily made than yours though:) No differences with alpha in VR on the latest Rift as compared to in editor either....and with this I've seen it used on somewhat longer hair as well.
I read your post on the Epic forum. Thanks for the heads up. Hopefully someone replies there!
Are you using separate hair volume geo underneath the hair cards by the way...or are those just much larger cards to create the volume underneath? I have tried both before, but again just as quick tests. I'm trying to compare your vector-based hair spline creation method using Affinity Designer/Blender with more traditional grooming tools like XGen or Ornatrix, while still thinking about older tricks like hair volume geo under cards. I like both methods for different reasons. Either way, thanks again for sharing!
glad to hear dithering hair (and foliage?) is no longer an issue then with the newer headsets!
i do use a solid mesh underneath for this one yes. in my experience if those chunky strands intended for building up volume contain any alpha mask then chances are there will be angles from which you can see underneath and have the background poking through.
I hear ya on the mesh underneath. I feel either that is needed or the chunky base card layer needs to have such a dense amount of strands per card that it becomes quite close to the look of a solid mesh anyway.
i'll be moving on to other elements of this model. a bit tired of looking at the head any longer.
suffice to say, hair was done with the rather excellent blender addon 'hair tool'. and while the hairline and underlayer were done by hand, the main strands are still all textured curves, easy to modify. record time on this one, too. i love it.
Good stuff Thomas! So no Affinity - Blender workflow this time then? I'm guessing you mean this add-on tool? Did you find it pretty easy to work with, or fun even? Did the Fibermesh blockout you made earlier still influence much of this final result, or did you try revamping it completely inside of Blender? Thanks again man.
since i was in the process of revamping my base mesh i decided to redo the teeth as well. teeth are a bit of a pet peeve of mine when i see them in games - seems they are generally an afterthought with a choice between a blindingly white and very artifical look or something ultra-lowpoly with a photo texture of tooth decay slapped on.
anyway, with these here i wanted to address a few issues i had with past models: they have a texel density that fits the face (mirrored uvs), share the head skin texture page and material and all the front teeth are separate from their neighbors so within limits they can be shaped and angled for a bit of an irregular look. the tongue uses the skin detail map to break up the gloss, works well enough for me.
@jderiggi the vectorgraphics (affinity) -> geometry for the hairtexture hasn't changed for this one. the blender addon comes in for placing the elements - and i find it absolutely indispensable.
i used the splines imported from fibermesh as a base. the addon allows using externally created splines (called curves in blender, really) so it's not needed to model from scratch. the entire volume of the hairdo has changed though, needed much much tighter tolerances. but i guess a small bit of blockout is still in there.
another pet peeve of mine with many characters - hands. all too often looking like another afterthought, too rough when put next to the head.
made some new ones to address that. currently sharing the head's material so the detail map tiling is about half of what it should be. will be corrected in a complete character.
also tweaked skin and hair further and finally unified vertex normals
the benefit of unifying the vertex normals is that it removes any breaks in the shading caused by gaps/different orientations between the vertex normals. since a haircut is comprised of lots of floating poly strips clumped together into one big shape you tend to still see shading issues that visually separate the elements when you light the surface. revealing your cheat.
this looks great! something I always had trouble with was sort order, how did you manage to get the hair cards to order correctly and not have underneath ones pop out on top of front ones?
i'm not using translucency, so i haven't come across sort order as an issue. blend mode is usually alpha-test with dithering in any engine or viewer i've used.
ahaa! I once tried to use alpha blend haha big mistake, its a shame because I wanted to blend out the ends of the strands softly but I guess the in engine dithering helps with that.
never liked seeing characters with obvious differences in texture resolution between body and face so i'm trying to avoid doing the usual sculpt-everything -> bake down into one set of textures here.
i've been working on decals and detailmaps for the body in the last week. ideally i'd like to use 1024x1024 texture resolutions as the maximum dimension all over the asset for LOD 0 and fade all of decals and details out for LOD 1 and replace with a baked down version. trying to keep the number of detailmaps to just 1 per element with one set of decals for the entire body.
resolution comparison:
i reckon that counts as pretty sharp. i've done some deformation tests with those free animations for the UE standard mannequin to see if the decals start slipping but even the knees still work - so far.
Cleaning out an SSD today and found some random things from the last few months.
These are greyscale/preview renders I did for an old project of mine called Thug Life that were done for an article that was published in a german CG magazine, 'Digital Production':
With these came a bunch of breakdown images - I only kept this one around. I confess I wanted it published with the interface included just to stick it to Adobe!
And in my sparetime I'm still committed to this model - I changed the neck/hairline recently, more detailed for one and the old one was casting nasty shadows in Unreal:
Hair is also done now on this one. 'Lowpoly'-fied to about 32000 triangles (facial hair included). A good deal lower than what I get to work with in my paying jobs.
This is absolutely awesome! Really learned a lot from your workflow.
I also use UE4 in making my game and I’ve been struggling with getting the eyebrows right for quite a while. So I was wondering would you please share some more details in making eyebrows for your character because they really look fantastic. Did you directly paint it onto the face texture map, or use hair cards with splines? Or maybe a mixture of both?
Hey thanks, eyebrows are the same workflow - I even keep them on the same texture. I find it's a good idea to make them look thicker by adding an underpainting. That way they won't vanish so easily when viewed from further away.
They need to have their vertex normals derived from the head and in this case use a flowmap too to shade correctly.
Replies
i added the names so they don't end up being referred to by numbers.
I saw you mentioned you have a custom build of Blender or something for better vertex painting. Where did you get that, if you don't mind me asking?
the custom blender build is here: https://blenderartists.org/forum/showthread.php?370568-Custom-Build-Blender-pigeon-v2-79-(October-24th)
and the feature that made the difference for me is "- Basic support for painting through mesh in vertex paint mode using 'Limit selection to visible' option in view 3D header (like in weight paint mode)."
somebody posted a breakdown of fancy new vertex paint tools for blender over in the mega-thread a few weeks ago. it's well possible that the newest versions of official blender do away with the need for this custom build. i only use it for vertex painting and use the regular ones for all other work (due to some crashes i ran into).
fantastic stuff!!
mocking up the hair flow and volume with fibermesh now.
and since there were some questions: yes that's polygon strips, not some hairsystem, nothing needs to be baked or converted. textures are greyscale to make out easier where overlaps occur and to differentiate the layers.
imported into toolbag today for a first look with materials. big shock because it all looked see through like an xray until i remembered that i had pumped up the alpha all the way in blender's material nodes while placing the geometry. so, had to fatten up all the hair textures. thankfully if you keep them as vectors, that's merely a rebake with a bigger value for the strand diameters.
the normal map is jaggy and kind of invalid but it's just a stand-in since in it's final destination - unreal - the hair shader does not even utilize one.
do you mean, you had to thicken the strands you were baking from? Or do you mean turn your bitmap hair textures to vectors? Also is xRay a renderer? ive never heard of it and when i googled Xray renderer all I got were tips on how to make an actual x ray render haha.
I'm actually doin some hair right now, is it cool if I PM you sometime with some specific questions? so I dont blow up your sketchbook haha
fell free to PM away if it's very specific, else it might be better placed here where a forum search can pick it up. your call!
testimport into unreal. i needed to check how much it differs from the look i have elsewhere before finalizing the mesh.
is it just me or is their shader more trouble than it's worth? all i want from it is the backlighting, those id-, root- and depth-maps can be binned right away as far as i am concerned. i think a normal map with perhaps a baked AO would make control so much more predictable.
anyway, it appears a little too plane-y for my taste since there are no custom vertex normals on this temp mesh.
John
i miss my normal maps though. so much easier to play with highlights and simulate depth if your strands aren't just... flat. you can see that very clearly when you zoom in on this.
that depth pixel offset on the other hand - can't make sense of it for the model at hand. sounds fancy, alright. their example doesn't exactly show it off in a manner that sells it.
From what I can tell, the shader is using the ID, root and depth maps to simulate a sense of dimension that would otherwise be done with normals and ao.
With the UE4 example character from Paragon having that classic short, spiky hair style, I feel it's able to hide some things that become more noticeable on longer, more sleek hair, especially female hair.
It was used on the recent Meet Mike demo at Siggraph, who's hair looked pretty good....but it also had about 320,000 Tris dedicated to the hair:)
John
mike indeed looks very good. would love to take a peek at the setup.
i've thrown out depth and root maps for the time being and am now just flying with color and id maps. seemingly getting a bit of a hang of it.
color map could probably be swapped for vertex colors but am not at that stage yet.
John
i put the question regarding normalmaps into epic's forum. curious to see if anything comes back. feel free to join in!
https://answers.unrealengine.com/questions/729681/unreal-hair-shader-and-normal-maps.html
I read your post on the Epic forum. Thanks for the heads up. Hopefully someone replies there!
Are you using separate hair volume geo underneath the hair cards by the way...or are those just much larger cards to create the volume underneath? I have tried both before, but again just as quick tests. I'm trying to compare your vector-based hair spline creation method using Affinity Designer/Blender with more traditional grooming tools like XGen or Ornatrix, while still thinking about older tricks like hair volume geo under cards. I like both methods for different reasons. Either way, thanks again for sharing!
John
i do use a solid mesh underneath for this one yes. in my experience if those chunky strands intended for building up volume contain any alpha mask then chances are there will be angles from which you can see underneath and have the background poking through.
i'll be moving on to other elements of this model. a bit tired of looking at the head any longer.
suffice to say, hair was done with the rather excellent blender addon 'hair tool'. and while the hairline and underlayer were done by hand, the main strands are still all textured curves, easy to modify. record time on this one, too. i love it.
John
anyway, with these here i wanted to address a few issues i had with past models: they have a texel density that fits the face (mirrored uvs), share the head skin texture page and material and all the front teeth are separate from their neighbors so within limits they can be shaped and angled for a bit of an irregular look. the tongue uses the skin detail map to break up the gloss, works well enough for me.
i used the splines imported from fibermesh as a base. the addon allows using externally created splines (called curves in blender, really) so it's not needed to model from scratch. the entire volume of the hairdo has changed though, needed much much tighter tolerances. but i guess a small bit of blockout is still in there.
John
made some new ones to address that. currently sharing the head's material so the detail map tiling is about half of what it should be. will be corrected in a complete character.
also tweaked skin and hair further and finally unified vertex normals
the benefit of unifying the vertex normals is that it removes any breaks in the shading caused by gaps/different orientations between the vertex normals. since a haircut is comprised of lots of floating poly strips clumped together into one big shape you tend to still see shading issues that visually separate the elements when you light the surface. revealing your cheat.
example from the wiki with before and after (called bent normals in there): http://wiki.polycount.com/w/images/thumb/8/8e/Chai_bentnormals.jpg/502px-Chai_bentnormals.jpg
thanks for the plug eric! btw. updated screenshots on artstation:
https://www.artstation.com/artwork/44XX4
so far!
and started a body - high res only at this point -
i've been working on decals and detailmaps for the body in the last week. ideally i'd like to use 1024x1024 texture resolutions as the maximum dimension all over the asset for LOD 0 and fade all of decals and details out for LOD 1 and replace with a baked down version. trying to keep the number of detailmaps to just 1 per element with one set of decals for the entire body.
resolution comparison:
i reckon that counts as pretty sharp. i've done some deformation tests with those free animations for the UE standard mannequin to see if the decals start slipping but even the knees still work - so far.
These are greyscale/preview renders I did for an old project of mine called Thug Life that were done for an article that was published in a german CG magazine, 'Digital Production':
With these came a bunch of breakdown images - I only kept this one around. I confess I wanted it published with the interface included just to stick it to Adobe!
In the end I went with a landscape. Could not stomach the thought of walking past this guy every day...
Hair is also done now on this one. 'Lowpoly'-fied to about 32000 triangles (facial hair included). A good deal lower than what I get to work with in my paying jobs.
This is absolutely awesome! Really learned a lot from your workflow.
I also use UE4 in making my game and I’ve been struggling with getting the eyebrows right for quite a while. So I was wondering would you please share some more details in making eyebrows for your character because they really look fantastic. Did you directly paint it onto the face texture map, or use hair cards with splines? Or maybe a mixture of both?
Thanks in advance~