Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:05,360 --> 00:00:08,400
Now that we're adding some bigger
global variation to the wall,
2
00:00:08,400 --> 00:00:11,360
let's also do something along
these lines with the displacement.
3
00:00:12,000 --> 00:00:15,360
In Chapter 18, we offset the
depth of the individual bricks,
4
00:00:15,360 --> 00:00:19,040
but another cool thing we can do
is offset entire rows of bricks.
5
00:00:19,680 --> 00:00:22,640
For this, we're gonna need a
random value per row of bricks.
6
00:00:26,160 --> 00:00:28,080
So to start, let's take the brick index,
7
00:00:29,280 --> 00:00:33,920
and like we saw before, if we plug it into a
White Noise, we get a random value for each brick.
8
00:00:35,520 --> 00:00:40,160
But if we add a Separate XYZ, we see
that the Y value encodes the row index,
9
00:00:40,160 --> 00:00:44,720
and is constant for all bricks within a row.
So that's the perfect input for our Noise.
10
00:00:45,360 --> 00:00:48,000
Let's switch it to 1D and plug in the Y channel.
11
00:00:49,120 --> 00:00:52,880
Now we have a random value for each
row. Let's bring this closer to our
12
00:00:52,880 --> 00:00:58,080
brick displacement. And make
these connections a bit nicer.
13
00:00:58,080 --> 00:01:01,760
Then we can use the value to offset
the rows. So let's add a Math node,
14
00:01:01,760 --> 00:01:05,360
to subtract 0.5, and center the
values around zero as always.
15
00:01:07,600 --> 00:01:11,840
And let's make some space so that we can
add another node into this offset setup.
16
00:01:16,720 --> 00:01:20,080
Let's duplicate one of these additions,
and plug our values in there.
17
00:01:25,600 --> 00:01:28,480
Then let's also add another Math
node, and set it to multiply,
18
00:01:28,480 --> 00:01:30,480
to set the intensity of the displacement.
19
00:01:32,160 --> 00:01:36,720
If we increase this value, we can clearly see
the effect it has on the displacement texture.
20
00:01:36,720 --> 00:01:41,360
So let's take a look at the shader.
The rows did indeed get offset,
21
00:01:41,360 --> 00:01:46,320
but we can immediately see that the rows that got
pushed in, are completely covered by the mortar.
22
00:01:46,320 --> 00:01:49,920
This is not really what we're looking
for. It would be nice to get the mortar
23
00:01:49,920 --> 00:01:53,840
to follow the offset of the rows. Let's
see how we might go about doing that.
24
00:01:55,200 --> 00:01:59,360
We don't want to offset the mortar using
the same texture, as it is discontinuous,
25
00:01:59,360 --> 00:02:04,240
and would cause very jarring steps in the mortar.
We need a smooth continuous texture that gently
26
00:02:04,240 --> 00:02:09,360
follows the contours of the rows. For that we'll
need a texture coordinate that is not stepped like
27
00:02:09,360 --> 00:02:13,920
the index. So let's take the input coordinates
from before we did the brick computations.
28
00:02:17,040 --> 00:02:19,600
Let's add a Reroute to bring
it to a more convenient spot.
29
00:02:21,360 --> 00:02:26,320
And adding a White Noise, we get a noisy gray
surface. This is because for each sample we're
30
00:02:26,320 --> 00:02:30,880
getting a completely random value, which
when averaged out over multiple samples,
31
00:02:30,880 --> 00:02:35,600
converges to a value of 0.5, which is
the average of all the possible values.
32
00:02:35,600 --> 00:02:39,040
This is really not going to help us,
and without having steps in the texture,
33
00:02:39,040 --> 00:02:42,240
there is no way to get usable
values from the White Noise.
34
00:02:42,240 --> 00:02:46,720
So with Shift+s, let's replace it with it's
continuous counterpart, the Noise node.
35
00:02:48,000 --> 00:02:53,040
Again, we'll want to add a Separate XYZ node, to
isolate the channels, and set the Noise to 1D.
36
00:02:55,520 --> 00:02:59,600
Now, connecting the Y channel, we get
the continuous variation we wanted.
37
00:02:59,600 --> 00:03:02,000
This is a bit too small, as
we don't want the texture
38
00:03:02,000 --> 00:03:05,680
to vary much within the height of a
single row, so let's make it bigger.
39
00:03:09,040 --> 00:03:12,720
Now, if we bring this Noise to our setup,
and compare it with the White Noise,
40
00:03:12,720 --> 00:03:16,720
we see that they are completely different,
and don't follow the same pattern at all.
41
00:03:16,720 --> 00:03:20,880
This is to be expected, as they are two
completely different noise algorithms, but
42
00:03:20,880 --> 00:03:25,520
what we are looking for is basically two versions
of the same noise, one continuous, and the other
43
00:03:25,520 --> 00:03:29,760
discrete. So that we have the same pattern
of highs and lows for the bricks and mortar.
44
00:03:30,320 --> 00:03:34,960
For that we'll have to use the same noise
algorithm in both cases. So let's replace
45
00:03:34,960 --> 00:03:40,880
this White Noise by a plain Noise as well.
And then we'll want to set it to 1D as well.
46
00:03:41,520 --> 00:03:46,720
Now we're seeing a single gray color, and even
changing the scale we still get the same thing.
47
00:03:46,720 --> 00:03:51,120
This is because due to the algorithm used to
generate the noise, it will always have the
48
00:03:51,120 --> 00:03:56,480
same value at integer multiples of the scale, and
since the input coordinates only contain integers,
49
00:03:56,480 --> 00:04:01,040
as they were floored, setting any integer
scale will cause us to only get this gray.
50
00:04:02,080 --> 00:04:07,680
So let's set this to another value. And now we see
that the texture is actually there. Let's reduce
51
00:04:07,680 --> 00:04:12,720
the detail, as we don't want small variation, and
that will also give us a wider range to work with.
52
00:04:13,280 --> 00:04:17,280
Now, if we set the same parameters for the
other Noise, and compare the two, we see
53
00:04:17,280 --> 00:04:22,480
that they still don't match up. This means that
beside the coordinates on the top being floored,
54
00:04:22,480 --> 00:04:25,920
there must be another difference between
the texture coordinates we are feeding them.
55
00:04:26,480 --> 00:04:32,240
Let's take a look in the Bricks group to find
out. Here is the Floor that we're using for
56
00:04:32,240 --> 00:04:36,400
the index. And if we follow the links
to see where the vector is coming from,
57
00:04:36,400 --> 00:04:40,720
we see that there are two operations being
applied to the coordinates before we Floor them.
58
00:04:40,720 --> 00:04:44,240
The brick offset is just randomly
offsetting the rows horizontally,
59
00:04:44,240 --> 00:04:48,960
so it doesn't affect the Y channel, but
this multiply is scaling the Y channel.
60
00:04:48,960 --> 00:04:53,840
This explains the difference we were seeing, as
we used the coordinates without this scaling.
61
00:04:53,840 --> 00:04:58,800
So let's expose these coordinates with the scaling
applied, but without the Floor. Let's call this
62
00:04:58,800 --> 00:05:03,840
output something like BaseCoords, as we use it as
the basis for all the other brick computations.
63
00:05:06,800 --> 00:05:10,400
Now, tabbing out, we can plug this
instead of the unscaled coordinates.
64
00:05:13,040 --> 00:05:17,040
Now, if we compare the two, it looks like
they are matching almost perfectly. The
65
00:05:17,040 --> 00:05:21,760
only thing is that the texture seems to move up
slightly when we switch to the discrete version.
66
00:05:23,600 --> 00:05:27,440
If we take a look at the input values
themselves, we see that this behavior is
67
00:05:27,440 --> 00:05:32,800
present there as well. The discrete coordinates
seem to be a bit higher than the continuous ones.
68
00:05:32,800 --> 00:05:38,400
If we zoom in closer, we can analyze why
that is. By definition, the Floor operation
69
00:05:38,400 --> 00:05:42,880
gives the first integer value below any
value. So that means that within a row,
70
00:05:42,880 --> 00:05:47,200
we are getting the lowest value in that row, which
is the value all the way at the bottom of the row.
71
00:05:47,200 --> 00:05:49,520
This explains why the texture seems to move up,
72
00:05:49,520 --> 00:05:53,600
as it effectively extends the lowest
value until the top. But to fix this,
73
00:05:53,600 --> 00:05:59,200
all we need to do is add a Math node, and add
0.5 to the discrete values. That way we are
74
00:05:59,200 --> 00:06:03,200
offsetting them so that they have the value from
the middle of the range instead of the bottom.
75
00:06:03,760 --> 00:06:08,000
Now, if we compare the values, they don't seem
to move anymore, the only difference is the
76
00:06:08,000 --> 00:06:12,800
discontinuity in the floored version. And looking
at the Noise outputs, we see the same thing.
77
00:06:15,600 --> 00:06:20,720
Let's organize the nodes a bit. And let's
duplicate the offset and scaling setup,
78
00:06:20,720 --> 00:06:23,200
so that we have matching outputs from both Noises.
79
00:06:25,760 --> 00:06:30,160
Now we can take this smooth row offset we
calculated, and use it to displace the mortar
80
00:06:30,160 --> 00:06:35,360
over here. As usual, we can just offset the values
by adding the offset to the mortar height map.
81
00:06:40,320 --> 00:06:47,840
Let's shift these nodes a bit, and
create a nice path for this connection.
82
00:06:50,480 --> 00:06:52,800
And then we can plug in the actual row offset.
83
00:06:53,360 --> 00:06:57,440
If we take a look at this output, it's clear
how this is affecting the mortar depth values.
84
00:06:59,360 --> 00:07:02,400
Then, if we switch to Cycles,
and look at the shader output,
85
00:07:02,400 --> 00:07:06,880
the mortar is no longer overlapping a bunch
of the bricks. But if we look from the side,
86
00:07:06,880 --> 00:07:11,280
we see that the rows are still being offset,
and now the mortar follows along nicely.
87
00:07:11,280 --> 00:07:15,520
We can even increase the scaling values a
lot, without getting undesirable behavior
88
00:07:15,520 --> 00:07:22,160
from the mortar. But ten might be a
bit too much, so let's lower it a bit.
89
00:07:26,640 --> 00:07:29,840
And then let's just frame the new
nodes, and call it Brick Row Offset.
90
00:07:31,680 --> 00:07:43,840
Then let's move everything into
place, and tidy up these connections.
11125
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.