WEBVTT

1
00:00:00.010 --> 00:00:04.320
So before we dive into explaining the data structure and more abstract concepts that

2
00:00:04.320 --> 00:00:09.920
geometry nodes depend on, I want to start out by showing you the very basics that you need to know

3
00:00:09.920 --> 00:00:16.240
to get started using geometry nodes right away. That means mostly just navigating the UI and

4
00:00:16.240 --> 00:00:21.440
learning the very fundamentals that geometry nodes are based on. To get most of the functionality

5
00:00:21.440 --> 00:00:27.280
that you need into one view, it's best to use the geometry nodes workspace. The workspace is equipped

6
00:00:27.280 --> 00:00:32.960
with a 3D viewport, a spreadsheet editor, an outliner and properties panel, and then most

7
00:00:32.960 --> 00:00:39.600
importantly the geometry node editor. To add a geometry node system on an object, you will first

8
00:00:39.600 --> 00:00:45.200
need to add a geometry nodes modifier. You can add it just like any other modifier from the list in

9
00:00:45.200 --> 00:00:51.200
the modifier tab, or you can click the new button in the node editor, which will automatically create

10
00:00:51.200 --> 00:00:58.400
a modifier for you. That modifier itself is then just a container for a node tree. You can customize

11
00:00:58.400 --> 00:01:04.400
however you want using the node editor. With the data block picker, you can pick between different

12
00:01:04.400 --> 00:01:09.920
node trees that are available in your blend file. That way you can reuse the same geometry nodes

13
00:01:09.920 --> 00:01:16.400
modifier on several different objects. You can also stack multiple geometry nodes modifiers

14
00:01:16.400 --> 00:01:22.080
just the same way as you can stack any other modifier. A modifier just takes the geometry

15
00:01:22.080 --> 00:01:28.080
from the previous one as an input, modifies it somehow, and then passes it along to the next one

16
00:01:28.080 --> 00:01:34.160
as an output. That works the exact same way with geometry nodes as with any other modifier. Just

17
00:01:34.160 --> 00:01:39.440
now you are in precise control of what that modifier actually does exactly. The geometry

18
00:01:39.440 --> 00:01:44.880
nodes modifier is also where you will be able to see the different custom parameters that you can

19
00:01:44.880 --> 00:01:51.200
control the modifier with, just as you can any built-in modifier. And each instance where you

20
00:01:51.200 --> 00:01:58.480
use the node tree in a modifier has its own set of input parameters. The node tree that belongs to

21
00:01:58.480 --> 00:02:05.280
the currently active modifier will be displayed in the geometry node editor. Here you can control

22
00:02:05.280 --> 00:02:10.720
all of the operations that the geometry nodes modifier does on the geometry. Make sure that

23
00:02:10.720 --> 00:02:16.480
when you have multiple modifiers in the stack the right one is selected before you can edit the node tree.

24
00:02:17.680 --> 00:02:23.440
When you create a new node tree it comes with only two nodes that are connected to each other,

25
00:02:23.440 --> 00:02:30.000
the group input node and the group output node. The group input passes in the geometry of your

26
00:02:30.000 --> 00:02:37.120
object coming from the previous modifier and the output passes it back out to the next one. So by

27
00:02:37.200 --> 00:02:43.440
default a new node tree does simply nothing with the geometry, it just passes it along in the

28
00:02:43.440 --> 00:02:49.760
modifier stack. And so if I just cut this connection you can see that the cube disappears

29
00:02:49.760 --> 00:02:56.240
as now no geometry is passed to the outside anymore. But of course the cube still exists

30
00:02:56.240 --> 00:03:02.960
as everything a modifier does is non-destructive. We can just bring it back by simply reconnecting

31
00:03:02.960 --> 00:03:09.360
the input geometry to the group output. Now inside of the node tree you can pass around

32
00:03:09.360 --> 00:03:15.680
the geometry of an object between the different nodes. And this is also how you can make custom

33
00:03:15.680 --> 00:03:22.400
modifications of the geometry using nodes. As a simple example let's just add a transform node

34
00:03:22.400 --> 00:03:29.360
with the shift a menu to move the cube by a vector. Now the cool thing here is that both the group

35
00:03:29.360 --> 00:03:35.680
input node and the transform node output their own geometry that we can use again in the node tree.

36
00:03:35.680 --> 00:03:41.520
So instead of just connecting one of them to the group output I can also join the transformed cube

37
00:03:41.520 --> 00:03:49.280
and the untransformed one together and see them side by side in one geometry. In other words the

38
00:03:49.280 --> 00:03:56.000
transform node does not actually alter the geometry from the group input, instead it creates

39
00:03:56.000 --> 00:04:02.960
its own copy of the data and provides the result of the transformation as its own output. And these

40
00:04:02.960 --> 00:04:09.040
two geometries can be used separately. You can still access both the transformed and the

