GROWTH - A Geometry Nodes Project

Here is a new chapter on my battle with growing plants animations, hopefully this one is a bit better than the other ones… and hopefully the next one will be better too!
Anyway, done in Geometry Nodes (plus a bit of scripting) with Blender 3.4. The approach that I followed might be completely different when loop nodes are available, so yeah, can’t wait have more tools to make cooler and more efficient variations!
As always, let me know what do you think :slightly_smiling_face:
Proost!
Artichoke

37 Likes

That’s super cool !

I’d be super interested to know more about the approach you took !
Everything looks very natural and as it should be !

Well done !

1 Like

Thanks! :slight_smile:

Soon I’m going to try to upload a quick breackdown of how I made it.

Basically the most complicated part wasw the “instancing” of the leafs into the stem. This is because I needed to keep controll of the parameters of each leaf individually (so a regular instance to points and then realize instances was not enough). For this I used a bit of Phyton scripting. Hopefully when loop nodes are available this won’t be neccesary. Anyway I’ll send it to you when is ready (if you are still interested)

P.D. maybe there is a way to do it with the simulation nodes of Blender 3.5 but I couldn’t figure out the way.

2 Likes

Awesome !

I’m even more curious to see how python was involved in that !

I’ve made a growing flower so I totally understand the problem, the way I approached it was to instance some base mesh, then cancel their transforms, do some deformation based on time and put the instances back in place.

I doesn’t solve everything, but at least it’s much simpler to do the deformation when every leaves is at the same place.

Indeed when thinking about using the simulation branch it makes things more confusing, but maybe that would allows interesting things like growing according to light and shadows ?

Super interested by the breakdown, feel free to poke when when it’s done !

1 Like

This looks great !

1 Like

Thanks! :slight_smile:

I made this breakdown, not very happy with it but yeah… hopefully some good feedback and ideas will come from it :slight_smile:

11 Likes

YOU ARE CRAZY ARTICHOKE !!!

That’s super cool and an insane amount of work ! Thanks a lot for the breakdown video, it’s awesome ! I really like how you generate the leaves and the way it folds !

Probably to get something more elegant technically it needs more time and more complex problems to solve.
But ironically doing all the workarounds makes the setup complex and probably took some time to make as well.

Anyway the result is beautiful and it’s a great achievement to have everything that looks good and natural. Having both external and inner beauty isn’t always possible. The breakdown is super inspiring and there is a lot to learn from.

When I build setup I make sure it can always apply to a arbitrary number of elements.
That makes things more difficult to pull out, but tools you build with that are much more powerful.
One of the key point of that is “what input are you using ?” , say you want to make a simple house generator, with some parameters to set the width / height…
It’s tempting to use these parameters feed into a MeshCube node and build things from there.
But then you can’t generate 10 houses at once unless you are from the future and use blender with loops, so you can loop ten times and generate 10 MeshCube.

The other way is to have some fields inputs, and something for the positions, like a face so you can extract some orientations too, and then instance some cubes on these and work from there.
But already at this stage the first solution is probably using 2/3 nodes at best, the second it’s already making a complex tree to get just each position and orientation properly based on some face.

Then comes the second take-away : because you generate 10 cubes with different positions and orientations it gets much more difficult to do some operations on them. Say you want to add a garage to the left of each houses and each house is rotated differently, what are the options ?
1/ You can do that in the instance, but then each garage will be the same without any variations.

2/ You can work on the local space of each houses by storing transforms as attribute in the beginning and transferring location/rotation/scale each time you need it.

3/ You can build 10 house + 10 Garages on the origin of the world without any rotation , store an Index for each house, and then using that you retrieve your input data ( like position) and as a last step you put each house at the right place.

4/ The technique I generally use is to instance some base mesh like cubes, and then cancel their transforms, generate or deform some stuff with all my objects aligned to the world, and at the end I put them back in place.

Of course all that is a mindset that takes time to get, and since loops are showing their way it’s questionable if it’s the right time to force yourself into that.

Hopes that helps a bit to sparks some idea, I guess to make something more useful that would mean trying to build something similar with a different approach and detail each step of the process.
Or it you manage to simplify the problem inside a .blend maybe some people would like to try different approach.

Well done ! and thanks a lot for sharing insights !

8 Likes

I think you won the battle.

I featured you on BlenderNation, have a great weekend!

1 Like

Thanks for the answer! :slight_smile: Seems a VERY usefulworkflow and to be honest the way in which you can really use the potencial of geometry nodes (still until know the best poject that I’ve seeen is your abandoned woodhouse).

1 Like

Thanks a lot !
Funnily the house generator is a project where I went over the top with the features. But since it was one of my first project it’s clearly not the most complex technically. I went later in these more advanced techniques of canceling transforms, or also delay transform ( you can look at my book generator for an example of that).
At least it’s possible to make cool stuff by thinking outside the box. That’s what you did also here to get an amazing result.

You’re on the #featured row! :+1:

1 Like