SM1205 Interactivity Topic 09: Motion Tracking Part I Spring 2010SCM-CityU1.

Slides:



Advertisements
Similar presentations
Introduction to Macromedia Director 8.5 – Lingo
Advertisements

INTRODUCTION TO ADOBE FLASH CS4
CS 206 Introduction to Computer Science II 09 / 05 / 2008 Instructor: Michael Eckmann.
1What is the Stage. 2How do you open a panel in Flash
JavaScript Arrays Arrays allow us to store lists of items Arrays are created with square brackets:  var a = []; // an empty array  var b = [10]; // an.
CS 106 Introduction to Computer Science I 12 / 04 / 2006 Instructor: Michael Eckmann.
SM1205 Interactivity Topic 01: Introduction Spring 2012SCM-CityU1.
SM1205 Interactivity Topic 10: Motion Tracking Part II Spring 2010SCM-CityU1.
1 Flash Actionscript Event Handling. 2 Event Handling Right now we know all about variables lets go back to our text input/output example: Suppose we.
SM1205 Interactivity Topic 01: Introduction Spring 2010SCM-CityU1.
SM1205 Interactivity Topic 05: Properties and Events Part II Spring 2011SCM-CityU1.
1 Flash Actionscript Animation. 2 Introduction to Sprites We will now look at implementing Sprites in Flash. We should know enough after this to create.
Macromedia Flash 5 Intermediate Level Course. Animation Basics Playhead In-Between Frames Keyframe Current Frame Number Framerate Current Time Frames.
1 Flash Actionscript Adding Interactive Actions Variables.
SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.
Assignment 3 Topic: Webcam Interaction with Motion Requirements – Use motion tracker – Interact with motion – Have music/sound elements – Meaningful system.
CS 106 Introduction to Computer Science I 02 / 28 / 2007 Instructor: Michael Eckmann.
SM1205 Interactivity Topic 08: Sound Interaction Spring 2011SCM-CityU1.
SM1205 Interactivity Topic 01: Introduction Spring 2011SCM-CityU1.
SM1205 Interactivity Topic 11: Motion Tracking Part III Spring 2010SCM-CityU1.
SM1205 Interactivity Topic 10: Motion Tracking Part II Spring 2011SCM-CityU1.
1 Flash Programming Introduction Script Assist. 2 Course Description This course concentrates on the teaching of Actionscript, the programming language.
SM1205 Interactivity Topic 06: Iteration and Multiple Objects Spring 2010SCM-CityU1.
CS 106 Introduction to Computer Science I 04 / 30 / 2010 Instructor: Michael Eckmann.
Games and Simulations O-O Programming in Java The Walker School
© 2011 Delmar, Cengage Learning Chapter 8 Building Complex Animations.
Chapter 9 Introduction to ActionScript 3.0. Chapter 9 Lessons 1.Understand ActionScript Work with instances of movie clip symbols 3.Use code snippets.
JS Arrays, Functions, Events Week 5 INFM 603. Agenda Arrays Functions Event-Driven Programming.
MrsBillinghurst. net A2 Computing A2 Computing Projects Game Animation in Pascal.
by Chris Brown under Prof. Susan Rodger Duke University June 2012
Exercise : Animated Navigation Structure in Flash 1.Develop Answers to “What did you learn in ITI program?” “What do you have to offer?” “What are your.
Lehigh University Introduction to Flash MX Sharmeen Mecklai.
My First ACCESSIBLE Flash Movie. Course notes Detailed course notes, a printable copy of my slides, and all the samples shown today can be downloaded.
1 SEG3120 Analysis and Design for User Interfaces Flash Anis Zarrad Parallel Simulations and Distributed Systems (PARADISE) Research Laboratory SITE, University.
Chapter 11 Adding Sound and Video. Chapter 11 Lessons 1.Work with sound 2.Specify synchronization options 3.Modify sounds 4.Use ActionScript with sound.
BIM211 – Visual Programming Objects, Collections, and Events 1.
© 2012 Adobe Systems Incorporated. All Rights Reserved. Copyright 2012 Adobe Systems Incorporated. All rights reserved. ® INTRODUCTION TO FLASH ANIMATION.
® Copyright 2008 Adobe Systems Incorporated. All rights reserved. ® ® 1 INTRODUCTION TO ADOBE FLASH CS3.
® Copyright 2010 Adobe Systems Incorporated. All rights reserved. ® ® 1 INTRODUCTION TO ADOBE FLASH PROFESSIONAL CS5.
Nonvisual Arrays and Recursion by Chris Brown under Prof. Susan Rodger Duke University June 2012.
AD 305 Electronic Visualization I : School of Art and Design : University of Illinois at Chicago : Spring 2007 Intro to Action Script 2 "The games of a.
Addison Wesley is an imprint of © 2010 Pearson Addison-Wesley. All rights reserved. Chapter 7 The Game Loop and Animation Starting Out with Games & Graphics.
SM1205 Interactivity Topic 06: Iteration and Multiple Objects Spring 2012SCM-CityU1.
Programming games Show your version of Bo the dog. Start cannonball Preview: video, audio work session (cannonball) Homework: Cannonball with ball in a.
Introduction to Flash Animation CS 318. Topics Introduction to Flash and animation The Flash development environment Creating Flash animations  Layers.
CS 106 Introduction to Computer Science I 04 / 25 / 2008 Instructor: Michael Eckmann.
CISC 110 Day 5 OOP Part 2. 2 Outline The Display List Display List Classes Adding and Removing Objects Adding Symbol Instances Managing Object Depths.
© 2011 Delmar, Cengage Learning Chapter 10 Using ActionScript to Enhance User Experience.
1 A Basic Introduction to Flash. Outline What is a flash? Macromedia Flash MX 2004 Flash concepts Flash Demos Conclusion Additional help 2.
SCRIPT PROGRAMMING WITH FLASH Introductory Level 1.
© 2011 Delmar, Cengage Learning Chapter 11 Adding Sound and Video.
Flash 1. Document Properties Set frame rate and dimensions of project Set frame rate and dimensions of project (default width=550 and height=400)
Creating a Simple Game in Scratch Barb Ericson Georgia Tech May 2009.
SM1205 Interactivity Topic 09: Motion Tracking Part I Spring 2012SCM-CityU1.
111 State Management Beginning ASP.NET in C# and VB Chapter 4 Pages
 Movieclip symbols are reusable pieces of flash animation  consisting usually of one or more graphic/button symbols  thus they are flash movies within.
