gpu based math image synthesis

Generating images via the evaluation of a complex mathematical function in the cartesian plane has been done to death, see e.g., Karl Sims' Genetic Images. But with the explosion of GPU based computing we can now rapidly explore these spaces. I whipped up a short program that does this. The basic procedure is:
  • Construct a string defining the function, for example:
"pow(p.y*9.5*p.y/p.x/p.y,acos(sqrt(p.x*p.x + p.y*p.y)))"
  • insert this into a function within a fragment program;
  • compile and use the program;
  • draw a rectangle covering the screen so that each fragment is fired.
The image generation is practically instantaneous. In my implementation I randomly generate functions as a key is pressed so you can quickly get a glimpse at the possibilities.

I also attempted an implementation in PixelBender, however as you cannot compile shader code at runtime the above method does not work. I began work on a general shader that reads in the function information (encoded in an image) and evaluates it at runtime, however I became stuck upon realising that recursive function calls are not possible and hence a manual stack has to be implemented. Gah.


SDS3 First Prototype

It's been just over a year now since the idea of a volumetric developmental system coupled with physical simulation (the Simplicial Developmental System) became the focus of my PhD. Since then I have built a 2d prototype and have been working out the theory and implementation details for a usable 3d version. I still have much more work to go trying to get something interesting done by January, but here is a sneak preview of the system I've been building.



Why don't we see more generative methods in modern games?

Playing through Fable 2 this week, I was awe struck by the large vivid world and its numerous trees, flowers, grasses, hills, rivers, buildings, etc. It has been beautifully constructed by an army of artists, each of the (10 million plus) flowers placed by hand. In scope it falls behind Oblivion, but it is much more beautiful and the elements more tightly integrated. Both of these games, to my knowledge, do not use any runtime generative methods to generate their worlds. If only part of the cpu was used to generate additional detail when requested, these worlds would appear infinitely more complex.

Imagine walking up to a tree and being able to examine the subtle geometry and texture of the bark. In implementation, we can either store the bark geometry (but imagine the space requirements for that) or generate it whenever we need it. When a player walks close enough to a tree, the cpu cycles devoted to procedural content would begin the process of generating the finer bark detail. There are simulation methods that will generate the necessary texture and geometry (albeit they need some work to run quickly.) When the player moves away the detail would then be either thrown away and regenerated again when needed or cached for later. This technique allows trees to have unique texture, takes up zero storage space, and costs nothing when trees aren't examined.

I believe the poor uptake of generative methods lies in their poor integration into existing tools and lack of intuitive parameters for artists. More and more tools are appearing now which adopt some procedural methodology (CityEngine, GML, Xfrog) so hopefully we will soon see the integration of more advanced generative techniques into virtual worlds and games.


random image dump

some unfinished creations

click to enlarge


mrs porter

I am now a married man. I decided to keep my name, my wife however has changed hers. Luckily there's no other Mrs Porter in my immediate family otherwise it could have been weird. Having a common family name unites us (against the evil military-industrial complex), however why should we take one name over the other? Hyphenation can only lead to confusion after two or so generations as the surnames increase exponentially in length. A better alternative in my opinion is to create a third name that both parties changes their family name to. This third name could be a mashed version of the two surnames, or alternatively a new, more superior, name. For instance, mash Buckley and Porter and get Bucter or Portley. I wonder how other cultures handle this issue? No doubt they are as phallocentric as ours.

Our wedding was in the Royal Botanical Gardens of Melbourne, a strange choice for the middle of winter. The weather on the day was clear and sunny, raining the moment after we said our I dos. The event went smoothly and I think all our guests had a great time. I am very humbled to now be formally wed to my soulmate.

We honeymooned in Vietnam, which was a compromise between my choice of Madagascar and Steph's choice of Hawaii. It was no compromise, we absolutely loved the country. It's an awe-inspiring and very dynamic country, seemlessly blending the authentic and traditional with self-organised cities and a rapidly developing economy. We spent three weeks exploring Vietnam with a full itenary the entire trip. In brief we started at Ho Chi Minh city, where the 3 million + motorbike owners (hello, moto?) and their self-organised traffic really opened my eyes to the stability of apparently chaotic systems. We toured around the Mekong Delta on a boat and visited Cu Chi where the Vietcong had established 200km of underground tunnels to live in and fight from during the American War. Here I am climbing into a secret entrance, there is no way I could have climbed through the tunnels it lead to though, wayyyyy too small.

Snaaake, snaaake, it's a snake...

