2. Processing滑鼠畫線
line(x1,y1,x2,y2); //畫線
void setup(){
size(800,600);
background(255);
}
void draw(){
//background(255);
line(mouseX,mouseY,pmouseX,pmouseY);
}
3. Processing滑鼠畫出有顏色的線
stroke(R,G,B); //顏色
void setup(){
size(800,600);
background(255);
}
void draw(){
//background(255);
stroke(48,191,74);
line(mouseX,mouseY,pmouseX,pmouseY);
}
4. 如果用原來的方法在void draw(){}裡加入background(255);
會發現滑鼠後方拖曳的線不是那麼長
所以我們用另一種陣列的方法寫
PVector[] mousePV=new PVector[10]; //陣列寫法
void setup(){
size(800,600,P3D);
background(255);
for(int i=0;i<10;i++) mousePV[i]=new PVector(0,0,0); //初始化
}
void draw(){
background(255);
stroke(48,191,74);
for(int i=9;i>0;i--) mousePV[i]=mousePV[i-1]; //後座標帶入前
mousePV[0] = new PVector((int)mouseX,(int)mouseY,0);
for(int i=1;i<10;i++) //畫線
line(mousePV[i].x,mousePV[i].y,mousePV[i].z,mousePV[i-1].x,mousePV[i-1].y,mousePV[i-1].z);
}
5. 代入leapMotion的裝置
匯入leapmotion的Library (※Sketch->Import Library...-> Add Library...->輸入Leap)
接著以找到手->找到指->輸出位置,為目標就行
import de.voidplus.leapmotion.*; //匯入leapMotion
PVector[] movePV=new PVector[10];
LeapMotion leap;
void setup(){
size(800,600,P3D);
background(255);
for(int i=0;i<10;i++) movePV[i]=new PVector(0,0,0);
leap=new LeapMotion(this);
}
void draw(){
background(255);
stroke(48,191,74);
for(int i=9;i>0;i--){ movePV[i]=movePV[i-1];}
for(Hand hand : leap.getHands()){ //手掌迴圈
for(Finger finger : hand.getFingers()){ //手指迴圈
switch(finger.getType()){ //手指Type
case 1:
PVector indexPV = finger.getPosition(); //食指位置
movePV[0]=indexPV; //代入食指位置
break;
}
}
}
for(int i=1;i<10;i++)
line(movePV[i].x,movePV[i].y,movePV[i].z,movePV[i-1].x,movePV[i-1].y,movePV[i-1].z);
}
6. 上面的範例只有找到食指,接著要教如何輸出(一隻手的)所有的手指
import de.voidplus.leapmotion.*;
PVector[][] movePV=new PVector[5][50]; //二維陣列,因為有5隻手指,加上增加殘影
LeapMotion leap;
void setup(){
size(800,600,P3D);
background(255);
for(int f=0;f<5;f++) //5隻手指所以要多一層迴圈
for(int i=0;i<50;i++) movePV[f][i]=new PVector(0,0,0);
leap=new LeapMotion(this);
colorMode(HSB,100); //顏色狀態改成HSB
}
void draw(){
background(0);
for(int f=0;f<5;f++) //(同上)
for(int i=49;i>0;i--) movePV[f][i]=movePV[f][i-1];
for(Hand hand : leap.getHands()){
for(Finger finger : hand.getFingers()){
//switch(finger.getType()){ //因為要輸出5隻手指,所以不用switch, case輔助
//case 1:
int f=finger.getType();
PVector fingerPV = finger.getPosition();
movePV[f][0]=fingerPV;
//break;
//}
}
}
for(int f=0;f<5;f++){
stroke(f*20, 100, 100); //給予line顏色
for(int i=1;i<50;i++)
line(movePV[f][i].x,movePV[f][i].y,movePV[f][i].z,
movePV[f][i-1].x,movePV[f][i-1].y,movePV[f][i-1].z);
}
}
沒有留言:
張貼留言