Open source Blender, used by millions of people, is of importance that cannot be ignored with its 3D modeling, animation and many other functions. In this article, I will show what "Geometry Nodes", the newest tool offered by Blender, is and what it does by creating a grass scene using an algorithmic (procedural method). Algorithmic method, also called procedural content generation, is the method of creating data using algorithms, as opposed to creating data manually.
Geometry Nodes are used to create objects or scenes that can be easily modified automatically using blocks. Since it works algorithmically, the order of the steps can be changed, and subsequent changes will not prevent you from accessing the previous steps, as in standard modeling. In a way, it commands the computer to change objects, that is, the user does not make changes to the object directly. This is especially useful for operations that are too laborious to place one by one (filling a forest scene entirely with trees) or where mathematical functions will be required (jellyfish undulating in a sine wave).
Let's look at how to create a simple grass scene in Geometry Nodes, which has a wide variety of complex application areas. We open the Geometry Nodes tab on the right side of the screen and create a Geometry Node for the cube in front of us. We will create the soil required for our grass scene by deleting the cube block and using the “Grid” block.


The plane we created.
In order to change the size of the scene as we wish, we assign a value that we can change to the "Size" sections. We multiply it by a constant number so that the detail density of the soil grows depending on this value.


Even though the size is increased with the Multiply Block, the quality of each object does not decrease.
To make our land look more realistic, we want its height to change randomly. Therefore, we will raise the points of our plane by different amounts by converting the black and white map we will produce using “Noise Texture” to height. By assigning the random values (0,0,0) we created with Noise Texture to the z-axis of the vector and inserting them into the "Offset" space of the "Set Position" block, we give the positions of the randomly generated vectors to each point. The elevation map can be changed at any time as desired. When we increase the scene size, Noise Texture will continue to produce our non-repetitive height maps and these heights will be assigned to the plane with “Set Position”. (This is a very simple method) After playing with the Noise Texture settings, we can move on to making grass.

We start creating the grass by distributing random points on our soil with the “Distribute Points on Faces” block. We can connect the points we created to the “Instances on Points” block and assign geometry to the points. For this scene, I use the free “Plant Library” created by bd3d. The plants I chose from here are grubI add a and insert the “Collection Info” block into the “Instances” space. I attach the soil and the “Instances on Points” block to the “Join Geometry” block so that the soil and grass can be seen at the same time.


Finally, I add color to the soil with “Set Material” and use the “Random Value” block to rotate each grass and flower at random angles on the z axis and randomly size them.
We now have a grass block that does not repeat and whose values such as density and size can be changed. This is a method that can save a lot of time, especially in the production of large scenes.
