loading

Archive for June, 2007

Daniel

Voronoi Video

Download higher quality quicktime

I’ve been revisiting Voronoi Diagrams after seeing flight 404’s post and continuing amazing work. Started out by duplicating Golan Levin’s portraits (see image below) with the idea of developing some sort of voronoi-esque video filter (see sample above). I’m planning on trying a few things to make the Voronoi cells interpolate nicely as the video image changes. It’s just so spastic looking. . .

Thanks to Paul Chew for a great Java implementation (beat the hell out of whatever I did a few years ago).

Baby

Daniel

Voronoi Video

Download higher quality quicktime

I’ve been revisiting Voronoi Diagrams after seeing flight 404’s post and continuing amazing work. Started out by duplicating Golan Levin’s portraits (see image below) with the idea of developing some sort of voronoi-esque video filter (see sample above). I’m planning on trying a few things to make the Voronoi cells interpolate nicely as the video image changes. It’s just so spastic looking. . .

Thanks to Paul Chew for a great Java implementation (beat the hell out of whatever I did a few years ago).

Baby

Vimeo / Videos tagged processing

Gallery interface coded in processing


Gallery interface coded in processing

Update: It turned out all i needed to do was to 1. Use the OpenGL option and 2. move the the variable declarations out of the draw method to make things go faster - yeah I know, I’m smaaart ;). New version uses a circle in 3d (polar coordinates). Added reflection. Check it out: http://vimeo.com/235542
—-

A prototype of an interface to browse picture galleries. I coded this in processing. Unfortunately the animation is extremely slow, so i’ll have to switch to Flash (ActionScript) or Java(Applets). More on this on my website mmenchu.net.

PImage[] images;
int numImages;
int[] xcoord;
int[] ycoord;
int[] zcoord;

int frameWidth = 1152;
int frameHeight = 1024;
int currentIndex = 0;
int startingCurrentIndex = 0;
int bottomEllipse = 0;
int imagewidth = 150;
int imageheight = 100;

int a = (int)(frameWidth/2.05);
int b = (int)(frameHeight/3.3);
int translationX =(int)(a);
int translationY = (int)(b/0.95) - 100;
int translationZ =-500;

void setup()
{
size(frameWidth,frameHeight,P3D);
frameRate(30);

numImages = 25; // This needs be loaded form the xml
images = new PImage[numImages];
xcoord = new int[4*a];
ycoord = new int[4*a];

// precompute all the coordinates
// x^2/a^2 + y^2/b^2 = 1
// y^2/b^2 = 1 - x^2/a^2
// y^2 = (1 - x^2/a^2)*b^2
// y = Sqrt((1 - x^2/a^2)*b^2)

for(int i=0; i < a; i++){
xcoord[i] = translationX + (a - i);
xcoord[1*a - 1 + i] = translationX - i;
xcoord[2*a - 1 + i] = translationX - a + i;
xcoord[3*a - 1 + i] = translationX + i;
int ycoordinate = (int)(sqrt((1 - (sq(i) / sq(a))) * sq(b)));
ycoord[a - i] = translationY + ycoordinate;
ycoord[1*a + i] = translationY + ycoordinate;
ycoord[(3*a - 1) - i] = translationY - ycoordinate;
ycoord[3*a + i] = translationY - ycoordinate;
}

for(int i=0; i < numImages; i++){
images[i] = loadImage("http://www.mmenchu.net/blog/files/renamed/" + (i+1) + ".jpg");
}

}

void draw()
{

background(0,0,0);
currentIndex = startingCurrentIndex;
startingCurrentIndex += 2;
double depthFactor = 3;
int zcoord = 0;
int deltaIndex = (int)(a*4.5 / numImages);
int variance = 10;
int varianceX = 20;

for(int i=0; i < numImages; i++){
//point(xcoord[currentIndex],ycoord[currentIndex],0);
noStroke();
beginShape();
texture(images[i]);
if (currentIndex >= (4*a))
currentIndex = deltaIndex;

// if (abs(translationY - ycoord[currentIndex]) < variance)
// zcoord = translationZ;
// else
zcoord = translationZ - (int)(depthFactor*(translationY - ycoord[currentIndex]));

vertex(xcoord[currentIndex], ycoord[currentIndex],zcoord, 0,0);
vertex(xcoord[currentIndex] + imagewidth, ycoord[currentIndex],zcoord,images[i].width,0);
vertex(xcoord[currentIndex] + imagewidth, ycoord[currentIndex] + imageheight,zcoord,images[i].width,images[i].height);
vertex(xcoord[currentIndex], ycoord[currentIndex] + imageheight, zcoord,0,images[i].height);
endShape();

//if (((currentIndex % a) < varianceX) && (ycoord[currentIndex] < translationY))
// currentIndex += (int)(deltaIndex*0.95);
//else
currentIndex += deltaIndex;
}

}

