This action might not be possible to undo. Are you sure you want to continue?
The spiders are controlled using my own crowd simulation algorithm, outlined below. Data from this is fed into my multi-leg auto-walker. The renders are processed using custom ‘scribbling’ code I developed based on an algorithm by zefrank. I sampled the motion paths to produce waveforms, and combined the result with an audiopaint process.
Unless otherwise disrupted each insect will aim to keep walking straight ahead
Every insect repels its neighbours to avoid collisions
Every insect looks for ‘escape routes’ in case of collision
In a collision an insect hit in the back will not stop moving, but an insect which runs into another insect will.
‘Controllers’, for example attract, vortex and direct, can be used to explicitly control the insects.
‘Panic’ causes random variation in the movement.
‘Flock centre’ causes each insect to head for a central position between its neighbours.
‘Herd’ causes insects to align to their neighbours.
An insect which has been collided with will panic.
An insect which has been blocked in will sleep.
‘Emotions’ can also be manually adjusted using controllers.
Data generated by the insect crowd simulator can then be visualised as motion paths, adjusted, smoothed, and then fed into the auto-walker script.
Auto-Walker Algorithm This is a simplified explanation of my auto-walker algorithm. It was used to animate all of the spiders in the demo.
body guide points rotate with body
placed legs stay put
airborne legs head to the guide point to start with...
...then they extrapolate the motion vector of the guide points
airborne legs become stationary when stray too far from their guides and vice versa.
To sequence the legs, the script keeps track of how long each leg has been airborne or placed for. A preferred leg order is given and at each frame this is compared to the current leg order. Legs are sped up or slowed down to correct the order.
raised legs actual order time raised preferred order placed legs repeats...
+1 +2 -1
-3 choose ‘easiest’ option
...it then selects a few of these at random as start points...
...and looks around at neighbouring points for darker pixels...
...and tries a few random points further away...
...remembering only darker pixels.
...considering all of the options, each start point will then move on to only one pixel...
...and the algorithm repeats. On subsequent runs the algorithm prefers to jump to pixels in a similar direction to the last jump. It also avoids pixels which have already been ‘scribbled’ on.