Tuesday, October 14, 2008

phd. get set. go.

So with the mindset that the first year of a PhD should be divergent thinking (the second is just thinking, and the third is convergent thinking?) Paul has pointed me to the classic example of growth control systems - genes and biology.

I have never read much, but I think I'm going to try and change that. I'm not convinced it'll work, but in such a niche subject (there's no one in the department who has any answers for me, just guidance and new directions) I have no choice. Given that I've got a short attention span, or just like to digest ideas, I'm running a parallel reading project. The books on my desk atm are:

From How the Leopard Changed It's Spots we have the idea that there's no distict line between nature and nurture as an organism develops. There are features that are entirely gene driven and entirely environment driven, and a full spectrum of ideas between.

If we apply this to procedural modelling, we accept that we have a fairly naive algorithm that we throw into a situation. The algorithm adapts as it grows, responding to itself and and other imput algorithms.

We also see how the same geometric patterns can occur with very different causes in both chemisty setting a biological one. Here concentric circles are caused by a chemical reaction.


note the way the wavefront destroy themselves when they meet. The epicentres appear spontaneously, say from a local imbalance or spec of dust. We get to see the same thing produced by biological agents:



Is this really smart slime, (or is it just reliably dum?). The centres of these circles are used to grow spore-pods, like this



The neatest thing of all, is that these both these phenomena are just doing a Voronoi tesselation if you draw straight lines where the wave-fronts collide. Granted, you have to forgive the fact that the different epicentres start emmitting at different times, but it's an algorithm that makes sense in the context. In fact they do something that I've been meaning to implement for a long time, varying the speed of the pulses (wavelength of ripples/circles in the chemical example) we get a weighted** Voronoi. We could even change the speed at different times/directions to get some interesting curves.



With this connection to bacterial, cell driven, algorithms it looks like the Game of Life, and all it's variants are now on my list of things to research. Wikipedia has a page on the meta topic of Pattern Formation, and there appears to be a body of work in the area.

Image:Glider.svg

I never liked the game of life, too messy, too hard to predict. It has some features we want we want (self similarity, recognisable geometric patterns) and some we don't (very hard to anticipate growth patterns from input rules).

This leads on the obvious (sorry about jumping about so much, but...erm...get used to it!)- there are number of axis for procedural geometry tools
  • level of control at runtime (do we output different geometry in a game if the user is bored or their framerate drops)
  • level of user (coder/punter) input at "construction" (compile?) time
  • acceptable variation of output (is it okay if some parts of your procedural city looks like the Mandelbrot set, if there are some usable parts? or does every single doorknob have to look good enough for the opening shot of a Hollywood blockbuster?)
I have the horrible suspicion that I'll have to lock this project down onto these axis, and save some of the other questions for another time.

From On Growth and Form (the Glasgow library copy of which was filed under psychology, printed in 1942, and of which I'm terrified of falling apart in my hands) had lots of w$%^ing in the introduction that assumed a knowledge of latin, french, german and, I think, greek. But mainly draws the same conclusions that the mathematical/physical and biological worlds are inextrably linked. It looks like the rest of the book explains this, so explaining the form using algorithms analytically. This is a good starting point if we can figure out how it can be turned around and driven generatively.


**memo to self, backup plan for PhD in event of original-thought-failure
  • take a geometrical algorithm (straight skelton (as per MEng), Voronoi (as above), etc...)
  • prepend the word "weighted" to the algoithm's name: "wieghted game of life"
  • show that we a have a new primative for geometric procedural modelling)
  • repeat for 2.5 years
  • write up...

No comments:

Post a Comment