The Grove 2.0
The Grove 2.0
Buckle up for speed, because that’s the number one feature of this release! By rebuilding the simulation from the ground up, the simulation has now become incredibly fast. We’re talking performance leaps anywhere from 5 to 20 times faster than before! I’m sure you’ll get used to the new speed just as quickly, you’ll just be growing older trees, and a lot more of them.
A quick, real-time look at just how fast the simulation has become. The orange-yellow progress is just a quick sketch while the trees are growing – it does not show the many fine branches of the current year – to keep the simulation running super fast.
The natural simulation is now totally independent. Going forward, tree growth is powered by a high-performance Core that I developed in Rust, a language known for its sheer speed and unrivaled stability. The Core is platform independent, compiled for Windows, Linux and macOS (including the new Apple silicon). The Core features rock solid vector math, quaternion rotations and multithreaded raytracing – all written from scratch, with the single purpose of growing trees fast and without compromise.
The Core does all the hard work, from growing your trees to building the finished 3D models including UVs and attributes. The modular Core was built for portability. All that is left for a new target application is high-level functionality and UI. The Core is portable to any app with a Python API, starting today with Houdini! So here we are with the powerful core and two add-ons:
The Grove Core is the compiled Python library which runs the simulation. The cool thing is that you can import the same module in any application with a Python API, or even Python itself.
The Grove in Blender adds a bunch of awesome tools for interactive simulation – grow, prune, draw, react, add wind… with 8 years of polish, and still improving.
The Grove in Houdini plugs into Houdini’s procedural node network to grow and build trees that are ready for Houdini’s dynamics. Available now with the Studio edition.
The Grove in Houdini (beta)
The Grove in Houdini (beta) is a set of nodes that link together in a Geometry network, to plant, grow, prune and build trees in a procedural way. The same Grove, the Houdini way!
You will need SideFX Houdini 19.5, and the add-on comes with the Studio edition only (at least for now).
When you think Houdini, you think special effects and simulation. The Skeleton node will add all of Houdini’s power to The Grove’s trees, they are a perfect match. The skeleton adds just the right attributes for Houdini to work its magic – the thickness and mass attached to each node. It’s limited to one tree at a time for now, but oh my is it fun to play with!
Recording a time-lapse growth animation in Houdini is so easy, simply add a simulate node and a build node, inside a Solver node. Set the simulate node to only grow a single cycle.
The add-on works in the Houdini way, with all the benefits that come with it, but it does not yet have the polished toolset that the Blender add-on has built up over the years – especially the interactive prune, draw, react and bend tools. When you need these tools for a specific tree, you can grow the tree in Blender, export the simulation, and transfer it to Houdini using the import node.
The tree simulation itself is the exact same simulation you’re used to, nothing beta about that!
Although already very capable, I see this first version as a conversation piece, with much work still to be done. Your input is greatly appreciated for the next iterations. Houdini still holds many secrets for me, so let’s work on this together. Twig instancing is an example of an unfinished area that you still have to set up manually. Among the many ways of twig duplication in Houdini, which would you prefer? What else would you like to see? Let me know at firstname.lastname@example.org.
Back to Blender. Even though the simulation is now completely separated, The Grove’s integration with Blender is better than ever.
- Simulations are now saved within the working .blend file (and the .hip file for Houdini). Simulations are portable and move with the file.
- Blender’s undo now finally works like it should have all along.
- The collection in Blender is the grove. A copy of a grove collection now also copies the simulation.
- Import and export simulations in .grove files using the new File operator. A good way to stash trees for later use, or to transfer trees between Houdini and Blender.
The physical bending of an ever expanding organism — which branches out into thousands of directions and with varying thicknesses that even change through time — has been a real challenge! Bending plays a key role in forming the great variety of tree shapes around us. In the quest of figuring out how real trees grow, any improvement I made to bending was therefore also a key improvement to every tree you grow. And as it turns out, it also makes tweaking tree shapes so much easier! You’ll definitely notice the following improvements when you start growing.
Center of gravity
The new bending uses the center of gravity that changes along the length of the branch, to correctly increase the force of gravity on spreading branches that grow to the sides. Trees slanting to one side will feel the weight of gravity much more than before. Dangling branches will bend further, greatly improving the aesthetic of every type of tree, from conifers to weeping willows.
As the tree grows, and gravity continues to bend the tree down, each new ring of growth encapsulates the deformed branches and solidifies part of the tension inside. The new bending now uses the second moment of area of the old wood, and that of the new ring of growth, to calculate just how much of the old tension is to be solidified within the new growth. The strength of solidify now changes with the growth rate of each branch, again improving the physical bending for even more natural results.
With these improvements to bending, the solidify and fatigue sliders are no longer needed, farewell complexity!
Apart from animals nibbling on lower branches, some trees also have a habit of dropping branches that are no longer worthwhile. Mostly seen on pine trees, but also trees like aspen and gum trees. Lower branches lose much of their foliage in the shade, while the branch keeps on growing longer. With little foliage to support more and more wood, there comes a time when the water flow collapses and the branch dies. This mostly happens in dry periods in summer, when water stress is already mounting.
Stake keeps your trees growing straight up, just like in a nursery. The trunk is supported up until the height of the stake, after which it’s free to grow and bend in a more natural way.
Auto prune has been clearing many thousands of branches from the base of your trees. It has saved us all a lot of manual pruning work. And it now works even better after the tree grows well beyond the auto prune height. Branches just above the prune height will continue to grow to the sides, and bend down with the increased weight. These dangling branches can be left to grow like in a weeping willow, or you can trim them back to a set height with the new parameter Dangling.
You can also think of this as the browsing height that animals like deer and giraffes can reach.
The force of both Attract and Deflect now have a smooth fall-off, instead of the previous harsh cut-off radius. React now also samples all around – instead of simply finding the closest point on the geometry, it now averages all forces in a combined growth vector, much like how phototropism works (turn to light). This gives more natural results, especially when using complex geometry.
Like before, The Grove’s default UV map works with a seamless bark texture, which it repeats along and around the branch. To make this work, it heavily distorts the UV coordinates, it overlaps, and it extends well beyond the UV space limits. This UV map is flexible and easy to use, and for thinner branches this is all you’d ever want.
But this map is absolutely useless when you want to paint details on the trunk and main branches. That’s where the new UV islands come into play. Islands are undistorted, so that the area in UV space is relative to the face’s real area. Islands are cut up into roughly 1.5 meter pieces, a length that packs more efficiently than longer pieces.
UV islands are a the starting point to create the perfect UV layout. It’s up to you to pack and arrange them. To save precious UV space, you’ll probably only want to include the thickest branch parts in the map. Use the new Select Thicker tool in edit mode to select just the thicker parts of the tree.
The 4 attributes for twig duplication and the dead attribute are now stored in the face domain, using the efficient boolean data type. This saves several megabytes of data for each tree model.
The attributes branch_index and branch_index_parent moved from the vertex to the face domain, again saving a couple of megabytes on a typical 40 year old Ash tree — it adds up.
There is a new attribute layer called ends. It is a boolean attribute in the face domain, which is true for (cut) branch ends, and you can use it to add a different material to cut branch ends.
The Grove for Houdini builds the entire grove of trees as one piece of geometry. Select individual trees with the new Tree Index attribute.
The translations needed an update to keep pace with the latest features. Spanish, Italian, Dutch, Japanese, and Chinese are now current. Plus, 4 new languages were added to the mix — French, Portuguese, German and Korean. If you’re a native speaker, I’d appreciate your feedback on the translations’ accuracy. For example, tree-related terms like branches and twigs can vary a lot across languages, and direct translations aren’t always possible.
- To simplify things, I removed the Shade > Samples parameter. I just picked a good value, and now there’s one less parameter to think about. Add > Bud Life and Add > Up Random were removed, they turned out to be over complicated. The preferences option for Compress Simulation Files was removed, it is now default.
- A big change for some – this release drops support for Blender’s old particle system. Geometry nodes and attributes are the way forward. This choice allowed for a lot of code cleanup, including the removal of outdated vertex groups and vertex color layers.
- Future proof. In Blender, switch from the bgl module to the gpu module, to make The Grove work on modern GPU backends like Metal and Vulkan.
- Improvements to The Grove in Blender‘s viewport UI — the widget resolution now automatically scales with your screen’s dpi (pixel density).
- Improved default repeating UV map – fix shifting at nodes where the resolution steps back. UVs are now aligned perfectly straight.
- In release 11, the number of faces and branches displayed in the Build > Mesh panel only counted one tree. It now correctly adds up the polygons and branches of all trees in the current grove.
- Filter out OS specific hidden files in the twigs menu.
- By passing through mouse move events, the Grow button keeps its focus and you can keep clicking grow without hiccups! I previously implemented an ugly hack that kind of worked, but had its own problems. Now this annoying problem is finally solved.
- Smoother transitions from tree base to roots.
- Adding roots now creates a root system for every tree in the grove, not just for the selected tree. Grow and Regrow now also clear any existing roots, just like Restart already did – roots are the final step in the tree growing process.
- Roots are now also updated by a change in simulation scale, and roots now also share the same pivot point as the tree.