2016年3月3日 星期四

Week02 Leap Motion 畫有殘影的線_02160421黃志楷

第二週課程:用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);}
  }
}

沒有留言:

張貼留言