2016年5月12日 星期四

02160836_程玟綺, Week12,

步驟一:
先到120.125.70.53下載需要的檔案



















步驟二:
假如processing內建沒有SimpleOpenNI
我們可以手動把SimpleOpenNI拉到libraries

Documents ->Processing -> libraries















打老鼠
一、偵測手的部分有一顆球















import SimpleOpenNI.*;
SimpleOpenNI openni;
void setup(){
  size(600,400);
   openni = new SimpleOpenNI(this);
   openni.enableRGB();
   openni.enableDepth();
   openni.enableUser();
}
void draw(){
   openni.update();
   background(255);
   image(openni.userImage(),0,0,300,200);
   int [] userList = openni.getUsers();
   PVector pos = new PVector(0,0,0);
   for(int userID : userList){
     openni.getJointPositionSkeleton(userID,SimpleOpenNI.SKEL_LEFT_HAND,pos);
   }
   ellipse(pos.x,pos.y,50,50);
   println(pos);
}
void onNewUser(SimpleOpenNI curContext,int userId){
  openni.startTrackingSkeleton(userId);
}


二、偵測雙手跟頭都有球















import SimpleOpenNI.*;
SimpleOpenNI openni;
void setup(){
  size(600,400);
   openni = new SimpleOpenNI(this);
   openni.enableRGB();
   openni.enableDepth();
   openni.enableUser();
}
void draw(){
   openni.update();
   background(255);
   image(openni.userImage(),0,0,640,480);
   PVector pos = new PVector(0,0,0);
   int [] userList = openni.getUsers();
   for(int userID : userList){
     openni.getJointPositionSkeleton(userID,SimpleOpenNI.SKEL_LEFT_HAND,pos);
     openni.convertRealWorldToProjective(pos,pos);
     fill(0,0,255);ellipse(pos.x,pos.y,50,50);
     openni.getJointPositionSkeleton(userID,SimpleOpenNI.SKEL_RIGHT_HAND,pos);
     openni.convertRealWorldToProjective(pos,pos);
     fill(255,0,0);ellipse(pos.x,pos.y,50,50);
     openni.getJointPositionSkeleton(userID,SimpleOpenNI.SKEL_HEAD,pos);
     openni.convertRealWorldToProjective(pos,pos);
     fill(255,255,0);ellipse(pos.x,pos.y,50,50);
   }
   ellipse(pos.x,pos.y,50,50);
   println(pos);
}
void onNewUser(SimpleOpenNI curContext,int userId){
  openni.startTrackingSkeleton(userId);

}

三、成功做出打地鼠了














import SimpleOpenNI.*;
SimpleOpenNI openni;
void setup(){
  size(600,400);
   openni = new SimpleOpenNI(this);
   openni.enableRGB();
   openni.enableDepth();
   openni.enableUser();
   imgBG=loadImage("bg.png");
}
PImage imgBG; 
void draw(){
   openni.update();
   background(255);
   image(imgBG,0,0,640,480);
   image(openni.userImage(),0,0,64,48);
   PVector pos = new PVector(0,0,0), hand1 =new PVector(0,0,0), hand2 = new PVector(0,0,0);
   int [] userList = openni.getUsers();
   for(int userID : userList){
     openni.getJointPositionSkeleton(userID,SimpleOpenNI.SKEL_LEFT_HAND,pos);
     openni.convertRealWorldToProjective(pos,pos);
     fill(0,0,255);ellipse(pos.x,pos.y,50,50); hand1.set(pos);hand1.z=0;
     fill(0,0,255);ellipse(pos.x/10,pos.y/10,5,5);
     openni.getJointPositionSkeleton(userID,SimpleOpenNI.SKEL_RIGHT_HAND,pos);
     openni.convertRealWorldToProjective(pos,pos);
     fill(255,0,0);ellipse(pos.x/10,pos.y/10,5,5);
     fill(255,0,0);ellipse(pos.x,pos.y,50,50); hand2.set(pos); hand2.z=0;
     //openni.getJointPositionSkeleton(userID,SimpleOpenNI.SKEL_HEAD,pos);
     //openni.convertRealWorldToProjective(pos,pos);
     //fill(255,255,0);ellipse(pos.x,pos.y,50,50);
   }
   PVector mouse1=new PVector(mouseX,mouseY,0);
   if(PVector.dist(mouse1,hand1)<100|| PVector.dist(mouse1,hand2)<100){
   ellipse(pos.x,pos.y,200,200);
   }
   //println(pos);
}
void onNewUser(SimpleOpenNI curContext,int userId){
  openni.startTrackingSkeleton(userId);

}


沒有留言:

張貼留言