Kameratracking og hacket-keyboard Kaspar Rosengreen Nielsen kaspar@interactivespaces.net Kameratracking Vi skal nu se på, hvordan vi kan lave simpel kameratracking med Flash. Først tager vi lige et par eksempler på, hvad man kan med kameratracking.
Eksempel: Vidensbrønden Vidensbrønden er en installation på Møllevangsskolen, der kan bruges i undervisningen. Kører et program med forskellige Flash-spil, som er koblet op på kameratracking. Eleverne kan interagere med spillene vha. kroppen. Eksempel: EyeToyPlay Playstation spil, hvor man interagerer med spillet vha. et webcam. Man bruger sin krop til at ramme modstandere og lignende.
Kinect Kinect er et kamera der kan kobles til XBox. Gør det muligt at integere direkte med konsollen uden kontrollere. Kameratracking Man kan tracke på forskellige parametre. Brightness - f.eks. mørke områder på lys baggrund (eller omvendt). Background - baggrunden læres og afvigelser trackes (f.eks. ichat på Mac). Motion - bevægelse trackes. Color - bestemte farver trackes. Shape - bestemte former trackes. Oplagt til tracking af flere inputs på én gang. Det gælder generelt at tracking kan være lysfølsomt, så det kræver kontrollerede forhold for, at det fungerer.
Kameratracking Vi vil lave kameratracking direkte i Flash baseret på et lille bibliotek lavet af en fyr kaldet Justin Windle: http://blog.soulwire.co.uk/flash/actionscript-3/webcammotion-detection-tracking/ Biblioteket kan downloades her: http://blog.soulwire.co.uk/wp-content/plugins/downloadmonitor/download.php?id=motiontracker.zip Der et eksempel med, hvor man kan stille på forskellige parametre for at forbedre trackingen. Jeg vil gennemgå et simpelt eksempel så referer gerne til eksemplet for alle mulighederne i biblioteket. Kameratracking Biblioteket tracker bevægelse ligesom, når man vifter med hænderne i EyeToyPlay. MotionTrackeren returnerer et rektangulært område, hvor der har været bevægelse. Dvs. x, y, width og height. Er derfor ikke så velegnet til præcis tracking af multiple inputpunkter. Det kan dog bruges til simpel presence detection. F.eks. til at aktivere lyd eller animation når nogen bevæger sig ind foran kameraet.
Kodeeksempel Vi placerer koden i frame 1 på scenen. Først forbinder vi til webkameraet: var cam:camera = Camera.getCamera(); cam.setmode(stage.stagewidth, stage.stageheight, stage.framerate); Herefter laver vi et video objekt og viser kamerainput (spejlvendt): var vid:video = new Video(stage.stageWidth, stage.stageheight); vid.scalex *= -1; // Spejlvend video vid.x = stage.stagewidth; vid.attachcamera(cam); addchild(vid); Kodeeksempel Vi laver nu en cursor (fra biblioteket), der kan flyttes rundt, når der bliver tracket: var cursor_mc:cursor = new Cursor(); addchild(cursor_mc); Vi skal nu importere biblioteket: import com.soulwire.media.motiontracker; Vi laver nu vores motion tracker, der tager vores webcam som input: var motiontracker:motiontracker = new MotionTracker(vid); motiontracker.flipinput = true; // Spejlvend input
Kodeeksempel Til sidst starter vi med at tracke på EnterFrame og flytter cursoren mod området med bevægelse: addeventlistener(event.enter_frame, function(e:event):void { motiontracker.track(); cursor_mc.x += ((motiontracker.x)-cursor_mc.x)/10; cursor_mc.y += ((motiontracker.y)-cursor_mc.y)/10; }); Hvis vi bare vil undersøge, om der er bevægelse, kan vi bruge funktionen: if (motiontracker.hasmovement) {... } Hent koden I kan hente koden her: krosweb.dk/ct.zip
Hack et keyboard Hack et keyboard
Hack et keyboard Det er muligt at teste i et vilkårligt skriveprogram, da der bare genereres helt almindelige tastetryk. Det er derfor nemt at koble sammen med Flash. Der er mange måder at skabe kontakt på...
Finger Touch DJ SpinTheBottle
Vreo Taske