Another growth test

Things are getting more interesting with the growth script. The resource map used by the lifeforms is now drained as they use up the energy available. This energy doesn’t grow back, and so puts a limit on the time a fixed world can sustain life. The nodes have another trick up their sleeve though – energy flows upstream along the connections, so older nodes (who have drained their surroundings) are sustained for a time by the energy captured by their dependants.

Post industrial rehab

So over a year on from leaving the world of computer games megacorporations and big budget movie special effects, it’s maybe time to be a bit less terse than usual and compare and contrast against life in the shadowy world of arts, academia and free software.

There are fairly obvious benefits of leaving the 9.00-6.30 if-your-lucky world, free to work from home, a shared “space” or a greasy cafe with stolen wifi and no set hours are great. No need to harp on about that. One of the best things I’ve noticed is that my life is now more varied socially, with different projects I’ve met and worked with people from disparate backgrounds in the last year. In a company it’s very easy to just mix with people with similar outlooks as yourself, and it’s generally simple to explain what you do. The world I’m in now is much more messy, more of a network than a hierarchy – and it’s challenging to fit into the often surprising situations that arise.

What I want to concentrate on however, is what I think both academia and arts could learn from the commercial world. It’s not something I hear much about, as it seems the unwritten agreement that it should always be the other way around.

It seems noticeable to me now that teamwork is more critical in a company than elsewhere. In fact the best people I have worked with have exhibited some degree of ego loss, sometimes an almost fanatical desire to make ‘the right decision’ for everyone – not because they will be praised for it, but just because it makes sense and to do otherwise would be abhorrent. In games or film companies, people like this are highly sought after, whereas my feeling is that people who shout a bit too loud or desire a bit too much recognition tend to get weeded out after a time. It seems to me that the worlds of academia and art seem to have their selection biased in the other direction – as they are based on highly individualistic metrics.

Focusing on academia, I’ve been surprised at how much the publication system forces a secretive, protective culture where exposure of material has to be sensitively stage managed. I can clearly see why this arises, but the culture it enforces (a default distrust of one’s peers) seems counter to the core business of what being a scientist should be about. Several projects I’ve been involved in have found it difficult to negotiate the methods of open source development because of this.

I think the assumption that individualism and the competitiveness that it fosters is the obvious way to achieve the best results needs to be reconsidered. It seems in some cases to be restricting us, and that perhaps (to paraphrase foam) these are the times in which we need more branching out, more interdisciplinary thinking which all requires more default trust between us individually, and our many tribes.

So this brings me back to free software. While it can hardly be credited for lacking people bordering on the egotistical, there is something about the openness, and the endless reports of mistakes you’ve made from complete strangers which I think encourages this more humble mentality.

Resource maps

This is the same growth algorithm as the video I posted on Tuesday, but with a non-uniform resource – painted with a texture map. There is a bug meaning that failed connections aren’t deleted, but I like the way that islands are colonised. Posting here I just noticed the similarity with the hapstar graphs…

Mesh collision volumes in fluxus

Thanks to learning a bit more about ODE you can now, finally specify a mesh as a collision volume to the physics system.

The meshes have to be indexed triangle list polygons, so I’ve also added (poly-build-triangulated) for making a triangle list polygon primitive from any other polyprim. You can then use (poly-convert-to-indexed) to make them compatible with the physics meshes.

Particle filters

A particle filter is a technique used in computer vision to estimate the state of a system, given noisy data from fallible sensors. The underlying idea is called a hidden markov model, and looks something like this:

The assumption is that any state of the system is dependant on it’s previous state (and thus all previous states) and this state is something we can never know directly, only via observations. There are two very different sources of inaccuracy or noise. One originates in the state change process – as it’s assumed we can never have a complete model of this (a good bet in the case of human actions for example). The other source of noise is in the observation process itself, which comes from the way the sensors work. This is more predictable, and filters of this type are built to allow you to account for this.

Particle filters maintain a multitude of hypotheses of the hidden state of the system at the same time. They attempt to model state changes in some basic way, for instance the velocity of a moving object. They also model the observation process, for example a distance/angle reading of an object in x,y space. Each time a new observation arrives, the system grades each particle’s simulated observation against the incoming one and weights them accordingly.

This is a frame from some particle filter code I’ve written which is tracking an object as described above. The line is pointing to the current estimation which is based on readings from a radar like sensor. I’ve told the system that the heading sensor is less reliable than the distance sensor, and so the particles are spread out in a vague crescent shape accordingly. This shape is called the probability distribution function (or pdf) and it’s a strength of particle systems to model complex pdfs such as this effectively.