2016年5月5日 星期四

02160836_程玟綺, week11,

期末作品(跟林鈺倫同一組)

https://www.youtube.com/watch?v=TPwWl2HODAQ
我們想做的是,拳擊的遊戲



















下載的地方:120.125.70.53
(1)KinectSDK-v1.8-Setup
(2)MeshLab

open:
processing-2.2.1-windows32

先匯入需要的東西
(1)sketch
(2)import library
(3)add library
(4)SimpleOpenNI

















實作一:













import SimpleOpenNI.*;
SimpleOpenNI  openni;
void setup(){
  size(600,400);
  openni = new SimpleOpenNI(this);
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
}
void draw(){
  openni.update();
  image(openni.userImage(),0,0,600,400);
  //image(openni.depthImage(),0,240,320,240);
}

實作二:
(踢足球)
















import SimpleOpenNI.*;
SimpleOpenNI  openni;
void setup(){
  size(600,400);
  openni = new SimpleOpenNI(this);
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
}
void draw(){
  openni.update();
  image(openni.userImage(),0,0,600,400);
  for(int userId : openni.getUsers()){
   PVector pos = new PVector(0,0,0);
   float confidence = openni.getJointPositionSkeleton(
     userId,SimpleOpenNI.SKEL_HEAD,pos);
   ellipse(pos.x,pos.y,50,50);
   println(pos);
  }
}
void onNewUser(SimpleOpenNI openni,int userId){
  openni.startTrackingSkeleton(userId);
}



讓球可以出現在腳的位置















import SimpleOpenNI.*;
SimpleOpenNI  openni;
void setup(){
  size(600,400);
  openni = new SimpleOpenNI(this); 
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
}
float Xpos(PVector pos){
    return width/2 + pos.x*500/pos.z;
  }
  float Ypos(PVector pos){
    return height/2 - pos.y*500/pos.z;
  }
void draw(){
  openni.update();
  image(openni.userImage(),0,0,600,400);
  for(int userId : openni.getUsers()){
   PVector pos = new PVector(0,0,0);
   float confidence;
   //float confidence = openni.getJointPositionSkeleton(
   confidence = openni.getJointPositionSkeleton(
     userId,SimpleOpenNI.SKEL_LEFT_FOOT,pos);
   ellipse(Xpos(pos), Ypos(pos),50,50);
   println(pos);
  }
}
void onNewUser(SimpleOpenNI openni,int userId){
  openni.startTrackingSkeleton(userId);
}


當踢球時畫面會反紅












import SimpleOpenNI.*;
SimpleOpenNI  openni;
void setup(){
  size(600,400);
  openni = new SimpleOpenNI(this); 
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
}
float Xpos(PVector pos){
    return width/2 + pos.x*500/pos.z;
  }
  float Ypos(PVector pos){
    return height/2 - pos.y*500/pos.z;
  }
void draw(){
  openni.update();
  image(openni.userImage(),0,0,600,400);
  for(int userId : openni.getUsers()){
   PVector pos = new PVector(0,0,0), pos1 = new PVector(0,0,0),pos2 = new PVector(0,0,0);
   float confidence;
   //float confidence = openni.getJointPositionSkeleton(
   confidence = openni.getJointPositionSkeleton(
     userId,SimpleOpenNI.SKEL_LEFT_FOOT,pos1);
   ellipse(Xpos(pos1), Ypos(pos1),50,50);
   print("Foot: " + confidence);
   confidence = openni.getJointPositionSkeleton(
     userId,SimpleOpenNI.SKEL_HEAD,pos); 
   ellipse(Xpos(pos), Ypos(pos),50,50);
   confidence = openni.getJointPositionSkeleton(
     userId,SimpleOpenNI.SKEL_RIGHT_FOOT,pos2); 
   ellipse(Xpos(pos2), Ypos(pos2),50,50);
   println(abs(pos1.y-pos2.y));
   if(confidence>0.6 && abs(pos1.y-pos2.y)>100) {fill(255,0,0,128); rect(0,0,600,400);}
}
}
void onNewUser(SimpleOpenNI openni,int userId){
  openni.startTrackingSkeleton(userId);
}

沒有留言:

張貼留言