Archive for June, 2007

Voronoi Video

Friday, June 29th, 2007

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

Gallery interface coded in processing

Friday, June 29th, 2007


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

More on Voronoi…

Friday, June 29th, 2007

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.

Opening July 1st. . .

Thursday, June 28th, 2007

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

sesc paulista 23 06 07

Thursday, June 28th, 2007


sesc paulista 23 06 07

Cast: +zero

Processing QRCode Library

Tuesday, June 26th, 2007

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

Tuesday, June 26th, 2007

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.

Render Test 2: Structure 2

Tuesday, June 26th, 2007


Render Test 2: Structure 2

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

Cast: njmcgee

Processing Visual Notebook, Continued

Monday, June 25th, 2007

Some more shots of projects I sketched while in Ben Fry’s Processing class:

An experiment in 3D particle systems generated from video in 3D, which ran surprisingly fast — something I definitely hope to develop.

Playing with ways of quickly forming 3D geometries; in this case, just doing a quick experiment with Perlin Noise as a way of generating coordinates (or one way of doing it, I should say, as there are many).

And heck, even extremely basic, fundamental code starts to become a fun exercise, like a mind workout for 3D translation and quick coding:

Try to stop looking at the rotating rect and get some work done, Peter.

As we got into the later days, I was really interested to watch as my colleague’s work tended to get more painterly and organic. The ability to do this quickly is really encouraging.

I’ll definitely be debriefing with some information and code examples soon — probably after I develop more of what I was thinking about while at the workshop. But I can’t say enough about how great it was to get to work with Ben and absorb his unique insight into his tool and artmaking in general. It’s really made me want to devote a great deal of new time to Processing — and has given me some sense of the best directions to take that work. Still on the road here (hello, airport lounge!); more soon.


© Peter Kirn for Create Digital Motion, 2007. |
Permalink |
No comment

Add to del.icio.us

Want more on these topics ? Browse the archive of posts filed under News.

Openframeworks Workshop in Berlin

Monday, June 25th, 2007

Wenn ich ein Laptop hätte und am Wochenende nicht zum Fusion fahren würde dann könnte ich hierhin gehen und mir endlich mal anschauen was man mit Openframeworks so alles machen kann. Hab’s zwar mal auf meinem Rechner installiert aber bin dann doch nie so Recht dazu gekommen mich eingehender damit zu beschäftigen.

Gesture Shmesture

Saturday, June 23rd, 2007
The boss has been letting me work on gesture recognition at work. I added to the self simplifying line so it accounts for when the user changes their drawing speed (just interpolate on the big gaps). This confuses the neural net less. But because my boss was greedy for more shapes I found other ways to recognise shapes heuristically.
  • Does the line cross over itself once? You’ve drawn a loop.
  • Does the line cross over itself twice? You’ve drawn a figure eight.
  • Is there low variance between angles along the line? You’ve drawn a straight line.
  • Is the starting point a short distance from the end point? You’ve drawn a circle (note that you have to force it to fail when someone draws a shape too small – otherwise just clicking the mouse is always a circle).
  • None of the above? Let’s hand it over to the neural net and see if we’ve got some other shape here.

So okay – you can get away with some really poor drawing, but what’s great about this is that you can get away with some really poor drawing! A game needs the feel that you lost because you’re bad at the game, not because the programmer didn’t make the effort to make gameplay comfortable. I’ll link to this game if and when it comes out.

Yoga postures with how-to animations
ASCII game
Darth Vader helmet art
OLED flexible transparent display
Game and Watch remakes
LOL Code
Scrambler Drawing Machine
Old Soviet arcade games
Midfield General feat. Noel Fielding – Midfielding video
Photosynth – image clever technology
IKEA ice cube straws trick
Wooden robot toys
3D printer site
Great Firewall of China – test the availability of your site in China
Falling Sand Java
Brain and Behaviour
Hello World on wheat field

OCR with perceptrons in Java
SWX data transter method for Flash
Flash file uploader
Saving jpg or png with Flash 8 revisited
Fast random lists of number for Flash
ITP Sensor workshop reports

[ +zero 20 06 07 ]

Saturday, June 23rd, 2007


[ +zero 20 06 07 ]

Cast: +zero

faceCloth_sur(ta)face

Friday, June 22nd, 2007


faceCloth_sur(ta)face

faceCloth_sur(ta)face is the latest installment on faceCloth, which runs on the MTUI multi-touch interface.

A collaboration with smallfly. See http://facecloth.prisonerjohn.com for more information.

Cast: prisonerjohn, smallfly

Metropolis Magazine

Friday, June 22nd, 2007

A nice article by Peter Hall about the IAC video wall is out in the June issue of Metropolis Magazine. The article mentions our work at ITP on the “most pixels ever” Processing library . . . which we will release soon for beta experimentation!