WEBVTT

00:00.000 --> 00:01.049
Hey there, I'm Simon

00:01.061 --> 00:02.440
from the Blender Studio.

00:02.760 --> 00:04.179
In this video I'll walk you

00:04.191 --> 00:05.994
through creating this procedural

00:05.995 --> 00:07.383
fur setup using the new

00:07.395 --> 00:09.100
hair nodes in Blender 3.5.

00:09.400 --> 00:11.623
There is another, shorter video giving a

00:11.635 --> 00:13.980
quick overview of how to use the new nodes

00:13.981 --> 00:14.956
that you might want to

00:14.968 --> 00:16.180
check out if you haven't.

00:16.240 --> 00:18.748
In this video, I'll take a little bit more

00:18.749 --> 00:19.827
time and go over each

00:19.839 --> 00:21.240
step creating this setup.

00:21.460 --> 00:23.430
The file with this example is also

00:23.442 --> 00:25.423
available for download on Blender.

00:25.424 --> 00:26.835
org and it contains these

00:26.847 --> 00:28.840
four different animal fur setups.

00:28.841 --> 00:30.080
I recommend you check them

00:30.092 --> 00:31.920
out, they are very fun to play with.

00:32.420 --> 00:33.974
In this video, we'll focus on

00:33.986 --> 00:35.660
this one specifically though.

00:36.060 --> 00:37.933
It's inspired by our fuzzy friend,

00:37.945 --> 00:39.560
the long-haired highland cow.

00:40.000 --> 00:42.015
We'll be starting from scratch to recreate

00:42.027 --> 00:43.960
this setup, and you'll need little to no

00:43.961 --> 00:45.231
knowledge about how geometry

00:45.243 --> 00:46.800
nodes work to be able to follow.

00:47.300 --> 00:48.460
So, let's get started.

00:49.680 --> 00:51.661
I'm here in Blender 3.5 and just

00:51.673 --> 00:54.040
starting out from the default scene.

00:54.500 --> 00:56.123
Let's just get rid of all the

00:56.135 --> 00:57.770
objects and instead replace

00:57.771 --> 00:58.974
them with a plane that we're

00:58.986 --> 01:00.201
going to use as the bases.

01:01.800 --> 01:03.448
And for now, I just want to

01:03.460 --> 01:05.365
subdivide this plane a couple

01:05.366 --> 01:06.639
of times, so we have a little

01:06.651 --> 01:07.981
bit more detail on the mesh.

01:08.380 --> 01:11.109
And then, the easiest thing to add some

01:11.121 --> 01:14.000
hair on top of this plane as a base is to

01:14.001 --> 01:16.348
just run the quick fur operator, which

01:16.360 --> 01:18.961
you can find in the add menu under curves.

01:19.100 --> 01:21.559
And this now adds a new curves

01:21.571 --> 01:24.207
object, which is automatically

01:24.208 --> 01:25.444
parented to the active

01:25.456 --> 01:27.100
object, which is the plane.

01:27.760 --> 01:29.595
And also selecting the

01:29.607 --> 01:32.041
plane as the surface object

01:32.042 --> 01:33.589
and its active UV map as

01:33.601 --> 01:35.420
the UV map for the curves.

01:36.220 --> 01:38.062
This is quite important to make sure that

01:38.074 --> 01:39.840
the curves are attached to the surface.

01:40.800 --> 01:42.926
And now we can already go into sculpt

01:42.938 --> 01:45.300
mode and do some grooming on top of this.

01:50.150 --> 01:52.110
As you can see, there's already

01:52.122 --> 01:54.030
a procedural setup going on.

01:55.150 --> 01:57.208
If I go to the modifier panel, you

01:57.220 --> 01:59.350
can see that the quick fur operator

01:59.351 --> 02:00.434
already added a bunch

02:00.446 --> 02:02.010
of modifiers on top of this.

02:02.630 --> 02:04.938
If I disable all of them, you can see the

02:04.939 --> 02:06.579
original curves that you

02:06.591 --> 02:08.311
can actually sculpt on.

02:08.490 --> 02:11.160
And then there's a setup on top that adds

02:11.172 --> 02:13.790
more interpolated curves based on those.

02:14.390 --> 02:15.878
And then add some noise

02:15.890 --> 02:17.650
and frizz on top of that.

02:17.651 --> 02:19.830
The original curves that you can actually

02:19.831 --> 02:20.836
sculpt on are marked

02:20.848 --> 02:22.170
with this white overlay.

02:22.710 --> 02:23.985
One thing I want to do is

02:23.997 --> 02:25.850
scale the plane down a little bit.

02:25.851 --> 02:27.576
Let me go into edit mode

02:27.588 --> 02:29.686
and scale it by a factor of

02:29.687 --> 02:31.337
0.2 to get a more reasonable

02:31.349 --> 02:33.010
surface area to work with.

02:33.330 --> 02:34.681
And as you can see, as

02:34.693 --> 02:36.304
I'm scaling this around,

02:36.305 --> 02:37.528
the density of the hair

02:37.540 --> 02:38.990
does not actually change.

02:38.991 --> 02:40.727
So you get fewer hairs on

02:40.739 --> 02:42.977
the smaller surface, but there

02:42.978 --> 02:44.673
are also these strange

02:44.685 --> 02:47.090
stray hairs around this area.

02:47.091 --> 02:49.965
And that's because the actual curves,

02:49.977 --> 02:53.090
if I go into sculpt mode here as you can

02:53.091 --> 02:56.230
see, did not actually change with the mesh.

02:56.790 --> 02:57.965
The curves and the mesh

02:57.977 --> 02:59.370
are two separate objects.

02:59.890 --> 03:01.784
But now that the mesh changed, we'll

03:01.796 --> 03:04.010
have to update the position of the curves.

03:04.810 --> 03:07.750
We can do that in curve sculpt mode with

03:07.762 --> 03:10.931
the operator to snap to the formed surface.

03:11.090 --> 03:12.270
And there we go.

03:12.271 --> 03:14.219
Because each curve remembered

03:14.231 --> 03:16.190
its UV coordinate, they all

03:16.191 --> 03:17.595
snap to the point on the plane

03:17.607 --> 03:19.070
where they're supposed to be.

03:19.550 --> 03:20.969
Now let me just rotate this

03:20.981 --> 03:22.730
plane into a vertical position.

03:23.190 --> 03:25.035
And then let's do some very,

03:25.047 --> 03:26.970
very basic grooming to just

03:26.971 --> 03:28.182
angle these curves down

03:28.194 --> 03:29.790
a little bit on the surface.

03:31.190 --> 03:32.950
And make them just a little bit longer.

03:37.880 --> 03:39.914
And that is about as much grooming as we're

03:39.926 --> 03:41.740
actually going to do in this tutorial.

03:41.741 --> 03:44.029
Now, the main part, separate from this,

03:44.041 --> 03:46.340
is just going to be a procedural setup.

03:47.200 --> 03:48.422
Next up, let's take a closer

03:48.434 --> 03:49.580
look at these modifiers.

03:50.500 --> 03:52.333
The first one here is responsible to

03:52.345 --> 03:54.240
set the thickness of the hair curves.

03:55.340 --> 03:57.143
But as you can see, if I change anything,

03:57.155 --> 03:58.840
right now we're not seeing the result.

03:59.620 --> 04:01.025
To change that, we have to

04:01.037 --> 04:02.780
go to the render settings tab.

04:03.660 --> 04:05.805
And in the curves properties,

04:05.817 --> 04:07.900
change the shape to strip.

04:07.901 --> 04:10.305
And then we can also add some additional

04:10.317 --> 04:12.320
subdivision to get a nicer shape.

04:12.760 --> 04:15.130
And now you can see how this shape of

04:15.142 --> 04:17.900
the hair strands is a little bit more soft.

04:18.380 --> 04:20.459
And when we change the radius, you can see

04:20.471 --> 04:22.561
how this is actually having an effect now.

04:22.780 --> 04:24.308
Besides the radius, there's also

04:24.320 --> 04:25.860
an option to change the shape.

04:26.280 --> 04:29.450
The default of 0.5 means that it has

04:29.462 --> 04:33.160
100% of the width at the root of the hair.

