第一節課
這節課用了新的設備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);
}
沒有留言:
張貼留言