At the Temple of Literature in Hanoi there are numerous stone stelae with the names of students who had graduated with a doctor of philosophy. The earliest one is from the 15th century. They rest on giant tortoises. A tool poses in front of them.

Yes, a kangaroo with glowing red eyes. To be mysterious I won't say where this is ... but it's definitely in Vietnam.

I observed a few things while abroad. These are my naive generalisations...

One: the fish sauce in Ho Chi Minh city is much nicer than the fish sauce in Hanoi.

Two: Everybody in Vietnam has a very specific job. Proof by example, while sitting on a beach a man would come by every 10 minutes, collect the shells and sea debri that had washed onto the shore, then throw them back into the ocean. The waves kept throwing more stuff onto the beach, but his job was to keep it spotless. Also, whilst eating at a restaurant one girl had the sole job of maintaining the level of fish sauce in our fish sauce receptacle. An extreme example of the generalist-specialist social theory?

Three: Everyone says "Hello!". It is not uncommon to have this said to you many times on a walk around a town or city. Sometimes it is a curious poll. Sometimes it is a friendly greeting. Othertimes (though rarely) it is a barbed insult.

Four: You can't fit five people on a motorbike.

Five: Four people on one motorbike is the strangest thing I've ever seen on a bike. Except for this:

... and maybe this Choco Pie. Originating in Korea, the Choco Pie is similar to a Wagon Wheel, but imho not as tasty. Props to the manufacturer for giving it such a clear name, it's quite obvious what you are getting yourself into when you purchase this food ware, and it does not pretend to be anything else (unlike Nutri-Grain...) And how can resist their website...? (sound on)


Firefox 3 available in under 10 hours.

The mayhem will commence shortly. Notice the barrage of plugin updates today? :)

Download Day 2008