04:34.120 --> 04:35.959
And then linearly

04:35.971 --> 04:39.020
falls off to 0 at the end.

04:39.460 --> 04:41.474
The factor of that you can also control

04:41.486 --> 04:43.360
with factor max and factor min here.

04:44.120 --> 04:45.251
But you can also change the

04:45.263 --> 04:47.040
interpolation with this shape parameter.

04:47.660 --> 04:48.953
If you increase the

04:48.965 --> 04:51.300
shape, it will fall off quicker.

04:52.960 --> 04:54.677
If you reduce it, it will

04:54.689 --> 04:56.280
fall off more slowly.

04:57.540 --> 04:59.971
And then if you go into the negatives,

04:59.983 --> 05:02.300
you will get the opposite direction.

05:03.480 --> 05:05.720
For now, let's just keep that at 0.5.

05:06.140 --> 05:08.152
The next modifier in here is called

05:08.164 --> 05:10.300
the interpolate hair curves modifier.

05:11.920 --> 05:14.297
This one is responsible to interpolate

05:14.309 --> 05:16.820
the existing guide curves that you have,

05:17.060 --> 05:19.180
which we can see in the overlay here.

05:19.720 --> 05:21.610
And create more to interpolate

05:21.622 --> 05:23.840
them all over the surface object.

05:23.841 --> 05:26.254
If I just crank up the density here to

05:26.266 --> 05:28.940
let's say 10,000, you can see how we get a

05:28.941 --> 05:31.053
lot more curves without actually

05:31.065 --> 05:33.520
adding more into the real geometry.

05:33.940 --> 05:36.247
For this modifier, it's important

05:36.259 --> 05:38.100
to set the surface object.

05:38.520 --> 05:40.207
Otherwise, the result is

05:40.219 --> 05:42.201
just empty and also the UV

05:42.202 --> 05:43.551
map so that the curves can

05:43.563 --> 05:45.080
be attached to the surface.

05:45.520 --> 05:47.374
In this case, the quick fur operator

05:47.386 --> 05:49.100
already took care of that for us.

05:49.520 --> 05:51.034
The next modifier that was

05:51.046 --> 05:53.160
already added is a noise modifier.

05:53.161 --> 05:54.588
To just distort the curves

05:54.600 --> 05:56.260
with a simple noise texture.

05:56.261 --> 05:57.940
We can crank up the

05:57.952 --> 06:00.800
distortion distance like this.

06:01.560 --> 06:03.389
Or we can change the scale of

06:03.401 --> 06:05.940
the texture to get a different result.

06:07.440 --> 06:08.613
Another modifier to add

06:08.625 --> 06:10.118
some variation that already

06:10.119 --> 06:11.157
has been added is the

06:11.169 --> 06:12.620
frizz hair curves modifier.

06:13.020 --> 06:14.594
It's a bit similar to the noise

06:14.606 --> 06:16.500
modifier as it adds some variation.

06:16.501 --> 06:18.787
But instead of using an actual noise

06:18.799 --> 06:21.160
texture that is mapped to the curves,

06:21.560 --> 06:23.161
it's just using a random value for

06:23.173 --> 06:24.740
each control point of the curves.

06:25.160 --> 06:26.720
And that makes everything very fuzzy.

06:27.540 --> 06:29.205
With the seed input, you can change

06:29.217 --> 06:30.940
between different random variations.

06:31.560 --> 06:32.902
The shape works the same as

06:32.914 --> 06:34.820
for the hair shape in the beginning.

06:35.180 --> 06:38.250
So the default of 0.5 means that we have an

06:38.251 --> 06:39.487
increasing amount of

06:39.499 --> 06:41.060
frizz along each curve.

06:41.300 --> 06:43.091
So if I crank that higher, we get

06:43.103 --> 06:44.960
less and less frizz up to the tip.

06:44.961 --> 06:46.786
And if I crank it lower, we'll

06:46.798 --> 06:48.880
get more along the entire curve.

06:49.300 --> 06:51.404
And if I go the opposite way of going

06:51.416 --> 06:53.700
into the negative values, you'll see how

06:53.701 --> 06:55.960
there's no frizz at the tip, but

06:55.972 --> 06:58.740
then stronger frizz around the roots.

06:59.660 --> 07:02.519
Same as for the noise node,

07:02.531 --> 07:05.720
there are also some toggles.

07:06.060 --> 07:07.318
There's for example the

07:07.330 --> 07:08.820
cumulative offset toggle.

07:09.260 --> 07:10.652
What this does is that the

07:10.664 --> 07:12.177
displacement node of every

07:12.178 --> 07:13.272
point is affecting the

07:13.284 --> 07:14.641
next one along the curve.

07:15.180 --> 07:16.589
So if I turn this off,

07:16.601 --> 07:18.152
the whole frizz effect

07:18.153 --> 07:19.443
is very random and

07:19.455 --> 07:21.481
uniform in all directions.

07:21.680 --> 07:23.041
But if I turn it on, you can see

07:23.053 --> 07:24.640
how it's a little bit more natural.

07:25.060 --> 07:26.318
And then there's another toggle

07:26.330 --> 07:27.600
to preserve the curve length.

07:27.920 --> 07:29.765
So that means when I increase this value

07:29.777 --> 07:31.680
instead of the curves just getting longer

07:31.681 --> 07:33.219
and longer, it preserves

07:33.231 --> 07:34.588
the length and they

07:34.589 --> 07:35.741
just start crumpling up

07:35.753 --> 07:37.120
without actually growing.

07:37.121 --> 07:39.537
And the last modifier that is added by

07:39.549 --> 07:42.040
default is the surface deform modifier,

07:42.380 --> 07:44.340
which takes care that the curves

07:44.352 --> 07:46.940
move as the surface object is deforming.

07:47.100 --> 07:49.339
Just keep in mind that changing the

07:49.351 --> 07:52.040
actual mesh in edit mode does not count as

07:52.041 --> 07:52.947
deforming as you're

07:52.959 --> 07:54.360
changing the original mesh.

07:54.361 --> 07:56.598
But if instead I add, for

07:56.610 --> 07:58.679
example, a shape key,

07:58.680 --> 08:00.460
let's just create a basic

08:00.472 --> 08:02.120
deformation for this.

08:03.740 --> 08:05.269
And then I have the shape key

08:05.281 --> 08:07.300
actually have an effect on the mesh.

08:07.800 --> 08:09.218
You can see how the curves

08:09.230 --> 08:10.660
are moving nicely along.

08:14.640 --> 08:16.139
For that to work is actually

08:16.151 --> 08:17.932
important to make sure that the

08:17.933 --> 08:19.660
surface deform modifier is

08:19.672 --> 08:21.880
always at the end of the stack.

08:21.881 --> 08:23.317
And also the surface

08:23.329 --> 08:25.140
rest position toggle is

08:25.141 --> 08:27.262
enabled in the interpolate

08:27.274 --> 08:29.161
hair curves modifier.

08:29.200 --> 08:30.600
So those are the basics.

08:31.040 --> 08:32.019
Now let's start with

08:32.031 --> 08:33.320
the actual custom setup.

08:33.840 --> 08:35.580
For now, let's disable the frizz to get

08:35.592 --> 08:37.300
a better picture of what is happening.

08:37.840 --> 08:40.652
Also, I want to change the viewport display

08:40.664 --> 08:43.360
color of the fur so we get a better read.

08:43.580 --> 08:44.901
Let's go for something like this.

08:44.980 --> 08:46.275
And then also in the

08:46.287 --> 08:48.181
display settings, I want to

08:48.182 --> 08:49.394
turn on shadowing and

08:49.406 --> 08:50.980
cavity in the world type.

08:50.981 --> 08:52.769
To get a realistic result, we're

08:52.781 --> 08:54.580
going to need a lot more hair.

08:54.900 --> 08:56.505
So in the interpolate hair

08:56.517 --> 08:58.321
curves modifier, let's turn

08:58.322 --> 08:59.758
the density to something

08:59.770 --> 09:01.700
really high, like one million.

09:03.660 --> 09:05.700
Now we got a very dense curve setup.

09:06.460 --> 09:08.513
The value of one million is

09:08.525 --> 09:10.820
the density per square unit.

