Wednesday, April 27, 2011

Kaleidoscope Patterns

Previously, I mentioned that I will be adding a pattern from my design book. I've scrapped that and have chose to use other objects as my kaleidoscope pattern, which includes my collection of nail polish, colored pens and Pyssla beads from Ikea.





Here are the confirmed graphics:





Saturday, April 23, 2011

VGA Splitter

During my Critique 2 session with Mr Kok Yoong, he advised me to incorporate a different method of output apart from a simple projection on the wall. So, I've decided to output my work through multiple computer screens.

The reason why I chose this method of output was to enable the users to go through a unique psychedelic experience in a bigger amount.

I bought a display/VGA splitter from LowYat in order to create the output.



There are eight slots all together, so I'm hoping to get my hands on eight monitors and make full use of it.

Wednesday, April 20, 2011

Updated Working File





I've split each kaleidoscope design into three scenes. Cheers to Hafizadt for helping me with the action script!

Images are not updated to the ones that I planned on using due to trouble I came across scripting. But here is the working file so far:

Download .fla/.swf


Planning on integrating it with the Kinekt soon!

Tuesday, April 19, 2011

Motion Detection

Last Thursday, I consulted with Mr Hafiz on equipment for motion detection. He recommended the Kinekt as it'll be easier to program. I managed to rent one from him.



I've tried a test run with the Kinekt by using the program FAAST & Open NI; very pleased with the simplicity.

Content Development #3

Here are some of the images that I will be using for the patterns of my kaleidoscope:



This photo was two years ago of my rainbow-colored umbrella. It's no longer with me anymore as it didn't function properly. I realize the image isn't hi-res as I had gotten this off my Facebook account. I'll try to dig through my photo album to find the original picture.




This pattern is taken from my design book called 'Culturatextura'.






This is the pattern of my Ikea bedsheets.

Monday, April 11, 2011

Coding



The current existing code involves interaction with keypad (such as controlling the rotation speed, adding more tiles to the kaleidoscope, toggle/flip tiles, etc).



import flash.display.BitmapData;
import flash.geom.Matrix;


_quality = "BEST";
var hsize = 500;
var vsize = 500;
var diag:Number = Math.sqrt(2*hsize*hsize)*0.62;
var map:BitmapData = new BitmapData(hsize, vsize, true, 0x00000000);
var mapHolder:MovieClip = createEmptyMovieClip("mapHolder", 1);
var code:MovieClip;
mapHolder.attachBitmap(map, 0);
var image:BitmapData = BitmapData.loadBitmap("image");
var stampImage:BitmapData = new BitmapData(image.width, image.height, false);
stampImage.draw(image, new Matrix(0.5, 0, 0, 0.5, 0, 0), null, "normal", null, true);
stampImage.draw(image, new Matrix(-0.5, 0, 0, 0.5, image.width, 0), null, "normal", null, true);
stampImage.draw(image, new Matrix(0.5, 0, 0, -0.5, 0, image.height), null, "normal", null, true);
stampImage.draw(image, new Matrix(-0.5, 0, 0, -0.5, image.width, image.height), null, "normal", null, true);
image.dispose();

var rotate1:Boolean = false;
var rotate2:Boolean = false;
var rotate3:Boolean = false;
var flip:Boolean = true;
var singleview:Boolean = true;
var slice:MovieClip = createEmptyMovieClip("slice", 0);
slice._visible = false;
var slices:Number = 12;
var angle = Math.PI/slices;
var nudge = 0.009;
var rotspeed1 = 0.007;
var rotspeed2 = -0.003;
var rotspeed3 = -0.005;
var sclfact = 0;
var rot:Number = 0;
var r:Number = 0;
var r2:Number = 0;
var sh1:Number = 0;
var sh2:Number = 0;
var scl:Number = 1;
var m:Matrix = new Matrix();
Key.addListener(this);



function onKeyDown() {
switch (Key.getCode()) {
case Key.UP :
scl *= 1.03;
break;
case Key.DOWN :
scl *= 0.96;
break;
case Key.LEFT :
r -= 0.01;
break;
case Key.RIGHT :
r += 0.01;
break;
case 187 :
//+
slices += 2;
angle = Math.PI/slices;
break;
case 189 :
//-
if (slices>4) {
slices -= 2;
angle = Math.PI/slices;
}
break;
case 49 :
//1
rotate1 = !rotate1;
break;
case 50 :
//2
rotate2 = !rotate2;
break;
case 51 :
//3
rotate3 = !rotate3;
break;
case 52 :
//4
flip = !flip;
break;
case 53 :
//5
sh1 += 0.04;
break;
case 54 :
//6
sh1 -= 0.04;
break;
case 55 :
//7
sh2 += 0.04;
break;
case 56 :
//8
sh2 -= 0.04;
break;
case 78 :
//n
sclfact += 0.01;
break;
case 77 :
//m
sclfact -= 0.01;
break;
case 48 :
sclfact = 0;
break;
case 81 :
//q
rotspeed1 += 0.001;
break;
case 87 :
//w
rotspeed1 -= 0.001;
break;
case 65 :
//a
rotspeed2 += 0.001;
break;
case 89 :
//q
rotspeed3 += 0.001;
break;
case 88 :
//w
rotspeed3 -= 0.001;
break;
case 69 :
rotspeed1 = 0;
break;
case 68 :
rotspeed2 = 0;
break;
case 67 :
rotspeed3 = 0;
break;
case 83 :
//s
rotspeed2 -= 0.001;
break;
}
}



function onEnterFrame() {
if (rotate1) {
r += rotspeed1;
}
if (rotate2) {
r2 -= rotspeed2;
}
if (rotate3) {
rot += rotspeed3;
}
for (var i = 0; i