2016年5月12日 星期四

體感互動week12 02160473賴緯漢

期末作品:射擊遊戲

今日複習
找到手的節點
不過設的數據太大了
所以位置怪怪的















程式碼:
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();
  //for(int i=0;i<userList.length;i++)
  //    int userID = userList[i];
  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,600,400);
  int [] userList = openni.getUsers();
  int [] array={1,2,3};
 
  for(int i=0;i<10;i++){
   
  }
 
 /*for(int i=0;i<userList.length;i++){
      int userID = userList[i];
 }*/

  PVector pos = new PVector(0,0,0);
  PVector hand1 = new PVector(0,0,0);
  PVector hand2 = new PVector(0,0,0);
  PVector head = new PVector(0,0,0);
  for(int userID : userList){
    openni.getJointPositionSkeleton(userID,SimpleOpenNI.SKEL_LEFT_HAND,pos);
    openni.convertRealWorldToProjective(pos,hand1);//把pos的值給hand1(偵測現實中的左手)
    fill(0,0,255);ellipse(hand1.x,hand1.y,50,50);
    openni.getJointPositionSkeleton(userID,SimpleOpenNI.SKEL_RIGHT_HAND,pos);
    openni.convertRealWorldToProjective(pos,hand2);//把pos的值給hand2(偵測現實中的右手)
    fill(0,0,255);ellipse(hand2.x,hand2.y,50,50);
    openni.getJointPositionSkeleton(userID,SimpleOpenNI.SKEL_HEAD,pos);
    openni.convertRealWorldToProjective(pos,head);//把pos的值給head(偵測現實中的頭)
    fill(0,0,255);ellipse(head.x,head.y,50,50);
  }
  //ellipse(pos.x,pos.y,50,50);
  //println(pos);
}
void onNewUser(SimpleOpenNI curContext,int userId){
  openni.startTrackingSkeleton(userId);
}


沒有留言:

張貼留言