41
00:04:09.040 --> 00:04:14.960
untransformed geometry and use it however you want inside of the node tree. This already shows one

42
00:04:14.960 --> 00:04:21.360
of the main strengths of the geometry node system over the modifier stack. You can easily branch off

43
00:04:21.360 --> 00:04:27.520
the geometry and have different operations in parallel rather than operating in a single stack.

44
00:04:28.160 --> 00:04:34.160
The same of course is also true for any other node that has a geometry in an output, for example the

45
00:04:34.160 --> 00:04:41.040
join node. It also creates its own new geometry output that we can use just as well as any other

46
00:04:41.040 --> 00:04:47.040
geometry output in the node tree. You can see what data each geometry output contains by hovering

47
00:04:47.040 --> 00:04:53.600
over the socket. So here you see that the result of the join operation results in exactly double

48
00:04:53.600 --> 00:04:59.920
of the data from a single cube. I have shown before that you can use multiple geometry nodes modifiers

49
00:04:59.920 --> 00:05:06.720
in the stack. So let's just duplicate this one a couple of times. This way the result of the

50
00:05:06.720 --> 00:05:13.760
previous one is piped through the same operation again and again. And because all of these modifiers

51
00:05:13.760 --> 00:05:18.880
share the same node tree that they are using, they are all controlled with the same nodes.

52
00:05:18.880 --> 00:05:24.240
So as I make changes to the parameters of this transform node you can see how the changes

53
00:05:24.240 --> 00:05:29.600
propagate to every time that the cube is being duplicated and it affects all of them at the same

54
00:05:29.600 --> 00:05:36.800
time. But actually we are not only creating a single new cube with every step, each time we are

55
00:05:36.800 --> 00:05:43.040
creating a full copy of the input. So there are a couple of extra cubes that are hiding in plain

56
00:05:43.040 --> 00:05:48.880
sight. If I add another transform node into the mix that reveals all of the additional copies of

57
00:05:48.880 --> 00:05:56.080
cubes that we have been creating. The number of cubes actually doubles with every modifier and

58
00:05:56.080 --> 00:06:01.600
so the number rises exponentially. That gives us this cool fractal effect that we can control with

59
00:06:01.600 --> 00:06:07.600
just these two transform nodes. And there you go. That's already your first abstract art piece created

60
00:06:07.680 --> 00:06:13.600
with geometry nodes. And the input geometry can of course still be exchanged for anything else but

61
00:06:13.600 --> 00:06:20.880
the cube. We can for example also get a Suzanne in there. One interesting thing about the node trees

62
00:06:20.880 --> 00:06:26.560
that you reference in the geometry nodes modifier is that they are also regular node groups.

63
00:06:27.440 --> 00:06:33.840
That means that they can be nested as single nodes in other node trees. This way you can make

64
00:06:33.840 --> 00:06:40.000
full use of a procedural system and combine different custom geometry node operations

65
00:06:40.000 --> 00:06:47.040
in one bigger geometry nodes modifier. That also means that sharing geometry nodes modifiers

66
00:06:47.040 --> 00:06:51.520
works the same way as sharing node groups between different blend files and people.

67
00:06:52.320 --> 00:06:57.440
You can simply link or append the node tree from another file and reference it in your

68
00:06:57.440 --> 00:07:03.760
geometry nodes modifier. To benefit from this you can give your node group custom inputs and outputs

69
00:07:03.840 --> 00:07:09.760
that are exposed to the outside. These node group inputs are also what is shown in the modifier

70
00:07:09.760 --> 00:07:16.640
interface in the properties panel. This is very powerful as these parameters can be set differently

71
00:07:16.640 --> 00:07:23.280
each time that the node tree is used in another modifier or another node. These in and outputs

72
00:07:23.280 --> 00:07:28.160
work the same way as you would expect from the other node systems in Blender. You can adjust

73
00:07:28.160 --> 00:07:35.040
their settings in the group tab of the node editor properties. So any geometry nodes node group

74
00:07:35.040 --> 00:07:41.840
can be referenced in the geometry nodes modifier and all of its in and outputs are exposed directly

75
00:07:41.840 --> 00:07:48.160
in the user interface. That makes the modifiers quite customizable and looks very similar to the

76
00:07:48.160 --> 00:07:53.760
built-in ones. And that way you can make your own custom modifiers that you can share between

77
00:07:53.760 --> 00:07:58.960
projects and with others. I recommend you to play around a bit with the node groups that I'm

78
00:07:58.960 --> 00:08:04.400
providing in the files section and the nodes that I've been showing in this video. That's the thing

79
00:08:04.400 --> 00:08:10.400
with geometry nodes. Even with a relatively limited understanding of how exactly they work

80
00:08:10.400 --> 00:08:16.320
it can be a lot of fun and very powerful to build something with them.

