Day 18 - Trees (Geometry Nodes Part Deux)

Day 18 - Trees (Geometry Nodes Part Deux)

The exercise for today ended up being figuring out what I needed to do to generate a procedural forest, part manual work, part procedural.

In this case, it was basically the following steps:


  1.  Manually set up a rough plane that represents the terrain we want to distribute trees/clutter over (for this time, just trees).
  2.  Add some mild randomness in height values to the existing (somewhat boring looking) terrain plane.
  3.  Make sure faces with more than a specific slope get a different material (dirt, rather than just the default grass, accomplished here with  the material index). 


  1.  Procedurally generate a tree object (it's just three cones and a log really)?
  2. Added some randomness to the vertices of said cones and log to make it look a little less boring :)

Trees + Terrain

  1. Distribute the points to use for placing trees somewhat evenly over the terrain (also snap them to the faces of the terrain), excluding the bits below a certain z value (crude measure for "this is river, don't put trees there", accomplished here by pushing the trees in the Y direction out of the river.. because we can't filter geometry in Geometry Nodes right now).
  2. Instance the trees given the points generated distributed over the plane geometry (post randomization, or we'll have trees inside the terrain).

And .. there we go, it's cruder than I'd like but it's also clear that Geometry Nodes are pretty crude right now, feeling a lot more like writing shaders/setting up materials than  what I'd ultimately want from a tool like this (Sverchok is more powerful, but *way* more obtuse from a user perspective.. UX wise this stuff is better, but it's just missing a lot!)

Things that I'd like to fix that are not ideal right now:

  • Things really easily end up clipping, and there's no super easy way to fix this, in Sverchok you can actually deal with this, but in Geometry Nodes it's more a game of roll the dice (you can tweak distances in distributions generated at least, so it's not all bad, but not ideal) but mostly you'll probably end up messing with the seed until you get something you think looks acceptable.
  • No non-obtuse way to repeat actions/loop/etc.
  • No reasonable way to filter data.

Things I like:

  • It feels  like it has a cohesive design behind it, Sverchok by comparison is a bit of a hodge-podge, to be fair, a very functional and powerful hodge-podge, but with Geometry Nodes you get the feeling someone (or likely a lot of people) sat down and thought about it.
  • Presumably, more functionality in general coming, from what I can tell of developer discussions (2.93 is still in preview after all)

Leave a comment

Log in with to leave a comment.