GeoTree: Procedural Trees in Geometry Nodes

I’m working on it now, so it only took about 3 seconds to do.

I’ve got the leaves in now, and I’m working on the anime tree node as we speak.

Also, the subtract 0.5 node next to the noise texture should keep the randomization from angling up and to the right. Though I am looking for a better way to get some more noise in. Almost thinking about going back to the previous style.

4 Likes

That way you are just randomizing along the diagonal! Better make it a decomposed vector.

1 Like

My pride makes me want to say “yeah, maybe I should,” while I quickly google up what a decomposed vector is.

But, uh, yeah. Could you explain exactly what that is?

1 Like

Oh sorry, set the random value to vector and put a separatexyz behind

2 Likes

That’s kind of what I’m already doing, isn’t it?

Wait. Hold on. I think I get what you mean.

1 Like

Something like this? I’m still a bit confused on which axes to use here.

edit: probably more like this…

You could now even remove the separate and combine. I made the z axis in the random zero, but I left it in cause I was talking about before.
The normalize will let you treat all angles equally

1 Like

Wow your tree is sooooo cool, it looks incredible and is surprisingly responsive.

At the moment I have been looking at the trunk, I gave the node group some inputs and was thinking “what about trunk splitting?”
Turns out it already can! If you use the original Geo switch and split the original curve in edit mode, so it is very controllable as well. I think you could also do this with nodes by duplicating the trunk trimming the curve and leaning it but it is so easy and controllable to do it in edit mode that I am not sure it would be practical.

I have to look into all this a lot more but my first impression is that it is amazing work and I will definitely use it and tweak a bit.

I have been loosely following the thread for ages and I was sure you would end up with something great but this is beyond my expectations.

Regarding the deformation on one axis I got rid of the random vector bit altogether (sorry sacrilege) and put a couple of multiply nodes to exaggerate the noise values.

4 Likes

Its still somehow doubled. You now randomize along all angles by the vector, but you then shift the noise into a centric range. Thats then also no longer needed. The noise itself is simply the strength.

I think it would be advantageous to control split from the node parameters, it means you can iterate faster without switching modes (although you would lose a bit of precise control)

Changed it to this. It now gives the trees a lot more roughness without being quite so chaotic about it. Thanks! :smiley:

1 Like

Just a little thing, you now also vary along the z axis, this is intentional right?

How are you doing that? I just tried to create an offshoot by extruding a point away from the base curve, and the results weren’t NEARLY as clean as what you’re showing here.

Yes there are pros and cons, I will look into making a separate trunk split node (which would go before the trunk node).

2 Likes

I originally had some Combine XYZ nodes in there to exclude the Z axis, but then I tried including it, and liked the results.

That might be something I keep an eye on, just in case it causes problems later.

2 Likes

In edit mode of the original curve make the handles a little longer and subdivide the segment, move the middle one to where you want the trunk to split and duplicate it, then extrude from the duplication.
It looks like this:

This could be done with nodes.
Looking closely there is one problem with the split, the thickness of the new trunk starts from the maximum thickness I will look into how to avoid this without overlapping at the bottom.

2 Likes

I see what you’re doing now. You’re not forking it, so much as creating an entirely new spline line that has it’s origin nested in the original. Nice.

…but I can’t quite manage to get as clean results as what you got. When I tried it, it seemed to want to apply the base scale to the start of the new branch, giving me this:

Still, you’ve given me lots to tinker with here.

1 Like

Yes I just noticed that and edited my post, I will experiment more.

2 Likes

Well I found one way but it has its draw backs, instead of using the spline factor for radius you can use the Z position. This is ok for a tree that grows “up” but would widen the radius if the trunk curved towards the ground (does not happen much but could)

2 Likes

What if you took the Maximum between the clamped Z position and the clamped spline parameter? That should fix the issue with doubling back

2 Likes