第二週課程:用Leap Motion 畫有殘影的線
week02:Painted line with Leap Motion
第一節課
1.下載Leap Motion 驅動程式並安裝
2.測試Leap Motion是否能運行(visualizer)
3.老師介紹一些作品
LICHT a game for the LEAP motion
https://www.youtube.com/watch?v=wSvnfTCjvHI
Leap Motion: Orion
https://www.youtube.com/watch?v=rnlCGw-0R8g
4.Processing 解壓並執行範例程式
5.因為網路出點問題,老師教我們用Proxy
Google設定 -> 變更Proxy -> LAN設定 -> 將Proxy伺服器打勾 -> 並輸入 位址:proxy.mcu.edu.tw 連接阜:3128
6.Processing 利用滑鼠畫出線條
void setup() //初始化
{
size(800,600); //畫視窗
}
void draw() //畫圖
{
line(mouseX,mouseY,pmouseX,pmouseY); //開始畫線
}
第二節課
1.把第一節課的畫線程式增加
background() //背景顏色
stroke(); //將線改顏色
程式碼
void setup()
{
size(800,600);
background(0);//背景顏色
}
void draw()
{
stroke(255,0,0);//將線改顏色
line(mouseX,mouseY,pmouseX,pmouseY);
}
2.利用滑鼠畫出有殘影的線
PVector [] p=new PVector[10]; //宣告陣列
void setup()
{
size(800,600,P3D); //修改成3D空間
for(int i=0;i<10;i++)
{
p[i]=new PVector(0,0,0); //給初始值
}
}
void draw()
{
background(0);
stroke(255,0,0);
for(int i=9;i>0;i--) //將前面的值傳給後面
{
p[i].x=p[i-1].x;
p[i].y=p[i-1].y;
}
p[0].x=mouseX;//將滑鼠的值傳給0
p[0].y=mouseY;//將滑鼠的值傳給0
for(int i=1;i<10;i++) //畫線
{
line(p[i].x , p[i].y , p[i].z , p[i-1].x , p[i-1].y , p[i-1].z);
}
}
3.利用Leap Motion偵測一隻手指頭,畫出有殘影的線
import de.voidplus.leapmotion.*; // 匯入函式庫
LeapMotion leap; //宣告
PVector [] p=new PVector[10];
void setup()
{
size(800,600,P3D);
for(int i=0;i<10;i++){ p[i]=new PVector(0,0,0);}
leap = new LeapMotion(this); //給初始值
}
void draw()
{
background(0);
stroke(255,0,0);
for(int i=9;i>0;i--){p[i].x=p[i-1].x;p[i].y=p[i-1].y;}
for(Hand hand : leap.getHands()) //抓手
{
for(Finger finger : hand.getFingers())//抓手指
{
switch(finger.getType())//判斷手指類型
{
case 0:
PVector now =finger.getPosition();//將手指位址傳給now
p[0].x=now.x;
p[0].y=now.y;
break;
}
}
}
for(int i=1;i<10;i++){line(p[i].x , p[i].y , p[i].z , p[i-1].x , p[i-1].y , p[i-1].z);}
}
第三節課
1.利用Leap Motion偵測五隻手指頭,畫出有殘影的線
import de.voidplus.leapmotion.*;
LeapMotion leap;
PVector [][] p=new PVector[5][100];//變成2維陣列,記錄其他手指頭的點
void setup()
{
size(800,600,P3D);
for(int f=0;f<5;f++)
{
for(int i=0;i<100;i++){ p[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=99;i>0;i--){p[f][i].x=p[f][i-1].x;p[f][i].y=p[f][i-1].y;}
}
for(Hand hand : leap.getHands())
{
for(Finger finger : hand.getFingers())
{
int f=finger.getType();
PVector now =finger.getPosition();//將手指位址傳給now
p[f][0].x=now.x;
p[f][0].y=now.y;
}
}
for(int f=0;f<5;f++)
{
stroke(f*20,100,100);//每一根手指的顏色
for(int i=1;i<100;i++){line(p[f][i].x , p[f][i].y , p[f][i].z , p[f][i-1].x , p[f][i-1].y , p[f][i-1].z);}
}
}
沒有留言:
張貼留言