Hillside, scattering with geonodes

After a long break from Blender, I wanted to try out the new geometry nodes for working with heightmap-based landscapes.

I created the heightmap and datamaps in Gaea. These were used in the shader editor as I’ve done previously. They also control the scattering of trees and grass (along with Blender’s noise texture nodes) from within geometry nodes. All the planes that I used for scattering have only 4 vertices, which is a large departure from the previous particle-based workflow where I would use planes with at least a million vertices.

Clouds were a rush job, and there are clearly artifacts that need ironed out. They are also scattered with geonodes.

Trees from Botaniq, grass from Graswald.


This is a 1 hour test render. Plenty of work left to do, but I think the main purpose of exploring populating a landscape with geonodes was fairly successful.

Latest thumbnail:

8 Likes

What do you think the advantages are of using nodes instead of particle systems?

Hi Mark,

For this project I was simply trying to learn how to produce similar results to what I had done previously with addons using particles (Scatter, Graswald, Botaniq, etc). This type of scattering can be done with particles without addons, but I think it would be a pain. So one advantage of geonodes is simplicity when compared to particles without the help of addons.

In both cases I’ve had to drastically reduce the number of instances displayed in the viewport. Rendering millions of instances is no problem (Cycles) with particles or geonodes. But the performance of the UI goes downhill very quickly if you attempt to display too many in the viewport. This happens in any context, but perhaps it is a little more dangerous in geonodes as it is pretty easy to accidentally request far too many instances than the viewport can handle. Save your file very, very often when playing with any nodes that contribute to density calculations.

Not exercised here, but a major advantage of geonodes when it comes to scattering is the ability to have multiple ‘levels’ of scatter. For instance, I’ve tried to scatter moss on rocks and then scatter those rocks around a scene. With particles that was a PITA. Another example would be trees which use particles for twigs/leaves; if the trees are then instanced with particles, the leaves fall off. Geonodes should handle these cases with ease.

With particles, it is essential that the object you’re scattering on (usually a plane in these types of scenes) is subdivided enough that the displacement isn’t too far removed from the final results of the microdisplacement of the adaptive subdivision on the terrain. Otherwise you’ll end up with floating instances. Similarly, the vertex resolution needs to be fine enough that you can affect the scatter density to your liking.
A main point of this exercise was to see if this could be avoided with geonodes. It can, and I suspect it offers the possibility of higher precision placement if required.

Those thoughts are what comes to mind regarding simple scattering. Geometry nodes offers way more, of course. See @Gemn 's work to see what is possible.

Thanks for that comprehensive reply. Definitely some good info there.

I haven’t tried geometry nodes yet. I suspect the interface/workflow will change a bit since it is new. (I hate having to relearn things.)

3.X with fields is a significant change. When you decide to start exploring, skip 2.9X and head straight into 3.X. My impression is that effort towards geometry nodes from the official developers is winding down, with the expectation that the community developers will continue to add nodes and make improvements. Assuming that is true, I thought now was a reasonable time to start learning it.

1 Like

I featured you on BlenderNation, have a great weekend!

1 Like

Testing out some new clouds made without fluid simulation. Not finished with them, but making progress. I also added more density control to the vegetation scattering nodes, and adjusted the shader on the base terrain.
Fog got out of hand. I had upped the volume Max Bounces in the Light Paths panel after doing some tests in a separate file. But I didn’t account for that by decreasing the fog density as I should have. So this test render was really noisy, and the denoiser chewed up a lot of detail.

I’m not really happy with the way most of the trees I’m using are catching the light. I did some tests to see if geonodes could easily scatter trees created in Grove, and it did, and they looked nice. But the pre-render setup took 45 minutes! Maybe I’ll use them anyway, but that’s an awful long time to wait for the first render sample of each test render…

1 Like

I changed out all the trees. The approach I took was to model the trees in Grove. After modeling the trees, I used geo nodes to scatter very simple twigs, selecting with the vertex groups from Grove. This alone is still not enough to reduce pre-render setup time. So next I realized the leaf instances, and converted to mesh. The leaves retain their material, distinct from the bark of the trunk and branches. This made a huge difference, and now setup takes ~2min for all the vegetation. The shader on the leaves is super-simple, a mix of PBSDF and translucent, with color variation. Would be completely inappropriate for close-ups, but for distant trees, I think these are an improvement.

Here’s the raw terrain, after some shader tweaks:

There are two separate grass layers :

And three tree layers. Each one has five distinct trees :

Here’s all the vegetation combined :

Now on to the sky…

Had a go at making cumulus clouds in geo nodes. On the shading front, they are very different to work with compared to noise-based or mantaflow created clouds. I still have some work to do there. The geo nodes setup allows for a lot of customization options; I’ve liked many of the shapes that have come out… I’ll try to find a more interesting one for this render.

Turned the fog back on, and adjusted the lighting (of which the clouds play a large role). Probably too much fill light in this test render, but I like the soft feel it gives. Will continue to play with it.

Added cirrus clouds with a cube and volume texture. Added a second cumulus cloud, same geo nodes with a different seed. First stab at compositing it with the 3.5 hour test render. Water is still super noisy where it reflects the clouds, denoiser is only so helpful.


I usually try to bring some clouds overhead to tie them into the scene. Decided to keep them as background this time.
Anything you think I should change/fix before I do an overnight render?