09:12.100 --> 09:13.634
So what that means in

09:13.646 --> 09:16.370
Blender here, a unit like this will

09:16.371 --> 09:17.868
have a million of these curves

09:17.880 --> 09:19.440
spawned in the current setup.

09:19.441 --> 09:21.350
But because this plane is a lot

09:21.362 --> 09:23.840
smaller than one Blender unit squared,

09:24.540 --> 09:26.140
we don't actually have a million curves.

09:26.680 --> 09:27.972
One way to find out how

09:27.984 --> 09:29.514
many we actually have is,

09:29.515 --> 09:30.678
for example, to go to the

09:30.690 --> 09:31.960
geometry nodes workspace.

09:32.480 --> 09:34.156
And then with our object selected,

09:34.168 --> 09:36.000
you can see that we're dealing with a

09:36.001 --> 09:36.676
hundred and sixty

09:36.688 --> 09:37.820
thousand curves right now.

09:38.080 --> 09:39.855
Of course, that is not going to be super

09:39.867 --> 09:41.480
performant when we're working on it.

09:42.000 --> 09:44.148
So one thing that I want to do is decrease

09:44.160 --> 09:46.120
the amount that we see in the viewport

09:46.121 --> 09:47.289
while the rendering will

09:47.301 --> 09:48.580
still have this density.

09:48.581 --> 09:50.118
So for the viewport amount,

09:50.130 --> 09:52.080
let's just type in four percent.

09:52.280 --> 09:53.425
And this would make it a lot

09:53.437 --> 09:54.760
easier to work with the setup.

09:55.480 --> 09:57.184
So let's collapse the interpolation

09:57.196 --> 09:58.960
for now and just focus on the noise.

09:59.240 --> 10:00.555
The noise is the only thing that

10:00.567 --> 10:02.060
is deforming our curves right now.

10:02.340 --> 10:03.997
One thing that I want to do is make this

10:03.998 --> 10:04.807
pattern of displacement

10:04.819 --> 10:05.640
a little bit smaller.

10:05.860 --> 10:06.968
So let's crank up the

10:06.980 --> 10:08.580
scale to something like two.

10:09.160 --> 10:09.916
And to control the

10:09.928 --> 10:11.123
strength of this effect, I

10:11.124 --> 10:12.383
actually want to use a

10:12.395 --> 10:13.781
mask that I can paint.

10:13.820 --> 10:15.185
One way of doing this is

10:15.197 --> 10:16.860
to select the base surface.

10:16.861 --> 10:19.300
And on there we can create a vertex group.

10:20.480 --> 10:21.880
Let's call this one noise strength.

10:22.900 --> 10:24.700
That's just drawing something basic.

10:26.780 --> 10:30.044
And then in the modifier, we can click

10:30.056 --> 10:33.500
on this button here to change the factor

10:33.501 --> 10:35.032
input instead of a single

10:35.044 --> 10:37.020
value into an attribute input.

10:38.100 --> 10:40.291
And here we can select the noise

10:40.303 --> 10:42.920
strength from the plane as an input.

10:43.700 --> 10:45.221
And if we go back to weight

10:45.233 --> 10:46.880
paint mode on the plane, we

10:46.881 --> 10:48.029
can see how now we can

10:48.041 --> 10:49.780
actually paint in the strength.

10:52.520 --> 10:53.657
Now that we have some

10:53.669 --> 10:55.255
variation in the base shape

10:55.256 --> 10:56.406
of the groom, let's add

10:56.418 --> 10:57.781
some more effects on top.

10:58.500 --> 10:59.714
For that I want to actually

10:59.726 --> 11:01.179
start layering our own effects

11:01.180 --> 11:02.505
on top of what the quick

11:02.517 --> 11:04.300
fur modifier added by default.

11:04.640 --> 11:05.670
To do that, we have to

11:05.682 --> 11:06.960
open a new editor window.

11:07.880 --> 11:09.080
Select the asset browser.

11:09.081 --> 11:11.503
And there, in the essentials

11:11.515 --> 11:13.515
library, you can find

11:13.516 --> 11:15.311
all of the hair modifiers

11:15.323 --> 11:17.420
that ship with blender 3.5.

11:17.680 --> 11:18.935
To get a better overview, let's

11:18.947 --> 11:20.460
check out the different categories.

11:21.220 --> 11:23.500
There are general deformation nodes.

11:23.980 --> 11:26.160
Generation to add more curves.

11:26.760 --> 11:28.190
Guide nodes to enable a

11:28.202 --> 11:30.020
guide curve based workflow.

11:30.560 --> 11:32.235
Read nodes to give you information

11:32.247 --> 11:34.320
about the curves to use in the node setup.

11:34.820 --> 11:36.300
General utility nodes.

11:36.301 --> 11:38.228
And then in the right category,

11:38.240 --> 11:40.680
just the set hair curve profile node.

11:41.100 --> 11:42.407
Some of these, like this

11:42.419 --> 11:43.792
one, we've already used

11:43.793 --> 11:44.860
because they were added

11:44.872 --> 11:46.420
by the quick fur automatically.

11:46.760 --> 11:48.045
But now I want to add a

11:48.057 --> 11:49.580
new one to curl the hair.

11:50.640 --> 11:51.605
This one can be found

11:51.617 --> 11:52.780
in the guides category.

11:53.500 --> 11:54.514
But you can also just

11:54.526 --> 11:56.040
type in curl into the search.

11:56.660 --> 11:58.494
To add it to the curve objects

11:58.506 --> 12:00.476
modifier stack, you can simply

12:00.477 --> 12:01.754
drag it into the viewport

12:01.766 --> 12:03.520
and let go on top of the object.

12:03.521 --> 12:04.840
And there it is.

12:04.841 --> 12:06.880
It's already added to the end of the stack.

12:07.200 --> 12:08.208
But let me just move

12:08.220 --> 12:09.700
this right after the noise.

12:10.320 --> 12:11.676
Of course, the default settings

12:11.688 --> 12:13.100
are not quite fitting exactly.

12:13.460 --> 12:14.647
Let's change the radius to

12:14.659 --> 12:16.180
something like two centimeters.

12:16.840 --> 12:17.907
And let's also crank up

12:17.919 --> 12:19.280
the frequency a little bit.

12:20.040 --> 12:21.600
And there you can see what's happening.

12:22.300 --> 12:24.940
One thing I want to change is to crank

12:24.952 --> 12:27.740
up the curl start all the way up to one.

12:28.160 --> 12:28.956
Because I just want

12:28.968 --> 12:30.200
them to curl up to the tip.

12:30.201 --> 12:32.521
And because I want these curls to clump

12:32.533 --> 12:35.040
up a little bit more at the tip, I'll just

12:35.041 --> 12:36.467
change the factor end

12:36.479 --> 12:38.260
to something much lower.

12:38.780 --> 12:41.520
To get some more variation here, I'll

12:41.532 --> 12:44.501
also crank up the random offset to 0 .5.

12:44.780 --> 12:45.931
And for now, that's about what

12:45.943 --> 12:47.300
I want to do with these settings.

12:47.660 --> 12:49.933
I do want to go into detail into something

12:49.934 --> 12:51.456
else, though, which is

12:51.468 --> 12:53.281
the guide hair workflow.

12:53.520 --> 12:55.588
What is different about the curls compared

12:55.600 --> 12:57.680
to the modifiers that we already looked at

12:57.681 --> 13:00.653
before is that they kind of clump together

13:00.665 --> 13:03.580
a bunch of hairs into one singular shape.

13:03.840 --> 13:05.880
And that is based on the guide curves.

13:06.400 --> 13:07.635
Right now, by default,

13:07.647 --> 13:09.007
these guide curves are

13:09.008 --> 13:10.237
exactly the ones that you

13:10.249 --> 13:11.540
can edit in sculpt mode.

13:11.860 --> 13:13.955
If I take a look here, the

13:13.967 --> 13:16.317
overlay of the guide curves

13:16.318 --> 13:17.753
matches exactly the curls

13:17.765 --> 13:19.560
that are resulting from that.

13:19.940 --> 13:21.828
And if I start moving these

13:21.840 --> 13:23.740
around, you can see I can

13:23.741 --> 13:25.229
also shift the pattern of

