New Project: Blender-Evolution

I’m struggling to find the time to finish anything at the moment, so I thought I’d take a break from a larger project and work on something I actually have a chance of finishing.

You can see from my other posts that I have an interest in CGI rendering; and one of my other interests is evolution / genetic algorithms.

I had previously been working on my own renderer (one in Haskell, and one in C#), but I thought I’d try making use of an existing open-source one, and concentrate on the evolution side of things.

I had been playing a bit with Blender, and realised it was scriptable using Python, and more than that: it can be scripted without needing the full UI using bpy.

William Latham

I’ve been impressed by the art of Willian Latham since I discovered it in university, and I wondered if I could use human-directed evolution to produce something similar, using a similar method to that described in the book “The Blind Watchmaker”.

So… I’m going to have a little Python GUI that mutates a structure describing a scene, and displays the mutation choices in a grid. The user can then choose which one they want to use as the starting point for the next generation, and so on.

The images will be rendered using a separate Python utility: the programmatic Blender interface is based around static contexts, and I will want to make this multi-threaded; and also it seems difficult to control memory leaks, so doing process-level memory management seems sensible.

I’ve put together a very basic version - you can find it on GitHub.

Blender via Python

It’s not much, but it’s a start. Next step is the evolution GUI. Once that is working, I can then start adding support for different kinds of objects and different kinds of materials.

Written on March 1, 2019.