Procedural generation of assets is a well known technique widely used in the game industry. It`s used to generate various kinds of objects (meshes), level design (terrain, universe, mazes, dungeons, etc), plot complications, dialogues, sounds, loot, textures, and so on. What all those have in common are: They can be decomposed in small building blocks and assembly rules. Among the reasons for using such constructions one can find:
- Storage space optimization. For such cases it may be better to store a set of blocks and rules than all the possible combinations generated by it.
- Computational creativity and diversity. The possibility of generating virtually infinitely different assets, for example, in the level design never facing the same level twice.
- Time complexity of development of repeated assets. Modeling assets of the same kind with some variation can be time consuming, while generating various of them from the same blocks and rules are easier. A simple example can be hand crafting each tree of a forest versus generating various trees and forming a forest.
Of course there is a downside, to create such generators it`s required to have a deeper knowledge of what is going to be modeled, otherwise one may fail to identify the correct parameters, blocks and rules hence generating assets with inconsistent and artificial appearance.
The tools behind of procedural generation are the rewriting rules, related to grammar, and probabilistic distributions. Taking the specific case of meshes, both play important rules on the assembly of an object. The first controls the general structure of a model while the second introduce the variations in the appearance per object.
Here we are going to address the generation of plant`s root meshes based on simple rules.