13:25.241 --> 13:26.920
how the curls are created.

13:27.420 --> 13:29.242
And if I delete a bunch

13:29.254 --> 13:31.088
of them, you can even

13:31.089 --> 13:33.941
see how it removes these guides entirely.

13:34.740 --> 13:36.097
But of course, that doesn't

13:36.109 --> 13:37.680
remove the individual curves.

13:38.080 --> 13:39.200
The curves are still there.

13:39.440 --> 13:41.014
They're just mapped to the

13:41.026 --> 13:43.160
closest guide in their proximity.

13:43.680 --> 13:45.947
So this is one way to actually control very

13:45.948 --> 13:47.227
precisely how you want

13:47.239 --> 13:48.941
these clumps to be created.

13:49.520 --> 13:50.700
But in this case, I don't

13:50.712 --> 13:52.000
care about that too much.

13:52.040 --> 13:53.561
I just want a procedural setup

13:53.573 --> 13:55.260
that has some randomness to it.

13:55.261 --> 13:59.022
So what I can do to create this mapping of

13:59.034 --> 14:02.720
curves to guide curves more procedural is

14:02.721 --> 14:04.889
to just turn off this toggle to

14:04.901 --> 14:06.940
use the existing guide map.

14:07.760 --> 14:09.305
Now these clumps of hair are not

14:09.317 --> 14:11.360
matching what I do in the groom anymore.

14:12.140 --> 14:13.686
Instead, they're now based on

14:13.698 --> 14:15.900
these inputs here in the curl modifier.

14:16.380 --> 14:17.905
The guide distance gives you an

14:17.917 --> 14:19.800
average distance between two guides.

14:20.160 --> 14:21.460
So right now, that's 10 centimeters.

14:21.461 --> 14:23.274
So in our case, let's crank this a

14:23.286 --> 14:25.320
little bit lower to something like one

14:25.321 --> 14:26.906
centimeter, which gives us

14:26.918 --> 14:28.760
much smaller clumps of hair.

14:29.320 --> 14:31.130
And then on top of that, I want

14:31.142 --> 14:33.200
to also use the guide mask input.

14:33.500 --> 14:35.999
The mask input will randomly remove

14:36.011 --> 14:38.800
some of the guides based on the number.

14:39.380 --> 14:40.860
On one, nothing is removed.

14:41.440 --> 14:43.053
On zero, everything is removed,

14:43.065 --> 14:44.900
which just creates one big clump.

14:45.460 --> 14:48.040
But let's put this to something like 0.2.

14:48.041 --> 14:49.313
The result of this is

14:49.325 --> 14:51.037
kind of similar as keeping

14:51.038 --> 14:52.238
this on one and then just

14:52.250 --> 14:53.461
increasing this number.

14:54.220 --> 14:55.505
But the difference is

14:55.517 --> 14:56.999
that doing it this way

14:57.000 --> 14:58.509
looks a little bit more

14:58.521 --> 15:00.241
random and less uniform.

15:00.820 --> 15:02.920
So now we have a good natural base setup.

15:03.320 --> 15:04.920
Let's start adding more detail to it.

15:05.200 --> 15:06.576
The first thing I want to

15:06.588 --> 15:08.086
do is to enable the frizz

15:08.087 --> 15:09.087
again, but not the way

15:09.099 --> 15:10.480
that it is set up right now.

15:10.660 --> 15:12.214
Currently, the effect is the

15:12.226 --> 15:13.848
strongest at the tip, which

15:13.849 --> 15:15.057
will destroy the shape that

15:15.069 --> 15:16.560
we just created with the curls.

15:16.561 --> 15:18.834
So instead, I want to go for a negative

15:18.846 --> 15:20.960
shape, which will give us a stronger

15:20.961 --> 15:22.329
effect at the root and

15:22.341 --> 15:24.160
leave the tips as they are.

15:24.640 --> 15:26.970
Also, let's reduce the amount by changing

15:26.971 --> 15:28.083
the distance to something

15:28.095 --> 15:29.040
like 2 millimeters.

15:29.440 --> 15:30.573
And that just adds some

15:30.585 --> 15:31.780
more subtle variation.

15:32.540 --> 15:33.445
Next, I want to add

15:33.457 --> 15:34.760
some additional clumping.

15:35.260 --> 15:36.452
The curls already have

15:36.464 --> 15:38.160
some sort of clumping effect.

15:38.600 --> 15:41.185
But on top of this, I want to add some

15:41.197 --> 15:43.860
sub -clumping on a more granular level.

15:43.861 --> 15:46.015
So in the guides category,

15:46.027 --> 15:48.610
I'll just take the clump hair

15:48.611 --> 15:49.934
curves node and drag the

15:49.946 --> 15:51.560
assets on top of the groom.

15:52.060 --> 15:53.010
Let's make sure that it's

15:53.022 --> 15:54.100
before the surface deform.

15:54.880 --> 15:56.745
And you can see that by

15:56.757 --> 15:59.123
default, it takes the exact

15:59.124 --> 16:00.439
same guide curves that

16:00.451 --> 16:02.140
are selected by the curls.

16:02.560 --> 16:03.728
In this case, that's not

16:03.740 --> 16:04.821
what I want, because

16:04.822 --> 16:05.770
I want to add smaller

16:05.782 --> 16:06.880
clumps on top of that.

16:06.881 --> 16:08.943
So I just turn off the existing

16:08.955 --> 16:10.761
guide map toggle and then

16:10.762 --> 16:12.344
change the guide distance

16:12.356 --> 16:14.460
to something like 1 millimeter.

16:15.020 --> 16:16.627
That creates very small clumps

16:16.639 --> 16:18.420
on top of what we already have.

16:18.720 --> 16:21.504
And then also I want to reduce the guide

16:21.516 --> 16:24.380
mask to 0.1, which will essentially throw

16:24.381 --> 16:26.027
away 90% of the guides in

16:26.039 --> 16:27.896
the selection, which makes

16:27.897 --> 16:28.922
it look more natural and

16:28.934 --> 16:30.100
a little bit more random.

16:30.380 --> 16:31.289
Of course, you can always

16:31.301 --> 16:32.480
play around with these values.

16:32.481 --> 16:33.610
I also want to make

16:33.622 --> 16:35.244
these clumps a little bit

16:35.245 --> 16:36.791
stronger so that they start

16:36.803 --> 16:38.361
earlier towards the root.

16:38.680 --> 16:40.300
For that, I can change the shape.

16:40.660 --> 16:42.518
If I reduce this value, I get

16:42.530 --> 16:44.400
a stronger clumping effect.

16:45.760 --> 16:47.503
Now, before we continue adding more

16:47.515 --> 16:49.660
detail to this, I actually want to see this

16:49.661 --> 16:51.404
rendered, because remember,

16:51.416 --> 16:54.080
this is not the full density of curves.

16:54.560 --> 16:58.014
If I put this viewport amount back to 100%,

16:58.015 --> 16:59.411
we see the entirety of

16:59.423 --> 17:00.960
this very thick groom.

17:00.961 --> 17:03.310
So something we definitely have to reduce

17:03.322 --> 17:05.740
is the thickness of the individual curves.

17:06.260 --> 17:08.227
Let's go for 0.2 millimeters, and that

17:08.239 --> 17:10.420
looks a little bit better for the density.

17:10.800 --> 17:12.992
Okay, for now, let's turn this back to 4%

17:13.004 --> 17:15.260
and add a little bit of a rendering setup.

17:17.220 --> 17:20.016
Let's add in a camera object

17:20.028 --> 17:24.040
that just looks straight at the groom.

17:27.340 --> 17:29.144
Change the resolution to be

17:29.156 --> 17:31.780
square format, just the focal length.

17:31.781 --> 17:33.008
And now let's just add some

17:33.020 --> 17:34.580
lights in a separate collection.

17:36.560 --> 17:37.739
I want to have just a

17:37.751 --> 17:39.340
very basic lighting setup.

17:41.260 --> 17:43.648
Add a fill light from the top,

17:43.660 --> 17:46.460
with a little bit of a warm tone.

17:50.380 --> 17:52.988
Then a relatively small key light,

17:53.000 --> 17:55.620
coming a little bit from the side.

