Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:00,830 --> 00:00:04,390
Another thing that always looks cool is having
some cracked bricks!
2
00:00:04,390 --> 00:00:08,450
For that, a good starting point is a Voronoi
Texture.
3
00:00:08,450 --> 00:00:12,990
Specifically, we want to use the distance
to edge mode.
4
00:00:12,990 --> 00:00:16,610
This works similarly to the distance field
that we set up in Chapter 2.
5
00:00:16,610 --> 00:00:20,520
But here, instead of giving the distance to
the boundaries of a rectangle, it gives the
6
00:00:20,520 --> 00:00:23,370
distance to the boundaries of a randomized
Voronoi tile.
7
00:00:23,370 --> 00:00:28,330
Note that the texture is a bit stretched,
and that's because by default it's using Generated
8
00:00:28,330 --> 00:00:31,900
coordinates, which map to the object's bounding
box.
9
00:00:31,900 --> 00:00:36,230
But it doesn't matter, we want to use the
offset brick coordinates, so that each brick
10
00:00:36,230 --> 00:00:40,930
has a unique disconnected cracking pattern.
11
00:00:40,930 --> 00:00:45,310
Now we can see that some tiles look really
dark, and that's because we're using a 3D
12
00:00:45,310 --> 00:00:50,010
Voronoi, which means that the tiles are actually
volumes in space, and sometimes a tile can
13
00:00:50,010 --> 00:00:53,180
have a boundary that is very close to our
plane.
14
00:00:53,180 --> 00:00:56,430
So let's switch to 2D.
15
00:00:56,430 --> 00:01:02,960
Then we can add a Map Range, and reduce the
max input, until we see lines of the desired
16
00:01:02,960 --> 00:01:07,070
width for our cracks.
17
00:01:07,070 --> 00:01:11,010
Since we want to displace the cracks inwards
and keep the rest of the brick surface at
18
00:01:11,010 --> 00:01:15,640
the same level, we'll want to invert the output
range, so that the surface is zero, and the
19
00:01:15,640 --> 00:01:19,850
cracks are at a higher value, so that when
we subtract it from the displacement, only
20
00:01:19,850 --> 00:01:21,700
the cracks get moved.
21
00:01:21,700 --> 00:01:28,270
This pattern seems a bit too dense, so let's
make the Voronoi tiles a bit bigger.
22
00:01:28,270 --> 00:01:32,409
Now we can use our handy Distort2D node, to
distort this texture, and make the cracks
23
00:01:32,409 --> 00:01:34,950
look more natural.
24
00:01:34,950 --> 00:01:40,960
Let's make the distortion a bit finer, more
detailed, and more rough.
25
00:01:40,960 --> 00:01:44,890
Then we can also increase the intensity a
bit.
26
00:01:44,890 --> 00:01:51,070
Now, we don't want every brick to be cracked,
so we'll need a random value to randomly select
27
00:01:51,070 --> 00:01:53,520
bricks to be cracked.
28
00:01:53,520 --> 00:01:58,049
Currently, from the Random output of the Bricks
group, we are using the X channel here for
29
00:01:58,049 --> 00:01:59,049
the rotation.
30
00:01:59,049 --> 00:02:03,230
The Z channel isn't used directly here, as
we are just using it as a seed to generate
31
00:02:03,230 --> 00:02:05,480
different random values over here.
32
00:02:05,480 --> 00:02:09,770
But all the way at the color setup, we are
actually using the Y and Z channels of the
33
00:02:09,770 --> 00:02:11,620
random brick output directly.
34
00:02:11,620 --> 00:02:15,640
It seems like it's time to generate another
set of random values, as we've run out of
35
00:02:15,640 --> 00:02:17,090
channels again.
36
00:02:17,090 --> 00:02:19,810
So let's add a White Noise, and set it to
1D.
37
00:02:19,810 --> 00:02:26,380
Then let's connect it to one of the original
random channels.
38
00:02:26,380 --> 00:02:29,980
Keep in mind that we don't want to use the
Z channel, as that's already used by another
39
00:02:29,980 --> 00:02:33,220
White Noise node, and we don't want to generate
the same values again.
40
00:02:33,220 --> 00:02:36,520
But the Y channel, for example, will work
fine.
41
00:02:36,520 --> 00:02:40,840
Then let's make a nice connection here, with
a couple of Reroutes.
42
00:02:40,840 --> 00:02:44,810
And now we have some new random channels.
43
00:02:44,810 --> 00:02:48,420
This is a good moment to rework part of our
setup.
44
00:02:48,420 --> 00:02:52,810
The thing is that back in Chapter 9, when
we randomized the brick colors, we added another
45
00:02:52,810 --> 00:02:57,380
Separate XYZ node, connected to the same random
output of the Bricks group, in addition to
46
00:02:57,380 --> 00:03:00,360
the Separate XYZ in the beginning of the tree.
47
00:03:00,360 --> 00:03:05,040
This is pretty bad practice, and becomes very
difficult to maintain as the tree grows.
48
00:03:05,040 --> 00:03:09,180
The issue is that with the two Separate XYZ
nodes, it becomes very difficult to follow
49
00:03:09,180 --> 00:03:13,590
which channels are in use, as we need to check
multiple nodes at completely different parts
50
00:03:13,590 --> 00:03:15,070
of the tree.
51
00:03:15,070 --> 00:03:19,910
So a good rule is to only separate the channels
once for each Noise node, and have the Separate
52
00:03:19,910 --> 00:03:24,360
node right next to the Noise, that way we
can immediately see which channels are in
53
00:03:24,360 --> 00:03:25,360
use.
54
00:03:25,360 --> 00:03:29,760
Since we are adding a new White Noise now
anyway, this gives us the opportunity to rectify
55
00:03:29,760 --> 00:03:31,110
the situation.
56
00:03:31,110 --> 00:03:34,170
So let's bring this Noise node over to the
color setup.
57
00:03:34,170 --> 00:03:38,450
And now we can plug its output into the Separate
XYZ instead of the Random output from the
58
00:03:38,450 --> 00:03:39,690
Bricks group.
59
00:03:39,690 --> 00:03:42,480
And let's make the path neat.
60
00:03:42,480 --> 00:03:49,540
Then, just for consistency, let's replace
this Separate XYZ with a Separate RGB, using
61
00:03:49,540 --> 00:03:52,800
Shift+S, as the White Noise outputs a color.
62
00:03:52,800 --> 00:03:58,330
Though this is not really necessary, as Separate
XYZ and Separate RGB do exactly the same thing,
63
00:03:58,330 --> 00:04:01,520
since colors and vectors are almost always
interchangeable.
64
00:04:01,520 --> 00:04:06,570
Then let's delete this floating Reroute, as
we no longer need to carry this link all the
65
00:04:06,570 --> 00:04:08,620
way to the other side of the tree.
66
00:04:08,620 --> 00:04:12,470
And now we can see all the used channels in
a single place here right next to the source
67
00:04:12,470 --> 00:04:14,050
of the random vector.
68
00:04:14,050 --> 00:04:19,120
Now, if we follow this link from the Y channel,
making it neater along the way, we see that
69
00:04:19,120 --> 00:04:23,379
it is only connected to the White Noise input,
meaning that we are only using it as a seed
70
00:04:23,379 --> 00:04:27,910
for new random values, but are not using it
directly anywhere, So it's free to use for
71
00:04:27,910 --> 00:04:31,809
the cracks setup, which is convenient, as
the connection is already passing right next
72
00:04:31,809 --> 00:04:33,120
to where we need.
73
00:04:33,120 --> 00:04:37,289
So let's add a Reroute here, so that we can
intercept this random value.
74
00:04:37,289 --> 00:04:44,599
And now, with a Math node set to Less Than,
we can create a binary mask of random bricks,
75
00:04:44,599 --> 00:04:48,110
where the threshold represents the ratio of
bricks that will be selected.
76
00:04:48,110 --> 00:04:52,430
We covered this technique for selecting a
random subset of bricks in more detail in
77
00:04:52,430 --> 00:04:55,939
Chapter 5.
78
00:04:55,939 --> 00:05:00,069
Now we can just multiply our crack mask, by
the random brick mask, and only the amount
79
00:05:00,069 --> 00:05:08,319
of bricks defined by the threshold will have
cracks.
80
00:05:08,319 --> 00:05:12,300
So far, every time we added some displacement
component to the bricks, we've combined it
81
00:05:12,300 --> 00:05:17,069
here, before merging with the mortar, so let's
try that again, and see what happens.
82
00:05:17,069 --> 00:05:21,210
So duplicating one of these nodes, setting
it to subtract, since we want the cracks to
83
00:05:21,210 --> 00:05:26,330
go deeper, and connecting it to our crack
texture, as well as to the rest of the setup,
84
00:05:26,330 --> 00:05:29,840
let's see what this does to our texture.
85
00:05:29,840 --> 00:05:34,539
So let's switch to Cycles, and look at the
shader output.
86
00:05:34,539 --> 00:05:41,320
Well, it seems to work, as we are seeing some
cracks, but let's take a closer look.
87
00:05:41,320 --> 00:05:46,180
We can start seeing that there is a bit of
mortar inside some of the cracks, this is
88
00:05:46,180 --> 00:05:49,240
especially evident in Eevee.
89
00:05:49,240 --> 00:05:56,569
And if we increase the depth of the cracks
in the Map Range, which we probably want to
90
00:05:56,569 --> 00:06:00,139
do anyway, we see that they get completely
filled with mortar.
91
00:06:00,139 --> 00:06:05,000
Actually, that makes sense, since we are computing
the cracks before combining the mortar, and
92
00:06:05,000 --> 00:06:08,749
any part of the bricks that is deeper than
the mortar, gets filled with mortar when we
93
00:06:08,749 --> 00:06:10,199
combine them.
94
00:06:10,199 --> 00:06:14,080
But we don't really want this, as the bricks
would have cracked after being in the wall,
95
00:06:14,080 --> 00:06:17,389
so it wouldn't make sense for the cracks to
be filled with mortar.
96
00:06:17,389 --> 00:06:19,009
So let's fix this.
97
00:06:19,009 --> 00:06:22,659
The most straight forward thing to do at this
point, is to just move the subtraction to
98
00:06:22,659 --> 00:06:26,009
the height map after we combine the bricks
and mortar.
99
00:06:26,009 --> 00:06:30,439
So let's insert it after the Maximum node,
and reconnect the cracks.
100
00:06:30,439 --> 00:06:36,930
Now the cracks are no longer filled with mortar,
but we have a new issue.
101
00:06:36,930 --> 00:06:40,439
The cracks are extending beyond the edge of
the bricks and appearing in the mortar as
102
00:06:40,439 --> 00:06:41,439
well.
103
00:06:41,439 --> 00:06:45,379
This is because we are calculating the cracks
within each tile, and the tiles extend beyond
104
00:06:45,379 --> 00:06:50,819
the bricks, while the mortar is used to conveniently
cover up the seam between the tiles.
105
00:06:50,819 --> 00:06:54,819
But now this seam can be seen where the cracks
sharply end in the middle of the mortar.
106
00:06:54,819 --> 00:06:57,909
Luckily, this has an easy fix as well.
107
00:06:57,909 --> 00:07:02,060
Just above the height map, we have this Greater
Than node, which computes a mask of the bricks,
108
00:07:02,060 --> 00:07:04,939
using the exact boundary where they meet the
mortar.
109
00:07:04,939 --> 00:07:07,969
So this is perfect for us to mask the cracks.
110
00:07:07,969 --> 00:07:11,719
Let's simply multiply the cracks texture by
this mask, which erases the parts outside
111
00:07:11,719 --> 00:07:14,659
the bricks.
112
00:07:14,659 --> 00:07:22,929
And if we look at the output now, we're getting
exactly the effect we wanted.
113
00:07:22,929 --> 00:07:27,479
And we can also check it out in Cycles, where
the cracks look extra good, especially if
114
00:07:27,479 --> 00:07:32,069
we bump the subdivisions up to seven.
115
00:07:32,069 --> 00:07:37,919
Let's lower the subdivisions again, and switch
back to Eevee.
116
00:07:37,919 --> 00:07:48,830
This is a good moment to frame the nodes,
and organize them a bit.
117
00:07:48,830 --> 00:07:56,729
Then we can name the Frame Cracks, and give
it a distinctive color.
118
00:07:56,729 --> 00:08:08,990
We can actually make the tree a bit more compact,
moving this Frame and reorganizing the routes.
119
00:08:08,990 --> 00:08:23,300
These nodes are adding the cracks onto the
displacement texture, so let's frame them
120
00:08:23,300 --> 00:08:26,360
as well, and call it Crack Displacement.
121
00:08:26,360 --> 00:08:30,429
Then we can copy the color over from the other
Frame.
122
00:08:30,429 --> 00:08:34,390
And finally, do this last bit of untangling
the connections.
12645
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.