2016年5月5日 星期四

02162411_劉永健_Week11

第一節課


這節課用了新的設備xbox360,還需要裝如下的drive:

Kinect SDK 1.8



FAAST


SimpleOpenNI


Processing 2.2.1 32位元版

Kinect for Windows Developer Toolkit也是必要的,裡面有很


多現成的程式、範例可以體驗



建模程式



第二節課

建模測試




匯出.stl檔後匯入meshlab裡


體感遊戲測試



第三節課


頭頂足球

偵測到人的頭,就畫出一個球




SimpleOpenNI openni;

void setup(){

  size(600,400);

  openni = new SimpleOpenNI(this);

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);

}


足球


偵測到人的左腳,就畫出一個球

SimpleOpenNI openni;

void setup(){  

size(600,400);  

openni = new SimpleOpenNI(this);

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 = 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);

}


全部偵測策程式碼

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 conf=show.getJointPositionSkeleton(userId,SimpleOpenNI.SKEL_HEAD,pos1);
     ellipse(xpos(pos),ypos(pos),50,50);
     conf = show.getJointPositionSkeleton(userId,SimpleOpenNI.SKEL_LEFT_FOOT,pos);
     ellipse(xpos(pos1),ypos(pos1),50,50);
     conf = show.getJointPositionSkeleton(userId,SimpleOpenNI.SKEL_RIGHT_FOOT,pos2);
     ellipse(xpos(pos2),ypos(pos2),50,50);
     println(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);
}


沒有留言:

張貼留言