17:57.880 --> 18:00.720
And a rim light from the other side,

18:09.260 --> 18:10.580
with a little bit of a cold tone.

18:12.400 --> 18:13.389
And for the world,

18:13.401 --> 18:14.903
let's just crank down the

18:14.904 --> 18:16.272
color a little bit and

18:16.284 --> 18:18.041
push it more towards blue.

18:18.620 --> 18:19.561
And we can still tweak

18:19.573 --> 18:20.785
all of that later, but for

18:20.786 --> 18:21.800
now, let's go ahead and

18:21.812 --> 18:23.061
do a simple shading setup.

18:23.480 --> 18:24.702
For the shader, we do

18:24.714 --> 18:26.124
want to use nodes, and

18:26.125 --> 18:27.693
we're just going to use

18:27.705 --> 18:29.560
the principled hair BSDF.

18:29.561 --> 18:30.951
That works only for cycles,

18:30.963 --> 18:32.520
so if you want to use Eevee,

18:32.521 --> 18:33.950
make sure to just use the

18:33.962 --> 18:35.460
regular principled BSDF.

18:35.940 --> 18:36.968
I want to have some more

18:36.980 --> 18:38.410
precise control over the color,

18:38.411 --> 18:39.570
so I'm just going to keep

18:39.582 --> 18:40.800
this as direct coloring.

18:41.260 --> 18:43.088
And then we're going to

18:43.100 --> 18:45.100
use the curve info node

18:45.101 --> 18:46.434
to be able to use this

18:46.446 --> 18:48.220
information for the shader.

18:48.340 --> 18:50.159
I'm going to use the intercept to

18:50.171 --> 18:52.380
get a gradient from the root to the tip,

18:52.920 --> 18:54.081
and plug that into the

18:54.093 --> 18:55.640
factor input of a mix node.

18:56.160 --> 18:57.560
Set that to color.

18:59.120 --> 19:01.419
And then there I'm going to

19:01.431 --> 19:04.084
select a darker color for the

19:04.164 --> 19:06.083
root, and a brighter, more

19:06.095 --> 19:08.620
reddish color for along the tip.

19:09.620 --> 19:11.404
To get a better idea of the lighting,

19:11.416 --> 19:13.400
let's give the surface object a shader as

19:13.401 --> 19:15.826
well, where we turn off the specular

19:15.838 --> 19:17.880
and just crank down the color.

19:18.400 --> 19:19.580
There we go, it looks a lot better.

19:19.581 --> 19:21.964
Also turn on the denoising

19:21.976 --> 19:24.094
for the viewport, and

19:24.095 --> 19:25.581
enable the normal input

19:25.593 --> 19:27.221
to get a better result.

19:27.960 --> 19:29.340
And that looks already not so bad.

19:30.220 --> 19:31.880
Now let's give this an actual render.

19:33.080 --> 19:34.121
Alright, so this doesn't even

19:34.133 --> 19:35.476
have to render all the way through.

19:35.500 --> 19:37.560
We can already identify a couple of issues.

19:38.700 --> 19:40.427
So one thing is that these

19:40.439 --> 19:42.980
clumps are still very, very uniform.

19:43.620 --> 19:44.646
So we want to add some

19:44.658 --> 19:46.073
additional detail like stray

19:46.074 --> 19:46.975
hairs that are going

19:46.987 --> 19:48.220
between different clumps.

19:48.221 --> 19:49.228
And then also the

19:49.240 --> 19:51.097
individual hairs have all the

19:51.098 --> 19:52.421
same length, which results

19:52.433 --> 19:53.820
in these kinds of shapes.

19:54.460 --> 19:55.730
There can also be some

19:55.742 --> 19:57.665
variation in the shader, and it

19:57.666 --> 19:59.246
would also be nice to vary

19:59.258 --> 20:01.400
up the curling a little bit more.

20:01.660 --> 20:02.900
So let's get to work.

20:03.360 --> 20:04.811
First up, let's just work a little

20:04.823 --> 20:06.160
bit more in this shading setup.

20:06.740 --> 20:09.545
One thing that I want to do is use a noise

20:09.546 --> 20:10.786
texture to create some

20:10.798 --> 20:12.220
variation in the color.

20:12.221 --> 20:14.560
Let's just add a noise texture node.

20:15.540 --> 20:17.706
And for the vector, instead

20:17.718 --> 20:19.896
of leaving the input open

20:19.897 --> 20:21.447
as it is, I'm going to use

20:21.459 --> 20:23.081
the attribute input node.

20:23.480 --> 20:26.136
And there what I type in is surface

20:26.148 --> 20:28.520
UV coordinate with underscores.

20:28.760 --> 20:31.252
And if we just take a look at that, you

20:31.264 --> 20:33.580
can see how that nicely gives us the

20:33.581 --> 20:35.461
UV information of the surface

20:35.473 --> 20:37.300
for each individual curve.

20:37.301 --> 20:39.351
You can use this, for example, also

20:39.363 --> 20:41.540
to do texture painting on the surface

20:41.541 --> 20:44.426
and then use this attribute as the

20:44.438 --> 20:47.500
vector input for your image texture.

20:47.840 --> 20:48.798
But instead of doing

20:48.810 --> 20:50.314
actual image texture painting

20:50.315 --> 20:51.487
here, I simply just want

20:51.499 --> 20:52.881
to use this noise texture.

20:53.360 --> 20:55.696
Let's change the parameters a little bit to

20:55.697 --> 20:56.864
crank up the scale

20:56.876 --> 20:58.841
and the detail a little bit.

21:00.140 --> 21:02.040
And then use another mix

21:02.052 --> 21:04.840
node, set this one to soft light.

21:06.320 --> 21:09.295
And then use a color ramp to map

21:09.307 --> 21:13.040
the variation that we want to include.

21:14.960 --> 21:17.320
Let's play with the colors a little bit.

21:17.860 --> 21:18.999
And that creates a little

21:19.011 --> 21:20.300
bit more variation for us.

21:22.220 --> 21:23.662
On top of that, we can

21:23.674 --> 21:25.260
duplicate this node to

21:25.261 --> 21:26.502
also add some variation

21:26.514 --> 21:28.040
for each individual curve.

21:28.260 --> 21:30.520
And that results in a color map like this.

21:30.521 --> 21:33.944
And then for the shader node itself, we can

21:33.945 --> 21:35.691
also add some randomization

21:35.703 --> 21:36.940
to the roughness.

21:37.280 --> 21:38.607
And then let's tweak the

21:38.619 --> 21:40.236
roughness values themselves

21:40.237 --> 21:41.467
a little bit also to

21:41.479 --> 21:43.280
increase that a little bit.

21:43.620 --> 21:44.416
That makes everything

21:44.428 --> 21:45.620
look a little bit more fuzzy.

21:46.300 --> 21:47.224
So let's get into more

21:47.236 --> 21:48.300
detail with this setup.

21:49.000 --> 21:50.351
One thing that I mentioned

21:50.363 --> 21:51.517
I wanted to do is to

21:51.518 --> 21:52.495
randomize the length

21:52.507 --> 21:54.040
of these curves a little bit.

21:54.220 --> 21:55.412
For that, I can use the

21:55.424 --> 21:56.680
trim hair curves node.

21:56.681 --> 21:58.660
Let's just drag it on top.

21:59.140 --> 22:00.298
And by default it creates

22:00.310 --> 22:01.480
a little bit of a mess.

22:01.780 --> 22:03.511
Because what it does is that it

22:03.523 --> 22:05.660
trims the hair to a specific length.

22:06.080 --> 22:07.740
Which right now it's set to 1 meter.

22:08.100 --> 22:09.600
I don't want to do this here though.

22:09.860 --> 22:12.100
So let's turn off replace length.

22:12.500 --> 22:13.533
And then by default it

22:13.545 --> 22:14.780
doesn't change anything.

22:15.600 --> 22:17.051
But what I want to add

22:17.063 --> 22:18.660
is some random offset.

22:19.020 --> 22:20.591
So let's randomize the length

22:20.603 --> 22:22.460
by something like 5 millimeters.

22:22.960 --> 22:23.952
Here that doesn't have

22:23.964 --> 22:25.060
a very obvious result.