I was inspired by http://www.morrise.com/youtubesearch.html

Cast: mmenchu

Vimeo / Videos tagged processing

Gallery interface coded in processing


flight404

More on Voronoi…

Lots going on these days. I think this might be the busiest I have been since I moved out here. But luckily, these projects are a hell of a lot of fun so I aint complainin’.

Us Barbarians are working on another gallery installation for the McLeod Residence located in Seattle. It is actually two installations but they are both going up at once and will be opening to the public on July 6th.

The first room has seven light boxes so we did a series of prints partially based on the Magnetic Structure pieces I posted here a few months back. It is a fairly exciting and new (to me at least) process to get these prints made. I use Processing to make a 3D construct out of magnetically charged particles and then export the particles’ x, y, and z positions to a text file. Fellow Barbarian Andrew Bell uses MEL scripting to pull the data into Maya and with a little isosurface trickery (developed by Andrew and his friend Hai), he creates really lovely structures that look like a cross between electron microscopy and origami. Here are a few of the test prints (the final prints are on Duratrans and will be 40″x30″). They look spectacular! I am really excited to see them installed.

If we get enough positive feedback, we will probably offer them as limited edition matte prints. I will post more photos after the installation opens in July.

The second room has much more going on and I am only going to hint at the depth of the installation. The theme of the room is biomimetic butterflies. Yeah, I had to look that word up too. Basically, its a room dedicated to procedurally generated butterflies. The final piece will incorporate elements developed with Processing and Maya, and will include laser cut materials, Arudino boards, and lots and lots of magnets.

Here is a test print of a set of butterflies whose wing patterns were made with Voronoi cells and magnetism.

The outline of the butterfly wings was made procedurally with Processing (based on the wing form of the African Monarch). I placed magnetic particles all along the contour of the wing, dropped in a few gravity particles and a few hundred magnetic particles and let them settle into place. These particles are then used as the center sites for a Voronoi algorithm to create the vein-like structure that spreads through the form.

These Voronoi wings are but a sampling of the many different types of algorithms that are being explored to create a nice variety of wing forms. I will be posting more about it once the installation is complete and hope to have better documentation of the piece.

flight404

More on Voronoi…

Lots going on these days. I think this might be the busiest I have been since I moved out here. But luckily, these projects are a hell of a lot of fun so I aint complainin’.

Us Barbarians are working on another gallery installation for the McLeod Residence located in Seattle. It is actually two installations but they are both going up at once and will be opening to the public on July 6th.

The first room has seven light boxes so we did a series of prints partially based on the Magnetic Structure pieces I posted here a few months back. It is a fairly exciting and new (to me at least) process to get these prints made. I use Processing to make a 3D construct out of magnetically charged particles and then export the particles’ x, y, and z positions to a text file. Fellow Barbarian Andrew Bell uses MEL scripting to pull the data into Maya and with a little isosurface trickery (developed by Andrew and his friend Hai), he creates really lovely structures that look like a cross between electron microscopy and origami. Here are a few of the test prints (the final prints are on Duratrans and will be 40″x30″). They look spectacular! I am really excited to see them installed.

If we get enough positive feedback, we will probably offer them as limited edition matte prints. I will post more photos after the installation opens in July.

The second room has much more going on and I am only going to hint at the depth of the installation. The theme of the room is biomimetic butterflies. Yeah, I had to look that word up too. Basically, its a room dedicated to procedurally generated butterflies. The final piece will incorporate elements developed with Processing and Maya, and will include laser cut materials, Arudino boards, and lots and lots of magnets.

Here is a test print of a set of butterflies whose wing patterns were made with Voronoi cells and magnetism.

