第十二週課程:打老鼠
Week12:FUCK RAT
第一節課(準備)
1. 先下載並安裝 sdk 以及 KinectDeveloperToolkit

2.安裝完成
3.出了些問題,所以要去老師電腦下載
4.下載完裝到C:\Users\S405\Desktop\processing-
2.2.1\modes\java\libraries 解壓就好
*要先關掉在打開才會有用喔
5.測試器材是否正常
import SimpleOpenNI.*;
SimpleOpenNI show;
void setup()
{
size(640,480);
show=new SimpleOpenNI(this);
show.enableRGB();
show.enableDepth();
}
void draw()
{
show.update();
image(show.rgbImage(),0,0,320,240);
image(show.depthImage(),0,240,320,240);
}
第二節課(偵測左手)
import SimpleOpenNI.*; 匯入openni
SimpleOpenNI show;
void setup() 初始化
{
size(640, 480);
show=new SimpleOpenNI(this);
show.enableRGB();
show.enableDepth();
show.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()
{
show.update();
background(255);
image(show.userImage(), 0, 0, 640, 480);
int [] userlist=show.getUsers();
PVector pos = new PVector(0, 0, 0);
for (int userId : show.getUsers ()) 找左手
{
show.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_LEFT_HAND, pos);
}
ellipse(xpos(pos), ypos(pos), 50, 50); 畫圈圈
}
void onNewUser(SimpleOpenNI curContext, int userId) 很重要 要記得增加新的user
{
curContext.startTrackingSkeleton(userId);
}
第三節課(手、投)
1.將第二節課的偵測左手
增加 其他手跟頭
for (int userId : show.getUsers ())
{
show.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_LEFT_HAND, pos); 左手
show.convertRealWorldToProjective(pos,pos);
fill(0,0,0);ellipse(pos.x,pos.y,50,50);
show.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_RIGHT_HAND, pos);
fill(255,255,0);ellipse(pos.x,pos.y,50,50);右手
show.convertRealWorldToProjective(pos,pos);
show.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_HEAD, pos);
show.convertRealWorldToProjective(pos,pos);頭
fill(255,0,255);ellipse(pos.x,pos.y,50,50);
}
2.增加增測點以及優化
for (int userId : show.getUsers ())
{
show.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_LEFT_HAND, pos);
show.convertRealWorldToProjective(pos,pos);
fill(0,0,0);ellipse(pos.x,pos.y,50,50); hand1.set(pos); hand1.z=0;
fill(0,0,0);ellipse(pos.x/10,pos.y/10,5,5);
show.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_RIGHT_HAND, pos);
show.convertRealWorldToProjective(pos,pos);
fill(0,0,0);ellipse(pos.x,pos.y,50,50); hand2.set(pos); hand2.z=0;
fill(0,0,0);ellipse(pos.x/10,pos.y/10,5,5);
}
PVector mouse1 = new PVector(mouseX,mouseY, 0);
if(PVector.dist(mouse1,hand1)<100 || PVector.dist(mouse1,hand2)<100)
{
ellipse(mouseX,mouseY,200,200);
}
}
3.期末作品規劃
命中紅心
是一個射弓箭的遊戲 可能單人或雙人
沒有留言:
張貼留言