Here is a fancy visualisation of my delicious tags, courtesy of the cool software at Wordle.net. At a quick glance you get an idea about what I get up to on the net.
The visualisation doesn't reveal anything new to me. I must say, however, that my youtubeing is barely non-existent though it's one of the first tags I see in the image (due to it's parasitism on my colossal graphics tag).


First Haeckel variations

variations, originally uploaded by eigenbom.

I reproduced one of Haeckel's creatures today. The original is in the top-left quadrant. It is from Plate 17 of Kunstformen der Natur.

Hopefully I will be able to do some more in the near future, on a weekday I have now reserved for "creative endeavours".


Drawing test

...two posts in one day? I must be busy. : D

I've been playing around with python, pygame, and cairo (through pycairo) the last few days. I needed an environment to quickly prototype ideas (after discarding processing for various reasons). With the above mentioned combination I can quickly whip up interactive vector-graphic driven systems. The following video demonstrates a trivial algorithm for generating shapes that takes two parameters which are changed over time. It's nothing special but took a trivial amount of time to implement with my new toys. Something interesting to look out for are the emergent shapes and waves as the parameters are changed.


Virtual ecosystems

As part of the Design After Nature project, CEMA has been looking at natural ecosystems in the context of creativity. Our primary assumption is that the diversity of organisms, complex interactions and energy networks that arise within ecosystems is the result of a set of ecosystemic principles that can be applied in a creative and artistic domain. This assumption is not all that far-fetched, aesthetic evolution demonstrates that the concept of natural selection can be applied powerfully to creativity (e.g., Genetic Images, The Electric Sheep.) CEMA has been involved in this idea for quite some time through various artworks, such as Plague (Alan Dorin) and Eden (Jon McCormack).

My own research focuses on biological development as a creative force, however I have been involved in this project and have been playing around with various ideas and prototypes. A very literal interpretation (from a computer scientists p.o.v!) is demonstrated in the following video. The virtual world (the white plane) contains various growing plants, which according to an internal genome grow leaves (the green parts), branches, and drop seeds. A seed inherits its genome from its parent, the genome is mutated slightly to provide a simple evolutionary capability. Initially the world is populated with seeds with randomly generated genomes, most of these aren't capable of reproducing and so their species die out. The ones who can reproduce start to populate the space. Eventually a small set of species remains as the system enters a homogeneous state (where the most efficient species has survived and cannot improve anymore). A simple energy model is incorporated (energy is obtained via photosynthesis through leaves, growth of new parts costs energy, and reproduction costs energy).


The system results in plants which reproduce quickly and are efficient at filling space. The ecosystem abstraction used is quite naive but demonstrates competition between species (for the same niche: space), evolution, and interesting dynamics over short and medium term timescales. The system is interesting visually, primarily because of emergent shades: there are only two colours in the system but different plants fill space in different ways resulting in different shades of colour.


Confirmation over. Caek time.

I have now finished all required work for my PhD probationary confirmation, and have successfully been confirmed. This means that the confirmation panel are convinced that I have a valid research proposal and a plausible schedule over the next 2 years.

I enjoyed my caek last night. It was a dodgy banana cake from safeway. It wasn't bad.

My research involves the design and implementation of a creative system that grows geometry using principles from biological development. The shapes (organisms) consist of cells that grow, divide, move and die, following a genetic program specified by the user/artist. This general methodology has been successfully demonstrated with Lindenmayer Systems through Prusinkiewicz' (and others) great work. My work looks at different structures and is directed at modelling organisms such as the Siphonophorae illustrated by the 19th century naturalist and artist Ernst Haeckel. One such illustration (my replication) is shown below.And on other news I ran my first fun run on Sunday. The Run for the Kids fun run attracted nearly 30,000 runners and supports the Royal Children's Hospital. I made it the entire 14km in under 80 minutes --- which was my target. It wasn't a fast time (1hr17m) but it's a starting point and I hope to knock at least ten minutes off next year. It was an awesome experience and I think I'll be running a few more over the years.


confirmation now, caek later

...working towards my 1 yr phd confirmation at the moment. A report (of, say, 20 pages) and a presentation are required. I have all the information scattered through both my own mind and a mind map; I just have to linearise it. I am also trying to get some proof of concept demos done .... here I am growing some protolimbs (though the growth is largely uncontrolled so they look more like tumours than limbs):


I have also been eating caek, playing games, and playing around with some noisemakers.


Fast Fluid Simulation In Processing

I implemented Jos Stam's fast fluid solver into Processing and it works fairly well. You can find the simulation, documented code and reference here.

Now if I could only think of a novel way to use it... :|


preliminary povray exporter

I hooked the simulation output into povray, watch those cubes fly!



Dancing Cubes

The cubes are dancing again ... confirmation soon ... must work harder ...



The recent explosion of web2.0 apps and social-networking platforms (read: facebook) has made me realise how powerful these online applications and storage facilities are. The pc is becoming less personal (sorry hp!) for a wide range of people, merely providing a portal through which they can access their widely dispersed hodgepodge of data. PC's are becoming terminals once again.

For me, the online applications I use to organise my life include: contacts & emails [1], calendars [2], tasklists [3], journal [4], bookmarks [5], photos[6], and news [7], all of which I access primarily through my personalised home page [8]. There are many applications available for all of these purposes, and others including: office applications [9] , mindmapping [10], note-taking [11], etc.

It is safe to assume that in 2007 it was possible to work as a [insert generic job title] using no desktop applications, moreover it may have been more productive, for a few reasons:
  • most of these applications have mobile interfaces, meaning that you can sit on the train while organising your online calendar, for example;
  • the web2.0 revolution means that now different applications are more likely to be able to share data;
  • your entire workload is computer-independent, so now you can work from anywhere;
This is practically a little while off though, as there is still a vital application missing ... the web2.0 browser within a browser.

A web browser is the primary interface to the web, and is used for browsing/navigation, tracking history, customising the appearance of the web, bookmarking, and running the plugins which some of these uber online apps provide and need. Tracking all this stuff online is the obvious next step for the web, which ideally means developing a web2.0 browser that works from within your computer's browser.

The browser-in-a-browser (bib) would handle all navigation requests, site caches, bookmarks, history lists, etc .. and store them "in the internet" (ideally redundantly across many servers around the world). The pc's browser would still handle all rendering/execution tasks, the bib would just act as a customised frame around that. The bib would act similarly to standard browsers today (e.g., with plugin support), or could use social browsing aspects (see e.g., flock.com). I would then only have to set up my bib once, and the bib site would be my first stop whenever I login to a computer. Moreover, the bib would be me-specific, so numerous users (of say, a family computer) can all have their own customised and secure browser.

Some first steps towards this goal exist in different flavours (gollum, palary, bitty), but I expect to see a nice clean browser (like palary) that works fast, integrates with the online apps mentioned above (e.g., delicious), allows multiple-page viewing, caching and password storage. I would expect the browser king to lead the charge on that front...

  1. gmail , facebook
  2. google calendar
  3. remember the milk
  4. this blog
  5. delicious
  6. picasaweb
  7. google reader
  8. netvibes
  9. google docs, zoho, ajax13
  10. mindomo
  11. webnote, google notebook