2016年5月12日 星期四

Week12 02132412_沈泓宇

這週繼續接觸學習Processing + Kinect + openNI的範例:

範例一:

程式碼:

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


範例二:


程式碼:

import SimpleOpenNI.*;

SimpleOpenNI openni;

void setup(){
  size(600,400);
  openni = new SimpleOpenNI(this);
  openni.enabledRGB();
  openni.enabledDepth();
  openni.enabledUser();
}

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.starTrackingSkeleton(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);
}


另外,因為一個偶然的原因,讓我知道了原來Kinect可以像Leap motion一樣,結合Unity引擎進行開發,這或許是一個好消息,因為期末作品也可以考慮用Unity來做。

Unity接入Kinect的步驟如下:

1、打開Unity:


2、按Ctrl + 9 打开asset store,然后搜索Kinect SDK:


3、點擊下載:


4、最後接入xbox按運行就成功了,雖然不知道這demo是幹什麼用的,還有一個綠色的球:


5、還有一個Kinect1.7的SDK,裡面的內容稍微有點不一樣,個人感覺這個更加直觀,可以直接偵測身體的動作:


沒有留言:

張貼留言