22:25.061 --> 22:27.880
But when we crank this back to 100 percent.

22:28.280 --> 22:29.251
You can see that it makes

22:29.263 --> 22:30.640
the tips a little bit more fuzzy.

22:31.140 --> 22:33.205
Another thing I want to do is to at

22:33.217 --> 22:35.120
the very end add some variation.

22:35.580 --> 22:37.005
By rotating the curves

22:37.017 --> 22:38.520
individually as well.

22:38.740 --> 22:40.500
You can change the random offset here.

22:41.000 --> 22:42.223
And you can see how it makes

22:42.235 --> 22:44.000
the ends just a little bit more fuzzy.

22:44.460 --> 22:45.204
I want this effect to

22:45.216 --> 22:46.116
be quite subtle though.

22:46.140 --> 22:47.565
So let's put this to a

22:47.577 --> 22:49.340
low value like 5 degrees.

22:49.660 --> 22:51.157
And also let's make sure to move

22:51.169 --> 22:52.960
the surface to form back to the end.

22:52.961 --> 22:54.614
Some of these effects we don't

22:54.626 --> 22:56.680
really need to see in the viewport.

22:56.880 --> 22:58.464
Because they're only really important

22:58.476 --> 23:00.240
for the render resolution of the density.

23:00.420 --> 23:01.135
So we can just turn

23:01.147 --> 23:02.180
them off of the viewport.

23:02.480 --> 23:03.473
And have a little bit of a

23:03.485 --> 23:04.800
benefit in terms of performance.

23:05.840 --> 23:07.100
If we just go through here.

23:07.500 --> 23:09.785
We can see which ones are really important

23:09.797 --> 23:11.720
and change the shape significantly.

23:12.200 --> 23:13.907
So far for this setup we've only

23:13.919 --> 23:15.960
been focusing on the modifier stack.

23:16.420 --> 23:17.140
And we've already

23:17.152 --> 23:18.400
gotten quite a nice result.

23:18.401 --> 23:20.543
But to really embrace the true

23:20.555 --> 23:23.140
power of this new hair node setup.

23:23.240 --> 23:24.544
We can actually move

23:24.556 --> 23:26.200
this to geometry nodes.

23:26.520 --> 23:27.631
And use all the other

23:27.643 --> 23:29.300
nodes in combination with it.

23:29.480 --> 23:30.351
That doesn't have to be

23:30.363 --> 23:31.400
super complicated though.

23:31.500 --> 23:32.939
Let me show you a little bit how you

23:32.951 --> 23:34.480
can take this setup to the next level.

23:34.860 --> 23:35.929
Without knowing all too much

23:35.941 --> 23:37.100
about geometry nodes at all.

23:37.340 --> 23:38.496
Let's first move to the

23:38.508 --> 23:39.880
geometry nodes workspace.

23:40.560 --> 23:41.708
And right now you don't really

23:41.720 --> 23:42.880
need the spreadsheet editor.

23:43.040 --> 23:43.944
So let's instead turn

23:43.956 --> 23:45.220
this into an asset browser.

23:45.221 --> 23:48.380
And here you can see in the node editor.

23:48.580 --> 23:49.955
How all of these modifiers

23:49.967 --> 23:51.620
that we've been working with.

23:51.840 --> 23:53.386
All have their own node tree

23:53.398 --> 23:55.400
representation in the node editor.

23:55.800 --> 23:57.520
And as I'm going through these.

23:57.780 --> 23:59.308
You might be thinking that these look

23:59.320 --> 24:00.900
a little bit daunting and complicated.

24:01.240 --> 24:02.080
But don't worry.

24:02.160 --> 24:04.280
You don't have to go into these setups.

24:04.480 --> 24:07.140
And understand what is going on at all.

24:07.280 --> 24:09.389
The way to use these in geometry

24:09.401 --> 24:11.720
nodes for your grooming workflow.

24:11.721 --> 24:14.011
Is rather to use these setups as a

24:14.023 --> 24:16.720
single node in a higher level node tree.

24:17.100 --> 24:18.380
Let me show you what that means.

24:18.740 --> 24:20.061
For example, let's go back

24:20.073 --> 24:21.560
to the frizz that we added.

24:22.000 --> 24:23.980
I want to add some variation

24:23.992 --> 24:26.340
and randomization to the input.

24:26.720 --> 24:28.461
So that not every single curve

24:28.473 --> 24:30.460
gets the same strength of frizz.

24:30.700 --> 24:32.480
And the easiest way to do that.

24:32.720 --> 24:34.180
Is to do it in geometry nodes.

24:34.540 --> 24:35.725
But rather than going

24:35.737 --> 24:37.220
inside of the node tree.

24:37.440 --> 24:38.476
That makes up the

24:38.488 --> 24:40.400
logic of this frizz modifier.

24:40.401 --> 24:42.865
I just want to make a simple geometry node

24:42.877 --> 24:45.180
setup to plug it into the factory here.

24:45.181 --> 24:47.240
And the easiest way to do that.

24:47.440 --> 24:48.848
Is to use an operator

24:48.860 --> 24:50.820
that is new in blender 3.5.

24:51.060 --> 24:52.900
Which you can find in this menu.

24:53.140 --> 24:54.780
And it is called move to nodes.

24:55.120 --> 24:57.140
So when I click and execute that operator.

24:57.740 --> 25:00.200
It creates an entirely new node tree.

25:01.000 --> 25:03.336
Which is just the node version of the

25:03.348 --> 25:05.820
frizz modifier that we had just before.

25:06.320 --> 25:07.604
So effectively nothing

25:07.616 --> 25:09.500
changed during this operation.

25:09.501 --> 25:11.420
It still looks the exact same.

25:11.820 --> 25:13.512
Because all the values that we put

25:13.524 --> 25:15.520
in here are still preserved in the node.

25:16.080 --> 25:17.471
But now we are able to

25:17.483 --> 25:19.780
incorporate this into a node tree.

25:20.380 --> 25:22.305
So now I can just mute this node

25:22.317 --> 25:24.980
individually to turn off and on the frizz.

25:25.160 --> 25:26.763
And more importantly I

25:26.775 --> 25:28.683
can drive all the inputs

25:28.684 --> 25:31.440
of this node individually with node setups.

25:32.020 --> 25:33.600
For the factor for example now.

25:33.840 --> 25:35.720
I can use a random value node.

25:37.200 --> 25:40.193
And right now this gives me a random value

25:40.205 --> 25:43.000
for every single point of these curves.

25:43.600 --> 25:45.077
What I want instead is a

25:45.089 --> 25:46.640
random value per curve.

25:47.120 --> 25:49.823
To get that I can simply change

25:49.835 --> 25:52.900
the ID input to use the curve ID.

25:53.940 --> 25:54.885
This node here the

25:54.897 --> 25:56.386
curve info is also part of

25:56.387 --> 25:57.917
the essentials library

25:57.929 --> 25:59.541
in the read category.

25:59.820 --> 26:00.983
I just press control H to

26:00.995 --> 26:02.500
hide the inputs we don't need.

26:02.760 --> 26:03.540
And there we go.

26:03.541 --> 26:04.860
Now we have a different

26:04.872 --> 26:06.840
random strength for every curve.

26:07.380 --> 26:08.603
Now let's change a little bit

26:08.615 --> 26:10.020
the range of this random value.

26:10.700 --> 26:13.245
Rather than just using these two parameters

26:13.257 --> 26:15.581
I want to instead use a map range node.

26:17.040 --> 26:18.322
That gives me more settings as

26:18.334 --> 26:20.060
now I can change the mapping entirely.

26:20.140 --> 26:22.760
Let's put the from min value to 0.8.

26:22.960 --> 26:24.912
And that essentially means that 80% of

26:24.924 --> 26:27.040
the curves will end up with a value of 0.

26:27.100 --> 26:28.188
So only a few of them

26:28.200 --> 26:29.720
actually receive the frizz.

26:29.820 --> 26:31.062
Let's turn the distance up a

26:31.074 --> 26:32.820
little bit to see more of the effect.

26:32.821 --> 26:35.268
And now if I mute this connection

26:35.280 --> 26:38.100
you can see the difference this makes.

