Shop More Submit  Join Login
×

Featured in Collections




Details

Submitted on
February 5, 2008
Image Size
1.8 MB
Resolution
1632×1224
Thumb

Stats

Views
2,116
Favourites
13 (who?)
Comments
6
Downloads
56
×
still life by fsk still life by fsk
Another pixel crawler work. This time they ate a photo of my friends desk, digested and excremated it over a blank white bitmap.

When i say pixel crawlers, i mean objects in a program which, given a position on a bitmap will inspect the surrounding pixels and decide where to go next. some crawlers like dark pixels, some saturated pixels, some like red pixels and so on.

If they find themselves in bad conditions they "die" and reincarnate somewhere else (they never multiply). i guess this is some kind of cellular automata or something though most examples of automata i saw filter the whole screen at once.

What you see on this image is their trails (if you download the image and zoom in, you'll know what i mean). Also, this is just a "photo" of the process. I used the original photo to make an environment for them then spreaded them randomly and watched them "digest" it and took a snapshot. So in a way this is a double photograph, one from the real world and one from a custom digital world.
Add a Comment:
 
:iconmarkavo:
markavo Featured By Owner Feb 6, 2008
This is informative, however i still ask, how is it done? Or what I mean is with what?
Reply
:iconfsk:
fsk Featured By Owner Feb 7, 2008
Its done with a program called Processing [link] . i dunno if calling it a program is the right thing to do, its more of a simple development platform.

I took that photo with my phone and then wrote a program that did that to it in Processing.
Reply
:iconmarkavo:
markavo Featured By Owner Feb 7, 2008
Thanks, I look forward to messing with it sometime, of course if I submit something I'll link back to you. ^^
Reply
:iconbushidoblade:
BushidoBlade Featured By Owner Feb 6, 2008
Nice concept. Did you write the pixel crawlers program yourself?
Reply
:iconfsk:
fsk Featured By Owner Feb 7, 2008
Yes. Its quite simple. This is one of the "pixel crawler" classes:

class LivePixel4 {
int xpos,ypos;
int[][] dir={{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}};
int[] currentDirection;
int steps;
color col;
color col2;
float lifeMax=555;
float life=lifeMax;


LivePixel4 (int x,int y) {
xpos=x;
ypos=y;
steps=0;
col=pod.pixels[ypos*width+xpos];
life=(255-saturation(col))*10;
lifeMax=life;

}

void step()
{
if(life>0)
{
if(steps==0)
{
currentDirection=dir[look()];
steps=1;
}

xpos+=currentDirection[0];
ypos+=currentDirection[1];
if(xpos<0)xpos+=width;
if(xpos>width)xpos-=width;
if(ypos<0)ypos+=height;
if(ypos>height)ypos-=height;
color co=buf.get(xpos,ypos);
color nova=color(hue(col),saturation(co)*.9,brightness(co)*1.1);
buf.set(xpos,ypos,nova);
set(xpos,ypos,nova);
steps--;
}
else
{
rebirth();
}
}
void rebirth()
{
xpos=floor(random(width));
ypos=floor(random(by));
life=(255-brightness(col))*100;
lifeMax=life;
}
int look()
{
color[] c1={gc(xpos+1,ypos),gc(xpos+1,ypos+1),gc(xpos,ypos+1),gc(xpos-1,ypos+1),gc(xpos-1,ypos),gc(xpos-1,ypos-1),gc(xpos,ypos-1),gc(xpos+1,ypos-1)};
float maxValue=0;
int index=int(random(8));
int kje=index;
int ind=index;
for(int i=0;i<c1.length;i++)
{
ind=(index+i)%8;
int val=compare(c1[ind],col);
if(val>maxValue)
{
kje=ind;
maxValue=val;
}
if(maxValue<50)life=0;

lifeMax=max(lifeMax,life);
}
return kje;
}
color gc(int x,int y)
{
return buf.get(x,y);
}
int compare(color c1,color c2)
{
return floor(abs(red(c1)-red(c2))+abs(green(c1)-green(c2))+abs(blue(c1)-blue(c2)));

}

}
Reply
:iconmurve33:
murve33 Featured By Owner Feb 5, 2008
These recent works have been pretty interesting. Keep it up : D
Reply
Add a Comment: