Space Colonization Plus

Using a Space Colonizatio Algorithm, space can be defined through a point cloud and 3D models can be "grown" by colonizing that space. This technique is well suited for model of trees, because it matches the growing process if real life trees. For my Bachelors Thesis I implemented a Space Colonization algorithm based on a paper by Adam Runions and added the recognition of environmental factors like sunlight and shadows being cast by nearby objects.

The pointcloud can be defined through arbitrary curves, which are then rotated around a central axis. This pointcloud determines the general shape and height of a tree. Additional parameters allow finer control over the growing process and the density of branches and smaller twigs within the tree.

In addition to the underlying algorithm, here the incoming sunlight is taken into account when simulation the tree growth. The incoming sunlight is accumulated over a day with the path of the sun being calulated dependend on the local coordinates and time of the year. When there is no obstacle in the way to block the sunlight, that results in a tree that is tilted towards the south (on northern hemisphere). The degree of influence the light has on tree growth can be set through a parameter.

Obstacles that block the sunlight are recognized when calculating the area of the tree that is touched by sunlight, and influence the growth of a tree in the direction of the shortest path to sunlight.

This project was implemented in Java3D for the purpose of testing the theory of my Bachelors Thesis and evaluating how well my adaptation of sunlight influence on a space colonization algorithm performs. I'm planning to rebuild this project in C++ for better performance and with a user friendly interface.