26:38.380 --> 26:39.860
It really tones down the effect.

26:40.200 --> 26:41.694
If you are more comfortable

26:41.706 --> 26:43.044
with that you can also

26:43.045 --> 26:44.451
use a color ramp instead

26:44.463 --> 26:45.881
of the map range node.

26:45.920 --> 26:47.173
That way it's a little bit easier

26:47.185 --> 26:48.116
to see what's happening.

26:48.140 --> 26:49.720
The equivalent of what I just

26:49.732 --> 26:51.324
did with the map range node

26:51.325 --> 26:53.214
is essentially putting this

26:53.226 --> 26:55.480
slider to the position of 0.8.

26:56.280 --> 26:58.678
You can also get a preview of what this

26:58.690 --> 27:01.100
is doing by holding down shift control,

27:01.101 --> 27:02.332
clicking on the group input

27:02.344 --> 27:03.540
and then the color ramp.

27:04.500 --> 27:05.349
And then you can see

27:05.361 --> 27:06.480
the effect of this mask.

27:07.220 --> 27:08.013
And how it looks like

27:08.025 --> 27:09.060
when I change the inputs.

27:09.720 --> 27:11.410
So now that we know how to properly

27:11.422 --> 27:13.360
add more flexible control to the inputs,

27:13.640 --> 27:14.588
let's keep doing that to

27:14.600 --> 27:15.920
some of the other ones as well.

27:16.120 --> 27:17.547
For example, one of the most

27:17.559 --> 27:19.460
important modifiers here, the curl.

27:20.020 --> 27:21.398
Again, this setup looks

27:21.410 --> 27:23.345
quite complicated, but instead

27:23.346 --> 27:24.692
we're just going to focus on

27:24.704 --> 27:26.160
using this as a single node.

27:26.440 --> 27:28.420
So let's move this to another node tree.

27:28.421 --> 27:29.913
And then there it is, the node

27:29.925 --> 27:32.080
representation of the modifier we've been

27:32.081 --> 27:33.944
working with, where we can change all

27:33.956 --> 27:35.880
the inputs based on a node system now.

27:36.260 --> 27:37.778
First off, let's do a similar thing

27:37.790 --> 27:39.320
to what we just did with the frizz,

27:39.680 --> 27:42.957
which is adding a random value input to

27:42.969 --> 27:46.340
the factor and base that on the curve ID

27:46.341 --> 27:48.381
to make sure that we get a different

27:48.393 --> 27:50.500
value per curve instead of per point.

27:51.920 --> 27:53.985
And then let's add a ramp again, which

27:53.997 --> 27:56.341
I'm going to adjust to something like this.

27:57.160 --> 27:58.384
And you can see how that

27:58.396 --> 27:59.736
adds some more variation

27:59.737 --> 28:01.080
to the setup compared

28:01.092 --> 28:02.641
to what it was before.

28:02.980 --> 28:05.241
Another thing that I want to do is add some

28:05.253 --> 28:07.320
variation to the frequency of the curl.

28:07.760 --> 28:09.125
Quick reminder, this is what it

28:09.137 --> 28:10.780
looks like when I change the value.

28:11.240 --> 28:14.084
But what I want to do here is to actually

28:14.096 --> 28:16.680
change the frequency along the curve,

28:16.920 --> 28:18.800
so that at the base it's

28:18.812 --> 28:20.704
a lot smoother and the

28:20.705 --> 28:21.998
curl cranks up its

28:22.010 --> 28:24.040
frequency towards the tip.

28:24.041 --> 28:26.279
To do that, let's just add

28:26.291 --> 28:28.800
in a spline parameter node.

28:29.640 --> 28:32.080
So let's take a look at this factor input.

28:32.500 --> 28:34.192
That gives us a nice factor that

28:34.204 --> 28:36.120
goes from 0 to 1 along the spline.

28:36.420 --> 28:38.528
And then when I connect this to a map

28:38.540 --> 28:40.940
range node and plug it into the frequency,

28:41.460 --> 28:43.038
you can see how now we

28:43.050 --> 28:45.001
can control the frequency

28:45.002 --> 28:47.580
independently at the root and at the tip.

28:47.780 --> 28:49.583
So if I put both to 2, that's

28:49.595 --> 28:51.660
essentially what we had before.

28:51.661 --> 28:54.099
But if I lower it for the root, gives

28:54.111 --> 28:56.560
us a softer falloff at the beginning.

28:56.880 --> 28:58.744
And if I then increase it at the tip, that

28:58.745 --> 28:59.975
gives me exactly the

28:59.987 --> 29:01.601
result that I wanted to.

29:01.760 --> 29:02.810
This effect adds some

29:02.822 --> 29:04.440
overall interest to the shape.

29:04.780 --> 29:07.048
And it's also a little bit more realistic,

29:07.060 --> 29:09.340
as due to gravity, there's a lot more pull

29:09.341 --> 29:10.703
at the roots of the hair

29:10.715 --> 29:12.260
than there is at the tip.

29:12.760 --> 29:13.975
Let's again look at the

29:13.987 --> 29:15.800
comparison by muting this input.

29:16.820 --> 29:18.333
It's relatively subtle, but

29:18.345 --> 29:20.040
I think it adds quite a bit.

29:20.041 --> 29:21.389
Now, let's add another

29:21.401 --> 29:23.440
layer of detail on top of this.

29:23.720 --> 29:24.959
I want to add some

29:24.971 --> 29:27.126
stray hairs that individually

29:27.127 --> 29:28.339
go off of the path that

29:28.351 --> 29:29.841
the other ones are taking.

29:30.000 --> 29:31.620
For that, let's just add a noise.

29:32.240 --> 29:34.388
And this one right now is affecting

29:34.400 --> 29:36.260
all the hair at the same time.

29:36.540 --> 29:38.070
But we're immediately going to

29:38.082 --> 29:39.880
move this into its own node tree.

29:40.340 --> 29:42.327
And there, to the factor, we're

29:42.339 --> 29:44.660
going to add a random value again.

29:45.800 --> 29:48.440
Same as before, we connect the curve ID.

29:48.441 --> 29:51.066
But here, I want this to either

29:51.078 --> 29:53.800
affect a curve, or not at all.

29:54.040 --> 29:55.680
So I don't need the float map,

29:55.692 --> 29:57.620
which goes from 0 to 1 gradually.

29:58.220 --> 30:00.214
But instead, I can just take a

30:00.226 --> 30:02.500
boolean, which is either 0 or 1.

30:03.040 --> 30:03.930
And now we can

30:03.942 --> 30:06.068
specifically control the amount

30:06.069 --> 30:08.620
of curves that are affected by this noise.

30:08.960 --> 30:11.538
If I put this to something like 0.1,

30:11.550 --> 30:14.420
we get this effect of individual runaway

30:14.421 --> 30:16.680
curves of hair that are just floating away.

30:16.681 --> 30:17.905
I want this to be a little

30:17.917 --> 30:19.106
bit more random, so I'm

30:19.107 --> 30:20.067
going to increase the

30:20.079 --> 30:21.421
scale of the noise texture.

30:21.840 --> 30:22.722
And right now it's a

30:22.734 --> 30:23.897
little bit too strong of

30:23.898 --> 30:26.162
an effect, so let's change

30:26.174 --> 30:28.100
the distance to 5mm.

30:29.000 --> 30:30.760
So that looks quite decent right now.

30:31.640 --> 30:33.375
For the stray hairs, let's

30:33.387 --> 30:35.066
also increase the scale

30:35.067 --> 30:36.320
along each curve to make

30:36.332 --> 30:37.861
it a little bit more fuzzy.

30:38.240 --> 30:39.639
And then make sure to move

30:39.651 --> 30:41.280
it up in the modifier stack.

30:41.780 --> 30:44.240
And now it's time for some final details.

30:44.241 --> 30:46.993
Because these clumps are still a little bit

30:46.994 --> 30:48.314
uniform, I want to add

30:48.326 --> 30:49.901
another clumping on top.

30:50.060 --> 30:53.347
So I go to the clump modifier that we have

30:53.348 --> 30:54.811
here and again move it

30:54.823 --> 30:56.500
into another node tree.

30:56.920 --> 30:58.312
And then in here we can just

