In the process of learning about non-linear dynamics I created this image:
Metaball Skinner: Update (Mar 24, 2017): I made this functionality into a blender add-on! Get it here: https://www.blendermarket.com/products/metaball-skinner
The first shape has been grown using an evolved program! This is part of the plant grower project I am working on. It doesn't really look like much, but that's because it is evolved to grow as many nodes as possible in a set amount of time. So it is not surprising that it looks like a dense hairball. I suspect that results will get more visually interesting when the fitness criteria encourages compromise. Here is the shape:
Here are some more plant-shapes that are 'grown' in the same simulation environment, but with different randomly generated growth rules. Note the variety in shapes! See the previous post for a detailed explanation. I am posting the most interesting structures I have come across, but many of the randomly generated rules result in 'boring' shapes, like a vertical line. Beware my aesthetic bias!
Last post I was figuring out how to get a genetic programming package inside of a 3d modeling program called blender. Today I got the simplest use of the genetic programming package woking: generating random trees of functions, to make a sort of 'processor.' I took the randomly generated processor and plugged it into the plant/coral simulation I have been developing. In this simulation a bunch of spherical particles jitter downwards, roughly simulating the diffusion of nutrients in water or light in a forest. A point, or collection of points, acts as a 'seed.' When a sphere collides with the seed, it creates a new point and an edge. I will refer to the points as 'nodes.' Each node decides where to put the new node. For the moment this decision is based on the position of the collided sphere, and it's relative position to its parent node.
In my quest to make lots of different interesting shapes, I am attempting to use DEAP inside of blender. Deap stands for Distributed Evolutionary Algorithms in Python. Deap has a module for implementing genetic programming, which I am curious and excited to use as a way of automatically generating growth rules. Genetic programming evolves computer programs to perform some sort of task well. I am not really sure, at the moment, if it is important that the growing tree-structures perform some task well. However, the deap package includes an interface for easily generating random programs from a collection of predefined 'primitves' or basic functions. It also allows one to easily construct a genetic algorithm which uses the randomly generated programs as 'genomes.' Anyway, first I need to make the deap package available within blender!