Procedural Plant Generation
I started this project as a tool for generating abstract and organic environment elements to be used on a VR-soundscape building experience. I ended up developing a tool that can assemble any set of 3D models to create plant-like forms with many randomness parameterizations. It is possible to create very unique and abstract assets with it unlike any plant creation algorithm I was able to find. It still needs work to be adequate for distribution, but here is how it works and what it can do:
The parameters of a plant are set on a per branch_level basis. Each branch_level has a model pool to choose a mesh from. For example tech_tree has all branch models to choose from on every branch_level but the bone_tree must use one of two long bone models for its trunk and branch_level_0 while it must use of two short bone models for branch_levels 2 and 3; and on branch_level_4 it must use one of the two pointy bone models. The number of branch_levels for each tree can. be. specified and randomized given a range.
Each branch_level has a branch_count_range which specifies how many branches can or must be added at the end of each branch of the prior branch_level. If the minimum is 0 then some branches will be marked as a tip and won't receive branches at any succeeding branch_level, after all branch levels are built, the tip models will be added at the end of each branch marked as tip (the tip modes can be fruits or flowers).

Each branch_level has transform ranges. The branches will be scaled and rotated according to these ranges. If we want a specific value with no randomness for any parameters, we can enter the same value for its min and max.
After the data of the plant is generated and stored (the transform values and models of each branch), the plant's growth can be animated. In this example the branches will scale up, always pointing in its final direction but it can also be made so the growing branches start their growth pointing in their parents' directions and end up in their final rotation at the end of the branch_level growth.

In this example branch levels start their growth only after the prior branch_level reaches its maximum growth but their growth intervals can be juxtaposed for more organic looking plant growth animations.

You may also like

Back to Top