30:58.324 --> 31:00.080
go ahead and duplicate this node.

31:00.680 --> 31:02.514
And then there I'll increase the guide

31:02.526 --> 31:04.420
distance a little bit to something like

31:04.421 --> 31:06.565
4mm and put the mask

31:06.577 --> 31:09.380
to something like 0 .25.

31:09.381 --> 31:10.517
And now we have an

31:10.529 --> 31:12.507
additional layer of clumping,

31:12.508 --> 31:15.280
which gives us a little bit more variation.

31:15.520 --> 31:17.944
Let's tweak the shape, so the really strong

31:17.945 --> 31:19.070
clumping is going to

31:19.082 --> 31:20.560
be the smaller one here.

31:20.620 --> 31:21.558
And then we have a little

31:21.570 --> 31:22.557
bit more subtle clumping

31:22.558 --> 31:24.981
that goes more towards the tip before that.

31:25.760 --> 31:27.787
For this, let's also add

31:27.799 --> 31:29.754
a clump offset, which

31:29.755 --> 31:31.037
for each clump will

31:31.049 --> 31:33.160
offset the tips a little bit.

31:33.500 --> 31:35.016
This is probably a little bit too strong.

31:35.040 --> 31:37.860
Let's go for something like 5mm.

31:38.680 --> 31:40.821
And then let's add a little bit more detail

31:40.822 --> 31:42.158
in the very end, right

31:42.170 --> 31:43.641
after the stray hairs.

31:43.680 --> 31:45.160
And I want to add another frizz.

31:45.320 --> 31:46.502
I can just take that here

31:46.514 --> 31:47.661
from the asset browser

31:47.662 --> 31:48.858
and straight up drag

31:48.870 --> 31:50.441
it into the node editor.

31:51.280 --> 31:52.869
And for this, I'm going

31:52.881 --> 31:54.483
to again use a random

31:54.495 --> 31:55.845
input for each curve

31:55.857 --> 31:57.220
with the curve ID.

31:57.760 --> 31:58.927
Let's take another color ramp

31:58.939 --> 32:00.240
to get more control over this.

32:00.520 --> 32:02.240
Let's do something around this.

32:02.860 --> 32:04.338
And here again, I don't want

32:04.350 --> 32:06.160
to affect the tips all too much.

32:06.161 --> 32:07.238
So instead I'm going to

32:07.250 --> 32:08.480
choose a negative shape.

32:08.820 --> 32:10.164
Let's go for something

32:10.176 --> 32:11.840
like 0.2 in the negative.

32:12.360 --> 32:12.991
Right now that's still

32:13.003 --> 32:13.733
a little too strong, so

32:13.734 --> 32:14.983
let's tone that down to

32:14.995 --> 32:16.640
something like 2mm distance.

32:17.100 --> 32:18.626
And that just gives us some

32:18.638 --> 32:20.860
overall nice variation and fuzziness.

32:21.300 --> 32:23.185
To make sure that the tips of the clumps

32:23.197 --> 32:25.140
are not getting too fuzzy, let's turn off

32:25.141 --> 32:27.124
the cumulative offset for this frizz

32:27.136 --> 32:29.400
node here, so that the tips are not being

32:29.401 --> 32:31.111
affected too much, but each point

32:31.123 --> 32:33.200
just individually jittered a little bit.

32:33.201 --> 32:35.745
Now we have a little bit of a dip in the

32:35.757 --> 32:38.501
pattern that we get from the overall noise.

32:38.620 --> 32:39.607
So let's just hide all

32:39.619 --> 32:40.799
the other modifiers that

32:40.800 --> 32:41.660
you have to take a

32:41.672 --> 32:42.980
closer look at the noise.

32:43.400 --> 32:44.459
To just go for something

32:44.471 --> 32:45.720
that's a little bit nicer.

32:47.080 --> 32:48.080
Maybe like this.

32:48.400 --> 32:49.820
And this is looking pretty good.

32:50.660 --> 32:52.373
Now this is already the entire

32:52.385 --> 32:54.340
setup that I wanted to show you.

32:54.540 --> 32:56.105
But this setup already includes

32:56.117 --> 32:57.643
a whole bunch of parameters,

32:57.644 --> 32:58.700
and you don't necessarily

32:58.712 --> 33:00.080
get them right the first time.

33:00.081 --> 33:02.438
So to be able to tweak everything, it's

33:02.450 --> 33:04.700
much easier when you can actually see

33:04.701 --> 33:05.756
the entire resolution

33:05.768 --> 33:07.140
while you're tweaking it.

33:07.340 --> 33:08.921
So one thing we can do is

33:08.933 --> 33:10.973
to go to the surface, and then

33:10.974 --> 33:12.233
there add something like,

33:12.245 --> 33:13.820
for example, a mask modifier.

33:14.400 --> 33:17.338
And then there we can just select a patch

33:17.350 --> 33:20.300
of faces in the center, where we create a

33:20.301 --> 33:22.441
new vertex group that we

33:22.453 --> 33:25.054
call mask, and assign these

33:25.055 --> 33:27.362
vertices to, which then we

33:27.374 --> 33:30.140
can use in the mask modifier.

33:30.860 --> 33:33.575
So now we just have a small amount of

33:33.587 --> 33:36.600
hair, where if we go to the full density,

33:37.120 --> 33:38.620
we have much less of a hard

33:38.632 --> 33:40.200
time with the performance.

33:41.220 --> 33:43.393
So now it's a lot easier to tweak the

33:43.405 --> 33:45.820
settings, having a better preview of what

33:45.821 --> 33:46.691
it's going to look like

33:46.703 --> 33:47.661
in the full resolution.

33:48.160 --> 33:50.120
But overall, I'm already quite happy.

33:50.360 --> 33:52.037
Just need to make sure that the mask

33:52.049 --> 33:53.920
modifier doesn't apply to the rendering.

33:54.400 --> 33:55.475
And then let's give this a

33:55.487 --> 33:56.700
render how it is right now.

33:57.000 --> 33:57.840
And there we have it.

33:58.020 --> 33:59.334
This is the final result of what

33:59.346 --> 34:00.920
we've accomplished in this tutorial.

34:01.720 --> 34:02.709
Now, you can definitely, if

34:02.721 --> 34:03.834
you want to, spend more time

34:03.835 --> 34:05.209
tweaking this in detail, especially

34:05.221 --> 34:06.261
when looking at reference.

34:06.860 --> 34:08.562
But this is the essential setup that

34:08.574 --> 34:10.380
I've been using for this example file.

34:10.880 --> 34:12.695
And there, though, I've been doing most

34:12.707 --> 34:14.580
of these operations entirely in the node

34:14.581 --> 34:15.860
tree, which makes it a little

34:15.872 --> 34:17.340
bit easier to have an overview.

34:17.880 --> 34:19.418
But organizing these node

34:19.430 --> 34:21.413
setups in individual modifiers

34:21.414 --> 34:22.390
is also definitely an

34:22.402 --> 34:23.860
option that has its benefits.

34:24.280 --> 34:26.362
Okay, I hope that gave you a good first

34:26.374 --> 34:28.520
impression of how to use these new nodes

34:28.521 --> 34:29.836
in your grooming workflow,

34:29.848 --> 34:31.123
even without needing to

34:31.124 --> 34:32.318
know necessarily all that

34:32.330 --> 34:33.680
much about geometry nodes.

34:34.260 --> 34:36.361
That said, if you do feel like you could

34:36.373 --> 34:38.280
use a boost in your understanding of

34:38.281 --> 34:40.104
geometry nodes, I made a course on

34:40.116 --> 34:42.160
the Blender Studio platform explaining

34:42.161 --> 34:44.313
everything you need to know to get started

34:44.325 --> 34:46.540
with geometry nodes on a fundamental level.

34:47.100 --> 34:48.815
I made it almost one year ago now,

34:48.827 --> 34:50.900
but all the information still holds true,

34:51.080 --> 34:52.760
and I do think it's worth checking out.

34:53.140 --> 34:54.010
But anyways, thanks

34:54.022 --> 34:55.368
for sticking around for the

34:55.369 --> 34:56.432
video, and I hope you

34:56.444 --> 34:58.081
have a great rest of your day.
