GeoTree: Procedural Trees in Geometry Nodes

Welcome, tree enthusiasts. This is an attempt to continue a long discussion that was taking over the geometry nodes topic: procedural trees with geometry nodes.

image

:arrow_down_small:—Latest Version—:arrow_down_small:

GeoTree_0.71.blend (394.8 KB)by @Charles_Weaver, (post)

:notebook_with_decorative_cover:—Manual— :notebook_with_decorative_cover:

https://1drv.ms/u/s!AiaM6CyVvt2BmKdBfWsbhmAyLaoncw?e=7axujR

:test_tube:—Experiments—:test_tube:

TrunkSplitting_1.0_Pre_Alpha.blend (197.3 KB) (post) [@DNorman] [ Trunk and root splitting test. ]

26 Likes

This is a good thread, worthy of a pin to the top of the forum.

For reference, a couple of good tree tutorials I’ve read up on. The first is relatively straightforward, and can be used with Eevee or Cycles with only a minimum of tweaking. The second is the genesis of this thread. Getting it to work in Blender has been something of a work in progress.

Stylized Nature: Vegetation, Animation, Shaders (80.lv)

Oh, and Ghibli trees! The only reason I don’t use this one more often is because it’s packs on the polygons. It’s great for rendering out stylized tree images to use off in the distance though.

8 Likes

I really liked what you were doing over there and played around with your setup a bit. Heres where I got to:

  • Instancing triangles instead of quads (better for parametric mapping)
  • Modified the geometry nodes tree so that the instances do not rotate on the y axis
  • Radomizing normals in the shader -
    1. Low frequency randomization using the true normals as a substitute for “Random per Island”
    2. High frequency randomization using noise
  • Added bump for the illusion of “thickness”
  • Colour variation using 3D noise

NewTree.blend (3.1 MB)

PS- I am using your old texture

11 Likes

That looks great! In my opinion, the only problem is that the discoloration is too extreme, and the discoloration is in patches. But this could be easily tweaked by changing the size of the noise and the strength of the mix.

I think the bump adds a lot to it, and using tris makes so much more sense for parametric vector.

1 Like

That’s nice! I don’t have much time to play around with it at the moment, but once I’m able to, there are a few things I want to try to see if I can make it look even better

Okay, tell me what you think of this. I took your base, tweaked some stuff to taste, added some bits and pieces for flavor, and, most importantly, I shrunk and skewed the underlying leaf alpha to account for the parametric deformation.

This is what I got:

NewTree2_Redeaux.blend (3.1 MB)

edit: Now with moar fall colorz.

2 Likes

It looks great! I did like @Xeofrios’s discoloring though, I would just make it more subtle.

Yeah, it was good. I deleted it just so I could get a cleaner view of the alphas. I’ll add it back in, and reupload the file.

I tried to implement per object discoloration using the true normal, but the problem is that the normal changes based on the viewing angle

Heres what what it looks like with per object discoloration:

NewTree_color.blend (3.1 MB)

8 Likes

I was using the mapping node to correct the deformation, not quite necessary to change the image itself. Your lower alpha does look good!

1 Like

I’ve played around with it for a good bit, and there’s really only so much you can only do so much with it to fix the distortion. The projection will always skew the alpha to the right, which can give you very spiky trees if you don’t have a generic enough texture.

The only way you can fix it is by using the mapping node to make things as straight as possible, then skewing the alpha itself in the opposite direction to compensate for what you can’t fix.

1 Like

Alright. I’ve had some time to goof around with this today, so I decided to try and make these trees match the style of my previous scene. Make it look a little less painterly, a little more comic bookish.

So I threw a solidify modifier on my trunk, and made a new colored texture with an outline surrounding it. On top of that, I threw a point distribute node in at the front of my geo node tree to randomize things a little more.

Also, there’s a bush now.

11 Likes

That looks great! Love the style.

1 Like

i don’t really understand the current possibilities of geometry nodes yet… but trees are also one of the first things i want to try with geometry nodes once i find some time.

so your tree trunk & branches aren’t procedural yet, right? only the sprites with the foliage texture come from geometry nodes?

will it be possible to do L-systems in the future? :slight_smile:

I believe he said they are procedural. Geometry nodes is a lot more powerful than it looks at first sight.

yes, i guess so. but i saw a geometry node introduction by andrew price on youtube and the attribute chaining confused me a lot. :slight_smile:

If you are having trouble understanding attributes, I would recommend Erindale( @Gemn ) Woodford. Here is one of his early geometry nodes tutorials that explains attributes:


I think, once we get curve support, trees will be so much easier. But it is still possible to do some pretty crazy things with geometry nodes the way it is now.

3 Likes

Right. The tree trunk and, er, leaf distribution manifold are regular geometry. Geo nodes handle the scattering, scaling, and orientation of the individual leaf cards.

1 Like

wow, thanks! now it’s lot clearer. the imaginary spreadsheet moving from geometry socket to geometry socket helped a lot. erindale is a very good explainer. :slight_smile:

1 Like

Okay, this is neat. Drop in a transparency node, combine it with the rest of your texture through a Mix Shader, and slap your alpha on the factor. This way, you can use the alpha slider on the principled node to further tweak your transparencies.

It doesn’t match the rest of my style in the scene, but it does look pretty cool.

22 Likes