 Amazing! Hello everyone, thank you for coming here. My name is Daniel Bistot and I work as a senior concept artist at Goodbye Cancer Studios in Stockholm. This is my Twitter and Master Daniel Handel and a little bit of a biscuit there for you who knows. Okay, so at Goodbye Cancer Studios we do VFX for film and TV and we do game cinematics and motion capture. In my personal time I do like personal artwork, love Eevee, love Blender, it's very cool. Also do Blender add-ons which you can find and download for free on my Gumroad page and I also like do stuff for the Blender Foundation. Sit with the amazing Julian here in the sculpting module and also the modeling module and like do demo files like the hair stuff here. Okay, very cool. So today I will show you how to make character grooming in the new hair system that give it up for Simon by the way. Simon Thomas in here. Yeah! So this is what we are gonna go through. This is a scan character and the hair there. So let's see if we can do this without Blender crashing. So the hair is sort of like consists out of these broad red clumps and then you have the thinner yellow clumps. We have something called flyway hairs represented by this blue color and then some very like art directed hair that is represented by this green color. Okay, there we go. So when I create hair and as we do in our studio we usually use a hair cap that is separate from the head mesh so that means that we don't really have to worry about the topology changing on the character mesh or the density of it or whatever. We can just bind the hair growth mesh and place the hair on that and I can check the y-frame here as well. Okay, so you can see here that I have vertex group which represents the hairline in the middle and this is also I'm using a hard edge here so I can split the mesh into two separate pieces and this will help us with interpolation of the hair later on. Okay, time to add some hairs. So I start by selecting this growth mesh, the hair cap, then go to curve and add an empty hair and we can go to sculpt mode. Have a look here and there's a bunch of cool brushes here on the side so add will just add hair where you place them and you can set the count just like the old hair system and you can also delete because you are never satisfied. Okay and here the density brush so this is just like Julian showed earlier where you can set the density with this thing up here press that and then you can sort of like drag how dense your hair should be placed. So I'm just gonna start here and up here you also have symmetry so I'm using X symmetry just filling this up with hairs not really bothering about anything really. Now we can also set the curve length shape and stuff like that so the interpolate here will sort of like if the hair is already groomed somehow if I add a new hair it's just gonna stand right out but if we use the density thing here it's gonna delete some. So if I set the interplay to the length shape and point count it will sort of inherit the shape point count and length to its neighbors. Here's the comb brush nothing it's great but the self explanatory I think so you can see here when I'm grooming that it's not really grooming the hair in the back so I would say the reason for that is we were a camera here looking at that and we had this sphere sort of like option going on so that means that when the brush is placed here it's not touching these parts so I prefer to use the projected version so then you like just what's behind in C depth will be affected. You have the snake hook brush which sort of like you can pull the end of the hair and just continue doing that so that's great. You can grow the hair so the current setting here in scaling is that scale uniform is off if that is on it will scale the hair from the root like this but I think the new option with where it's just off it's better because then the hair just continues along its direction. We'll have a pinch usually do this kind of stuff procedurally but it's good that it's there. Puff will align the hair to the surface normal smooth will smooth the hair I should mess it up a bit first so it's like okay so if I just continue brushing like this it's just gonna be straight and then we have a slide as well if you want to like be very specific about how you place some hairs so that's the grooming tools going over to paint selection so by default this is set to working with points on the hair so if I have that selected start grooming it just affects that painted area what I prefer to do is set it to the projected version so that means oh sorry I meant this little thing what's it called set select mode yeah it's curved so that means like when I do the paint selection it will paint the entire hair very cool so one of the things to note as well is that it's important with the density of the hair so I just prepared a little node group so this is showing off the density of each hair so I can since the hair is created by points that are connected I can't I need to have enough resolution to like shape it so if we're gonna re sort of like visualize this I can drop in a sample curve node put it here and then I can change the density afterwards so I'm gonna set this to 15 and then I can actually like just apply this modifier boom and now I have another density on the hair very nice so time to start grooming so I'm gonna turn off symmetry and start paint selection so I want to figure out sort of the center line there we go painted painting oh yeah need to hold in shift for adding to the selection so I'm just very rough in the beginning like don't really care just control I to invert that selection don't like this so I just want to see here that I have grabbed the correct hairs seems like it almost have it right we have a bunch of like different lengths and it's not looking very good so what I like to do is just like flood fill the entire thing like this whip and then it's sort of back in place then shrink it back down cool so that is exactly how a professional hairdresser would do quickly grow grow there great now one thing we can note is that hmm this looks kind of low res we can see like a point here point there it's just very blocky so in the render settings you can go down here to curve somewhere I'm not finding it but there's this awesome like search function curves so we're changing from strand to strip and now it has actual thickness that's good and we're gonna add additional subdivisions as well so that it's displaced correctly in the viewport nice so one thing that's sort of annoying at the moment is that we got a bit of like intersection here so I'm just gonna drop in a modifier and we have the shrink wrap hair curves so this is basically shrink wrapping the hair to a surface that you point to so I'm gonna select the hair cap right now and you can see here if I set the above surface like this then it will just shrink wrap everything to the surface and then but what I want to do is make sure that the points that are sort of like the on the inner side of the mesh they should be pushed out so I'm just gonna change the above surface to zero and then if I change offset distance I have to turn it on as well so there we go nice so this means that I can like continue to groom making sure that there is no intersection of course we can also use this collision thing but the nice thing here is that you can have like an offset distance as well let's go what's next okay let's set up the main hair here okay I'm just gonna call this hair and we have a totally empty geometry node set up so what I want to start doing is drop in like a hair noise node hair curves noise there we go and if I start changing the distance we can see that this is just sort of adding a noise to the hair and what I want to do is sort of like not have to like create this overlap with each hair strand by grooming but rather do it procedurally so the combative offset here is sort of like it increases the offset further down the hair strand so I prefer to turn that off and another thing I want to do is to make sure that we keep the length you can see here that it's kind of like very messy at the moment so I want to scale down the frequency so I'm changing scale along curve just like yeah something more like this it's nice now this hair noise thing is sort of like going doing things per position per points I believe and so I want a random per hair strand so I'm just gonna do offset per curve that will give us more randomness that's white hair I don't want white hair I want the nice red hair shader that I made okay so another thing would seed your hair is that you usually see or bad seed your hair it's just like ends sort of like straights but real hair has a tendency to like curve at the end like a little whoop we're just gonna add you know it's professional talker let's see what's called roll hair roll hair curves okay so what this does is that it's all sort of like rolls up the hair like this but we would just want it at the end so we don't want a long let's just put that down just a tad and then we can randomize the orientation of this as well get a little break up cool that's good enough for me okay let's create those wide clumps now so I'm gonna drop down on interpolates hair curves node and everything is gone it's horrible so the thing is like to do this we need to tell the hair system what surface it should point to and the data of its UV map this is actually something that could be like in the future perhaps picked up from the hair objects but it's not currently there so I'm gonna just drag down like that group inputs and plug in surface UV map so that means that if I go to the modifier here I can point to the surface growth mesh and also point to the UV map so here you set an explicit value but what I want to do is for it to pick up the UV map great we have hair it's dragging this out so you can see so here I'm just gonna increase the density and since we want to create a lot of hair we currently have like a thickness that is like it's gonna be unreadable set this to 5,000 for instance it's just like a mess so I'm just gonna go ahead and create a little curve profile so this node now I'm gonna set it to really low density instead so we can sort of see what happens the hair curve profile sets the radius of the curves and as you can see currently that the root is thick and the tip rips and tip so this is thin currently so there's a variable or parameter I guess called shape on most of the hair nodes so that means like if you set this to one oops just the hair the tip will be affected and if you go down to towards zero the effect will happen on the entire curve and if you go negative it's gonna be like only the roots is affected yep like that so I'm gonna set it to sort like just a tiny bit and I want a radius of 0 0 5 so it's really thin now we're gonna increase the density again cool okay so now it's time to create some clumps clump hair curve there we go just dropping that in there and if you have any questions during the talk like raise your hand or scream or something I know that I can go a bit fast sometimes so it's good to hold me back okay so now we can see that we have a bunch of clumps here and if I change the shape towards zero you will see that it's gonna be super thin and these are gonna be the wide clumps so we don't want them very very thin but I'm gonna set it to sort of like 0.3 or something and then like the thing you can do is change the guide distance so this is sort of like procedurally setting how many clumps there will be so if I set the guide distance to fairly high value you will get few clumps like because the radius is bigger the distance to the guides and you can also but like in this case I want to explicitly use these curves they come in oh sorry yeah so this means that I'm using these curves explicitly to clump the hair right and I am going to reduce the factor so that the clumping is not that super obvious should be like somewhat but not very much so what I'd like to do is just like before after before after okay we will sell for that take this put it in a frame with shift P and call it wide clumps so one thing I would like to do as well is using like a density map and low and behold it's already prepared so what we usually have an issue with is getting enough density in the parting area so I painted that white then I painted the rest of the area 50% gray and black where I don't want any hair at all reproduce here okay so what I want to do now is take that texture and plug it into the density mask in the interplate hair curves node so I'm gonna search for texture image texture and here I can use the drop-down search for density it's there and if I'm just gonna plug this in I might think it works but it doesn't why is that because you need to tell geometry nodes how to map this texture as well so I'm just gonna name the attributes and writes UV map because I know that's the name of the UV map but move it a bit like that okay let's create a ramp but why would you do that you have already created the texture well the reason for that is like since I painted a lot of the area 50% gray I can just place this little thingy here at slightly over 0.5 value and then I can dial this exactly as I want so now it's connected to the density mask very cool it's gonna frame that call it density so now it's time to create those thin clumps so since I already have a setup here I am going to I also want to would be nice if I can control the density from outside like here in the modifier area so I'm just gonna drag this down I guess I can't do that density and I want to have multiply oh I need to do this I want to multiply this so basically I want to have the density of the wide clumps I want to multiply that with a like a global value so I can quickly like reduce the density if things become too slow or whatever so I'm pulling this down pressing N so we can see here created this density I'm gonna call it density wide like that and then we'll call this global density set default to one minimum to zero and Bob's your uncle cool nice now I can just select this little setup bring it up here plug in the density stuff put it in the mask create a little reroute and plug it in here oh no okay that's better thank you no drangler okay so control shift click over here to look specifically at the theme clubs and you know I showed you those colors earlier so I'm just gonna it's kind of nice to when the hair has the same color everywhere it's sort of hard to visualize what you're doing sometimes so one way of doing that is to you know setting colors to stuff so I'm gonna create a named attributes it's called store store named attributes drop it there no hands up okay what should I call this I written it down somewhere okay so I'm gonna call this call ID and I'm gonna change this to color and I want to set this call to a nice red just like those boxes that Tom showed earlier very open source oh no why is it yeah it's gonna put this over here as well and I just like you just have to trust me that I have an attribute in the shader that sort of picks up this value but we're not gonna have enough time to go into that I think so now I have the white clumps down here we have the other clumps down here and I'll sort of want to merge them and look at them together so I'm just gonna do this thing creates a join geometry node look at this reproduce here but Daniel it's all yellow yeah that's because it's overlapping it's has the exact same setup so what I want to do here is change the clump value or something huh red yellow together okay great so now can much more easily see what I'm doing here so these should be thin right point to that's the perfect number almost let's do that and here you can see like since I'm picking up those curves that I have groomed like the shape of everything is exactly the same but I want to have this like nice overlap that you have in here so the question is how I do that and I remember oh I did this hair curves noise and rolled curves I'm just gonna be super lazy and duplicate that and bring that up there so now I'm creating like a exact copy of the same setup and here in the hair curves noise there's a seed value and I can change that and voila we have like different shapes and nice overlap on the wide and thin clumps and I can also scale the frequency of the noise a bit I get more frequency great so currently like I showed you that you can use guide distance if you didn't want the input hairs to create the clump shape but sometimes it just doesn't interpolate the way I want it like especially here with a center line so what I want to do is create another set of guides so I could basically just take this interpolate setup to get it over here this might seem overly complicated but after a while when you start working with this it kind of becomes second nature hopefully so I just need to reduce the density quite a bit here so you can see here when I reduce the density we start controlling the amount of curves being spawned that's good so now we have the thin curves and the wide clumps so hmm so one thing that is an issue that is reoccurring in almost all hair systems is at the center line it's very hard to get enough coverage and getting you know not having them look bald let's see if I can jump back to shading here and down to this so this is like a node setup that I've done myself here you know I had that parting center with a vertex group so basically I take a copy of the growth mesh and deletes everything except for that center line and then I sort of like okay within a specific distance from that center line find all the root points and just snap it to the center line so now if I choose mix that's the wrong mesh growth ah perfect so impressive so you can see here if I set this to zero nothing happens if I set it to one it it just snaps all the hairs to the center line I won't be able to have the time to go into how this works in detail but like it's a thing to think about with your own setups and actually the next thing I'm gonna do will be very similar so hopefully you will learn from that so looking at this I think it's like super flat up here what I want to do is create this kind of like that kind of thing so how do I do that well I want to bring in the growth mesh just get that center line and then measure the distance of each curve points and then deform it somehow and we have this amazing diff hair hair displace displace hair curves I love the search minute because I always forget the specific name so here again it asks us for the surface and the surface UV map so I'm just gonna get a group inputs and that is the stuff that we had down here so I'm getting the surface oh no and the surface UV map and now if I increase the surface normal displacement we can see the hair rising but I want to like affect the entire hair except the roots so we have this recurring shape value right so I'm just gonna set it to almost zero something like that yeah it's amazing but it's kind of nice to exaggerate these things so you like it's very clear to you what's going on what okay so now I need to grab that growth mesh so I'm just gonna oh yeah okay when I select something else the geometry node setup disappears so I'm just gonna press this little pin so it stays and then I'm gonna drag this in cool so if I view that like the shader is transparent so I'm just gonna have to move to solid okay I think I have like 13 minutes left maybe we'll just try to do as much as we can in the time that we have okay so here's the growth mesh that I brought into the hair system and I want to delete everything except the center line and I remember that I had a weight paint group called parting center perfect so I'm just gonna grab that somehow named attributes so this will read the attributes from that mesh and it was called parting center and then I'm gonna say like okay so the vertex groups that were red they have a value of one so I will compare the well the value and if it is zero I just want to delete the geometry delete geometry and plug in this and plug in this there we go almost like it's something weird what is it I'm not looking at the correct thing oh yeah this is the curse okay yes so we had the input geometry and then we can actually look at that attributes this displayed here in black and white if it's equal to zero this becomes white and then I delete the points now I only have the center line grab this over here so there's a node called whoops geometry proximity so this is looking at the hair points and comparing how far they are placed to this mesh so I'm just gonna plug in that center line into the target inputs of the geometry proximity node and look since it doesn't have any faces I need to change to edges instead so now if I look at this it all starts coming together so a distance well a point that is very close to the center line will be black right because it's like zero distance and further way when we pass the value of one it's not going to be able to be displayed on screen right and I want to have a map range node so this means like let's say this is zero the distance here is one then I can start to translate like or remap so let's say I have a value of two down here like the distance I can say like if the this value is two then remap it's between zero and one this will become more clear later on now I want to create a curve float curve so this this one is also way of remapping values right because here we have a value of zero here we have a value of one so let's say zero here maybe one is here so what I want to do is create a little bald shape I'm just gonna do this so what happened now we had a value of zero here one here and we are remapping it to zero one zero along here and you can see that it's almost too far and that's where the map range node comes in so I can just like dial this back very cool and now finally I can bring this into the factor of the displacement and we have this amazing beautiful result thank you geometry nodes no of course we just need to like dial this back down so it looks a bit better let's just do that and I want to sort of like instead of having just a bowl I want to like something that looks more like that so now I can start reshaping this curve to create the shape I want and now I feel like this shape is too small so I want to sort of like bring it further away and I'm going back to the you see that that's amazing thanks to the geometry nodes team okay yep okay good enough