Topic 02: Introduction to ActionScript 3.0
Layers in Adobe After Effect
Flash Interface, Commands and Functions
Introduction to Events
Learning Java with Alice 3.0 Game Design Kathy Bierscheid
INTRODUCTION TO ADOBE FLASH CS4
Event loops.
More programming with "Processing"
Event loops 17-Jan-19.
Creating a Simple Game in Scratch
Exercise : Animated Navigation Structure in Animate (= Flash)
Event loops.
Event loops 19-Aug-19.
Presentation transcript:

SM1205 Interactivity Topic 09: Motion Tracking Part I Spring 2010SCM-CityU1

Demos First Snow sweeper by PlaydoCAM (link)link – Make sure webcam is ready Spring 2010SCM-CityU2

Demos First Eyekanoid by PlaydoCAM (link)link Spring 2010SCM-CityU3

Demos First PlaydoJam by PlaydoCAM (link)link Spring 2010SCM-CityU4

How Come? Reason: you are watched by computers via webcams Computers know your movement – Relying on technology, called motion tracking Spring 2010SCM-CityU5

Motion Tracking (wiki)wiki To locate a moving object or several ones – Output: the location of moving objects How can a program know if there are moving objects and where they are? Idea: use special image processing algorithms to get regions of moving objects – Many algorithms exist for this purpose Spring 2010SCM-CityU6

Solution I Find the difference between current frame and a given background – Disadvantage: background must be static & fixed Disallow camera movement Disallow changes of lighting condition Current frame Static background

Solution II Find difference between consecutive frames – E.g., difference between frames i and i+1 – A more flexible solution! Spring 2010SCM-CityU8 Current frame Previous frame Note: white colors correspond to boundary of moving objects

Main References Motion tracking in ActionScript – Ostrich Flash (link)link – Motion tracker from soulwire (link)link – Play with demos in W drive Spring 2010SCM-CityU9

Motion Tracking Library In cityu.scm package (developed by Hongbo Fu) – Webcam class An easy-to-use wrapper for webcam access – MotionTracker class Main class for motion tracking – MotionTrackerSettingUI class User interface for parameter settings – MotionTrackerButton class Use motion to trigger button clicking Spring 2010SCM-CityU10 Note : classes are just special data types, which usually have their own properties & methods/functions

SM1205 Interactivity Webcam Class Spring 2010SCM-CityU11

Webcam Class Allow you to access streaming video from webcam Original webcam source has size 320 x 240 But you can scale up to any size, e.g., 640 x 480 Spring 2010SCM-CityU12

Webcam Class To use Webcam class, you first need to tell Flash where the corresponding source code (Webcam.as) is – Under cityu/scm/ folder This is done by import statement Make sure your Flash application is under the same folder as cityu folder Spring 2010SCM-CityU13 import cityu.scm.Webcam; // import Webcam class Note: those folders contain all necessary source code for motion tracking

Webcam Class Initializing webcam takes time Webcam class provides a special event type, called Webcam.READY – To make sure you’re always using an initialized webcam Only within event listener for this event, you can guarantee webcam is ready to use Spring 2010SCM-CityU14

Webcam Class Basic usage of Webcam class Spring 2010SCM-CityU15 import cityu.scm.Webcam; // import Webcam class // create a webcam with size 400 x 300 var webcam: Webcam = new Webcam (400, 300); // webcam will dispatch READY event when the webcam is ready to use webcam.addEventListener( Webcam.READY, onCameraReady); function onCameraReady(e:Event): void { addChild(webcam); } import cityu.scm.Webcam; // import Webcam class // create a webcam with size 400 x 300 var webcam: Webcam = new Webcam (400, 300); // webcam will dispatch READY event when the webcam is ready to use webcam.addEventListener( Webcam.READY, onCameraReady); function onCameraReady(e:Event): void { addChild(webcam); }