The outline of the butterfly wings was made procedurally with Processing (based on the wing form of the African Monarch). I placed magnetic particles all along the contour of the wing, dropped in a few gravity particles and a few hundred magnetic particles and let them settle into place. These particles are then used as the center sites for a Voronoi algorithm to create the vein-like structure that spreads through the form.

These Voronoi wings are but a sampling of the many different types of algorithms that are being explored to create a nice variety of wing forms. I will be posting more about it once the installation is complete and hope to have better documentation of the piece.

Daniel

Opening July 1st. . .

TERMINAL ZERO ONE
Digital Art Exhibition at Toronto Pearson International Airport
Terminal 1 – Level 3 Terrace, Departures Level
July 1, 2007 – January 13, 2008

Terminal Zero One (T01) is a site-specific digital art exhibition of five projects exploring themes of contemporary air travel and the architecture of airports. Airports are networks, information is increasingly networked, the T01 exhibit examines people as data, motion as trajectories and the symbiosis of virtual and actual.

Sample images and video from my contribution are below. Happy Canada Day!

frame0020.jpg frame0140.jpg frame0150.jpg frame0160.jpg
frame0170.jpg frame0190.jpg frame0210.jpg frame0310.jpg

watch video

Daniel

Opening July 1st. . .

TERMINAL ZERO ONE
Digital Art Exhibition at Toronto Pearson International Airport
Terminal 1 – Level 3 Terrace, Departures Level
July 1, 2007 – January 13, 2008

Terminal Zero One (T01) is a site-specific digital art exhibition of five projects exploring themes of contemporary air travel and the architecture of airports. Airports are networks, information is increasingly networked, the T01 exhibit examines people as data, motion as trajectories and the symbiosis of virtual and actual.

Sample images and video from my contribution are below. Happy Canada Day!

frame0020.jpg frame0140.jpg frame0150.jpg frame0160.jpg
frame0170.jpg frame0190.jpg frame0210.jpg frame0310.jpg

watch video

Vimeo / Videos tagged processing

sesc paulista 23 06 07


sesc paulista 23 06 07

Cast: +zero

Vimeo / Videos tagged processing

sesc paulista 23 06 07


Daniel

Processing QRCode Library

qrcode

From: http://qrcode.sourceforge.jp/:

“QR Code is a two-dimensional barcode, used widely in Japan. The advantage of QR Code from well-known barcode is larger data capacity (more than 100 bytes, typically) and error correction.”

Thanks to an idea from Tom Igoe, I make a quick and dirty interface for Processing for QRCode decoding. The Pqrcode library page is here.

Also, qrcode images can be generated here.

Daniel

Processing QRCode Library

qrcode

From: http://qrcode.sourceforge.jp/:

“QR Code is a two-dimensional barcode, used widely in Japan. The advantage of QR Code from well-known barcode is larger data capacity (more than 100 bytes, typically) and error correction.”

Thanks to an idea from Tom Igoe, I make a quick and dirty interface for Processing for QRCode decoding. The Pqrcode library page is here.

Also, qrcode images can be generated here.

New recursive structure

The first song, ‘The Power of Independent Trucking’ by Big Black, the second, ‘Sporting Life’, by Young Marble Giants.

YouTube absolutely destroyed the quality. I’d recommend you watch it on Vimeo where it looks slightly better:

Render Test 2: Structure 2 from njmcgee on Vimeo

(Vimeo won’t embed in a wordpress.com hosted blog (and doesn’t look that good anyway). I’ll be thinking about a way to get better quality video embedded. Any ideas? Let me know.)

Best results so far with heavy rock music. Moments of real rhythm, and surprisingly dynamic visual response. The exponential relationship between element size and fft values allows individual legs to be simultaneously effected by their corresponding spectrum band with great effect. I will probably tone things down - reduce the number of elements and better control over the overall scale. Oh, and for some reason one of the legs gets stuck…

Thankfully, as I continue to bash out ‘programs’, complex visual outcomes I have not, or could not have planned are emerging.
As I tip toe towards generativity I’m wondering how to approach a ‘final’ piece - considering the unique movements, forms and reactions each time sketch is run.

Vimeo / Videos tagged processing

Render Test 2: Structure 2


Render Test 2: Structure 2

Another rough sketch. Best results so far with heavy music.

Cast: njmcgee