topical media & game development
graphic-processing-site-examples-Topics-Effects-Wormhole-Wormhole.pde / pde
Wormhole Demo Effect
by luis2048.
A funnel-shaped hole sucking its texture to the middle.
The effect is accomplished like the tunnel effect but with
a 15 x 15 texture and static lookup table. The texture is shifted
and mapped to the static lookup table.
PImage wormImg, wormTexture;
int[] reg = new int[15];
void setup() {
size(640, 360);
noSmooth();
// Reference image used to transpose texture
wormImg = loadImage("wormhole.png");
wormImg.resize(width, height);
wormImg.loadPixels();
// Texture image array
wormTexture = loadImage("texture.gif");
wormTexture.loadPixels();
}
// Moves the bottom row of pixels to the top and shifting remaining pixels 1 over
void shiftup() {
for (int k = 0; k < 15; k++) {
reg[k] = wormTexture.pixels[k];
}
for (int k = 15; k < 225; k++) {
wormTexture.pixels[k-15] = wormTexture.pixels[k];
}
for (int k = 0; k < 15; k++) {
wormTexture.pixels[k+210] = reg[k];
}
}
// Moves left column of pixels to the right and shifting remaining pixels 1 over
void shiftright() {
for(int k = 0; k < 15; k++) {
reg[k] = wormTexture.pixels[15*k+14];
for(int i = 14;i > 0; i--) {
wormTexture.pixels[15*k+i] = wormTexture.pixels[15*k+(i-1)];
}
wormTexture.pixels[15*k] = reg[k];
}
}
void draw() {
// Load pixel data array
loadPixels();
// Loop through all pixels
for (int i = 0; i < pixels.length; i++){
// Map texture to wormhole in a bit shift blue
pixels[i] = wormTexture.pixels[constrain(wormImg.pixels[i] & 0xFF , 0 , 224)];
}
updatePixels();
shiftright();
shiftup();
}
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.