Default Values for Function Parameters You can define functions with default values for function parameters – Advantage: you don’t need to pass all values every time when using functions E.g., function definition of Webcam usage of Webcam Spring 2010SCM-CityU16 function Webcam(w:Number=640, h:Number=480) {... } function Webcam(w:Number=640, h:Number=480) {... } // create a webcam with size 640 x 480 (default size) var webcam:Webcam = new Webcam() ; // equivalent: Webcam(640, 480) // create a webcam with size 640 x 480 (default size) var webcam:Webcam = new Webcam() ; // equivalent: Webcam(640, 480)

Webcam Class Like other symbol instances, Webcam instances provide a lot of display properties – E.g., Spring 2010SCM-CityU17 webcam.alpha = 0.4; webcam.x = 200; webcam.y = 30;

Webcam Class Use Webcam’s sendToBack method to avoid occlusion of stage objects by webcam – webcam.sendToBack(); Spring 2010SCM-CityU18

SM1205 Interactivity MotionTracker Class Spring 2010SCM-CityU19

MotionTracker Class Default visualization for tracked regions Able to track multiple objects Each tracked object can have its own clipping region – Motion happened outside clipping region will be ignored Spring 2010SCM-CityU20 Clipping regions

Simple Usage of MotionTracker Step 1: import MotionTracker class – I.e., import cityu.scm.MotionTracker; Step 2: initialize a MotionTracker object – E.g., Spring 2010SCM-CityU21 var tracker:MotionTracker=new MotionTracker(webcam);

Spring 2010SCM-CityU22

Center of Tracked Region Use ColorTracker’s properties – trackX: Number; trackY: Number Center of tracked region With respect to top-left corner of webcam (instead of stage) – E.g., tracker.trackX Spring 2010 SCM-CityU23 (0, 0) (trackX, trackY)

Spring 2010SCM-CityU24 trackX = 10 trackY = 20

Class Exercise Create a symbol instance on stage Make this shape follow center of moving region – Use trackX and trackY Spring 2010SCM-CityU25

Coordinate System Transformation Use DisplayObject’s methods – localToGlobal, globalToLocal Stage to Webcam – var ptWebcam:Point = webcam.globalToLocal(ptStage); Webcam to Stage – var ptWebcam:Point = webcam.localToGlobal(ptStage); Spring 2010SCM-CityU26

Hide Default Visualization Use hideTrackedArea and hideTrackedCenter methods – E.g., Spring 2010SCM-CityU27 tracker.hideTrackedArea(); tracker.hideTrackedCenter();

Collision with Tracked Regions Use MotionTracker’s methods – hitTestObject E.g. tracker.hitTestObject(cursor); – hitTestPoint E.g., tracker.hitTestPoint(cursor.x, cursor.y, true); You can also use isTracked method to perform collision detection only when object is tracked – isTracked return true if object is tracked; false, otherwise. Spring 2010SCM-CityU28

Collision with Tracked Regions Usage of MotionTracker’s hitTestObject is very similar to that of DisplayObject’s Only difference: order matters – Wrong: cursor.hitTestObject(tracker); – Correct: tracker.hitTestObject(cursor); Spring 2010SCM-CityU29

Collision with Tracked Regions Usage of MotionTracker’s hitTestPoint is exactly the same as that of DisplayObject’s – hitTestPoint checks if a given point is within regions of pixels with white color Spring 2010SCM-CityU30

Example: Shape Sweeper Spring 2010SCM-CityU31

Class Exercise Create a large number of circles on the stage and store them into an array for future use – Random size – Random position – Random opacity Tips: – addChild – push Spring 2010SCM-CityU32

Webcam Interaction For each shape which falls into tracked region, we remove it from stage – Use removeChild method – Need for loop How about corresponding elements in the array? – How to remove them from the array? Spring 2010SCM-CityU33

Webcam Interaction Removing array elements one by one in a for loop is tricky – Consider the following example – Can you expect the result? Array length and possibly element indices change over time/iterations Spring 2010SCM-CityU34 var a:Array = [2, 3, 5, 7, 9]; for (var i:uint = 0; i < a.length; i++) { a.pop(); // pop the last element of the current array } trace(a); var a:Array = [2, 3, 5, 7, 9]; for (var i:uint = 0; i < a.length; i++) { a.pop(); // pop the last element of the current array } trace(a);

Webcam Interaction Instead of removing array elements one by one, let’s reset the array to empty when all shapes have been removed from the stage – shapes = []; To achieve this, – Use numOfShapesOnStage variable to maintain the number of shapes left on the stage – Use contains method to check if array element shapes[i] is still on the stage if (contains(shapes[i])) {…} Spring 2010SCM-CityU35