This is a project I’ve been slowly adding to over time: an ivy generation tool for Unity, written in C#. It will let artists grow ivy right in a Unity scene and bake the geometry all without the use of any external tools or pipeline. It’s been a lot of fun to work on this, as I’m a big fan of procedurally generated content.
The basic principle of the generation algorithm is to start with a ‘seed’ as a starting position. This seed is added to a list of ‘ends’, as in the end of each branch. Every pass, each end ‘grows’ slightly based on the growth attributes the user puts in, taking into account things like the maximum length a branch can be and the chances for a branch to split into multiple branches. After all this happens, the newly grown ends are placed into the end list and the old ones are removed, then the whole process repeats.
I’m still working on a few key features: leaves, wall detection, texturing, and an editor window. What it does currently do, as seen in the image here, is “grow” the ivy and then generate geometry from it (the geometry is a little rough still, but it does work). When I get it finished I want to release it on the Unity Asset Store.
Click on the animated image to see a bigger version, and check out the progress demo below. Source code will be unavailable since I plan on selling it on the Asset Store, however I’m happy to answer any questions about it.