Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:00,640 --> 00:00:04,800
Let's randomize our wall even more, by
adding slight random rotations to the bricks.
2
00:00:05,440 --> 00:00:09,440
Let's create some space just before we
offset the coordinates for the distortion,
3
00:00:09,440 --> 00:00:13,040
and Shift right click and drag to add a
Reroute, so that we can work on this link.
4
00:00:13,600 --> 00:00:17,920
To rotate our bricks, we'll use
the aptly named Vector Rotate node.
5
00:00:17,920 --> 00:00:22,480
This allows us to rotate the coordinates
around any axis of the input coordinate system,
6
00:00:22,480 --> 00:00:27,360
and centered around any given point. As we
are doing this after fractioning the bricks,
7
00:00:27,360 --> 00:00:32,240
each brick effectively has their own coordinate
system, so they will rotate independently, and
8
00:00:32,240 --> 00:00:38,000
as we centered the coordinates by subtracting 0.5,
they have a (0,0) point in the middle, so we can
9
00:00:38,000 --> 00:00:42,960
keep the center vector as zero, and the rotation
pivot will be in the middle of each brick.
10
00:00:42,960 --> 00:00:48,000
With the Axis Angle rotation type, there is an
Axis vector input around which the rotation will
11
00:00:48,000 --> 00:00:53,520
happen. By default it is set to a vector pointing
straight up along the Z axis, as indicated by the
12
00:00:53,520 --> 00:00:58,640
single 1 value in the Z channel of the Axis
input. This might not seem like what we want,
13
00:00:58,640 --> 00:01:03,360
as our rotation axis should be perpendicular
to our wall, like the normal direction.
14
00:01:03,360 --> 00:01:07,440
But it is important to keep in mind which
coordinate system we are working in,
15
00:01:07,440 --> 00:01:10,080
and in this case, we are
working with Object coordinates.
16
00:01:10,640 --> 00:01:15,680
While we did transform our coordinates in various
ways, by fractioning and scaling them, we didn't
17
00:01:15,680 --> 00:01:20,640
perform any operation that rotates them, so they
are still aligned with the Object coordinates. And
18
00:01:20,640 --> 00:01:25,360
as it happens, the Object coordinates are aligned
with the object transformation. So in this case,
19
00:01:25,360 --> 00:01:29,840
it doesn't matter along which world axis we
want to rotate, but rather which object axis.
20
00:01:30,400 --> 00:01:34,640
As we rotated our plane, the coordinates
no longer match the world axes,
21
00:01:34,640 --> 00:01:37,680
and to easily visualize around
which axis we want to rotate,
22
00:01:37,680 --> 00:01:42,320
we can enable the axis viewport display in
the object properties. And we can see that
23
00:01:42,320 --> 00:01:47,680
the default already happens to be correct here,
as we do indeed want to rotate around the Z axis.
24
00:01:48,480 --> 00:01:53,440
And to confirm, we can change the angle and
see that our bricks are rotating as expected.
25
00:01:53,440 --> 00:01:56,720
We can also see that the bricks get
clipped at the tiling boundaries,
26
00:01:56,720 --> 00:02:01,360
as the coordinates are rotated within each
individual tile. This means that we can only
27
00:02:01,360 --> 00:02:06,320
rotate within the space allotted for the mortar.
This is a slight limitation, but we don't need
28
00:02:06,320 --> 00:02:10,800
such an extreme rotation, so in this case,
we can just work within these boundaries.
29
00:02:10,800 --> 00:02:14,560
As we are rotating around a vector
that is perfectly aligned to an axis,
30
00:02:14,560 --> 00:02:18,880
we can actually just set that axis in the
rotation type, to make it more explicit.
31
00:02:18,880 --> 00:02:20,960
And we can see that it still works the same way.
32
00:02:21,520 --> 00:02:24,480
We don't need the axis display
anymore, so let's turn it off.
33
00:02:25,040 --> 00:02:28,080
Now we want to actually randomize
the rotation for each brick,
34
00:02:28,080 --> 00:02:32,560
so let's take a look at the Random
output. We just need a single value
35
00:02:32,560 --> 00:02:36,400
to randomize the angle, so we can
place a Separate XYZ node in here.
36
00:02:40,080 --> 00:02:43,760
If we look at the final output, and
plug the random value into the angle,
37
00:02:43,760 --> 00:02:48,960
we can see that it's being rotated way too much.
This is interesting, because the random value has
38
00:02:48,960 --> 00:02:53,840
a range from zero to one, but if we input one
into the angle field, it only rotates slightly.
39
00:02:54,400 --> 00:02:58,800
The value has such a different effect when input
into the field or connected to another node,
40
00:02:58,800 --> 00:03:02,880
because internally the values are being
processed in radians, while in the UI they
41
00:03:02,880 --> 00:03:07,600
are being displayed in degrees, unless you have
specifically configured it to display radians.
42
00:03:07,600 --> 00:03:12,080
So actually, the values being stored are in
radians, they are converted from degrees when
43
00:03:12,080 --> 00:03:17,200
you input them into a field, and just converted
back for display. But Blender only does this for
44
00:03:17,200 --> 00:03:22,000
fields that are explicitly used for angles, as
it wouldn't make sense to convert generic numeric
45
00:03:22,000 --> 00:03:27,040
fields. So always keep in mind that when values
passing through the tree are used as angles,
46
00:03:27,040 --> 00:03:31,840
they are interpreted as radians. And
remember that a full circle is 2pi radians.
47
00:03:32,640 --> 00:03:37,040
Now, to limit the maximum rotation, we
can simply multiply this random value.
48
00:03:39,360 --> 00:03:43,280
But we also see that it is only rotating
clockwise, because all the values are
49
00:03:43,280 --> 00:03:49,120
positive values between zero and one. So let's
as usual subtract 0.5 to center them around zero.
50
00:03:55,440 --> 00:03:58,240
Now to find the actual
maximum rotation we can use,
51
00:03:58,240 --> 00:04:02,080
it's easier to just plug a Value node
in there, instead of the random values,
52
00:04:02,080 --> 00:04:05,600
so that we can see just one maximum
rotation applied to all the bricks.
53
00:04:06,160 --> 00:04:10,560
Let's also turn off the distortion for now,
by pressing M to mute the vector addition.
54
00:04:10,560 --> 00:04:13,760
This will just make it easier
for us to see what's going on.
55
00:04:13,760 --> 00:04:17,520
Now we can lower the value until the bricks
just clear the boundary of the tiles.
56
00:04:25,120 --> 00:04:28,000
There we go, that's our maximum rotation.
57
00:04:28,000 --> 00:04:32,560
We can now input the value we found into the
multiplication, and plug it back into the angle.
58
00:04:33,360 --> 00:04:37,600
But we are not actually making use of the
full range of rotation. As we subtracted
59
00:04:37,600 --> 00:04:43,440
0.5 from the random value, the maximum we
can get is no longer one, but rather 0.5,
60
00:04:43,440 --> 00:04:47,600
and the same in the negative direction.
So we actually need to double the value
61
00:04:47,600 --> 00:04:51,040
in the multiplication, and then
our bricks are nicely rotated.
62
00:04:51,040 --> 00:04:55,200
Now we can also notice that the rotation
is much less visible in the header bricks,
63
00:04:55,200 --> 00:04:59,200
as their shorter width allows for less
change in height over the width of a brick,
64
00:04:59,200 --> 00:05:02,960
thus reducing the visual contrast
between the differently rotated bricks.
65
00:05:02,960 --> 00:05:07,280
But this also means that we can rotate them
more before they hit the boundary of the tiling.
66
00:05:07,280 --> 00:05:11,520
So let's find their maximum rotation, by
plugging the Value node into the angle again.
67
00:05:16,240 --> 00:05:20,160
Then we can see that we can rotate them
about three times as much as the stretchers.
68
00:05:20,720 --> 00:05:25,360
Now we just need a way to use these different
rotation amounts for the different brick rows.
69
00:05:25,360 --> 00:05:28,000
We have all the information we
need to differentiate the rows,
70
00:05:28,000 --> 00:05:32,320
in the Size output of the Bricks group.
There the X component tells us the width
71
00:05:32,320 --> 00:05:35,840
of the bricks, so we can use that to
set the different rotation amounts.
72
00:05:36,400 --> 00:05:42,000
Let's add a Separate XYZ, so that we can isolate
the X component. Now here we have the inverse
73
00:05:42,000 --> 00:05:46,240
of the scaling factor, which also happens to
be the actual width of the resulting bricks.
74
00:05:46,800 --> 00:05:50,240
We had set our stretchers as
reference, giving them a width of one,
75
00:05:50,240 --> 00:05:54,720
and the headers were set to half
size, giving them a value of 0.5. Now,
76
00:05:54,720 --> 00:05:59,600
we can use a Map Range node, to map these known
values to the rotation factors we found before.
77
00:06:00,240 --> 00:06:06,560
Let's set the inputs to the known widths of the
bricks, 0.5 and one. And then we can map those to
78
00:06:06,560 --> 00:06:12,400
the angles we found before. 0.1 for the full
length bricks, and 0.15 for the half bricks.
79
00:06:14,240 --> 00:06:20,160
Then we can connect it to the multiplication
input, and take a look at the result. Let's
80
00:06:20,160 --> 00:06:23,520
also not forget that we should still
double the angle for the half bricks,
81
00:06:23,520 --> 00:06:26,320
like we did with the other ones,
to get the full rotation range.
82
00:06:29,040 --> 00:06:33,040
Perhaps the maximum possible rotation is
actually a bit too much for the headers,
83
00:06:33,040 --> 00:06:39,440
so let's lower it until it looks
good. 0.2 seems to work alright here.
84
00:06:40,880 --> 00:06:51,600
Then we can organize our nodes. Let's also
add some Reroutes with Shift right click,
85
00:06:52,880 --> 00:06:54,560
and align these links to the grid,
86
00:06:54,560 --> 00:06:58,000
eliminating link crossings at shallow
angles, which are hard to read.
87
00:07:01,520 --> 00:07:06,320
Then we can use Ctrl+J to frame these nodes,
and name it, for that extra bit of readability.
88
00:07:13,120 --> 00:07:15,840
Lastly, let's not forget to
re-enable the distortion.
89
00:07:16,720 --> 00:07:22,160
And there we have it, with the distortion and
rotation, our wall looks that much more dynamic.
11158
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.