2016年3月10日 星期四

20160310 3d跟調色盤

1.複習上周進度
2.讓上周進度變3d
3.期中作品:腥風血雨:斷手指


上周進度在跑一次
import de.voidplus.leapmotion.*;
LeapMotion leap;
PVector [][] pt=new PVector[5][50];
void setup(){
  size(640,480,P3D);
  for(int f=0;f<5;f++){
 for(int i=0;i<50;i++)
  pt[f][i]=new PVector(0,0,0);
  }
 leap = new LeapMotion(this);
 colorMode(HSB,100); 
}
void draw(){
  background(45);
  //stroke(255,174,201);
  //line(mouseX,mouseY,pmouseX,pmouseY);
   for(int f=0;f<5;f++){
  for(int i=49;i>0;i--){pt[f][i].x=pt[f][i-1].x;pt[f][i].y=pt[f][i-1].y;}
   }
  for(Hand hand:leap.getHands()){
    for(Finger finger:hand.getFingers()){
      int f = finger.getType();
      PVector now = finger.getPosition();
      pt[f][0].x=now.x;
      pt[f][0].y=now.y;
    }
  }
   for(int f=0;f<5;f++){
   stroke(f*20,100,100);
  for(int i=1;i<50;i++)
  line(pt[f][i].x,pt[f][i].y,pt[f][i].z,pt[f][i-1].x,pt[f][i-1].y,pt[f][i-1].z);
}
}
接下來要做出3d的圖瞜~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
要變成3d要加幾項程式
size(640,480,P3D);
要加P3D讓舞台變3d的
然後要讓畫面旋轉才有3d的感覺
translate(width/2,height/2);
  rotateY(radians(frameCount));
  translate(-width/2,-height/2);
所以用之前學過的trt來旋轉畫面
還要記得加[f][i].z座標
再來要做出跟visualizar類似的功能
加上
stroke(60,100,100);
for(int i=0;i<640;i+=20)
  for(int j=0;j<400;j+=20)
  {
  noFill();rect(i,j,20,20);
  }
}
畫出格線
========================================================================
做出調色盤
import de.voidplus.leapmotion.*;
LeapMotion leap;
void setup() {
  size(640, 480, P3D);
  leap = new LeapMotion(this);
}
void draw() {
  background(255);
  for (Hand hand : leap.getHands ()) {
    PVector pos =hand.getPosition();
    if (hand.isLeft()) {
      ellipse(pos.x, pos.y, 200, 100);畫橢圓
    } else if (hand.isRight()) {
      rect(pos.x, pos.y, 10, 100);畫方形
    }
  }
}
做出調色盤及周圍顏色,達成右手棒子可變色
可以變色了~~讚!!!
import de.voidplus.leapmotion.*;
LeapMotion leap;
void setup() {
  size(640, 480, P3D);
  leap = new LeapMotion(this);
}
color nowColor = color(0, 0, 0);
PVector leftPos;
void draw() {
  background(255);
  for (Hand hand : leap.getHands ()) {
    PVector pos =hand.getPosition();
    if (hand.isLeft()) {
      noFill();
      ellipse(pos.x, pos.y, 200, 100);
      fill(255, 0, 0); 
      ellipse(pos.x+60, pos.y-50, 60, 50);
      fill(255, 255, 0); 
      ellipse(pos.x, pos.y-60, 60, 50);
      fill(0, 255, 0); 
      ellipse(pos.x-80, pos.y-60, 60, 50);
      fill(255, 0, 255); 
      ellipse(pos.x-120, pos.y, 60, 50);
      leftPos =pos;
    } else if (hand.isRight()) {
      fill(nowColor);
      rect(pos.x, pos.y, 10, 100);
      println(leftPos);
      println(pos);
      if (dist(pos.x, pos.y, leftPos.x+60, leftPos.y-50)<30) {
        nowColor = color(255, 0, 0);
      }
      if (dist(pos.x, pos.y, leftPos.x, leftPos.y-60)<30) {
        nowColor = color(255, 255, 0);
      }
      if (dist(pos.x, pos.y, leftPos.x-80, leftPos.y-60)<30) {
        nowColor = color(0, 255, 0);
      }
      if (dist(pos.x, pos.y, leftPos.x-120, leftPos.y)<30) {
        nowColor = color(255, 0, 255);
      }
    }
  }
}


沒有留言:

張貼留言