2016年5月19日 星期四

week13_期末進度



import SimpleOpenNI.*;
SimpleOpenNI openni;
PImage imgBG,imgHuman;
void setup(){
  size(600,400);
  openni = new SimpleOpenNI(this);
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
  imgBG = loadImage("bg.png");
  imgHuman = createImage(640,480,ARGB);
}

void draw(){
  openni.update();
  background(255);
  image(imgBG,0,0,640,480);
  image(openni.userImage(),0,0,64,48);
  copyImage();
  int[]userList = openni.getUsers();
  PVector pos = new PVector(0,0,0), hand1 = new PVector(0,0,0), hand2 = new PVector(0,0,0);
  for(int userID : userList){
    openni.getJointPositionSkeleton(userID, SimpleOpenNI.SKEL_LEFT_HAND, pos);
    openni.convertRealWorldToProjective(pos, pos);
    fill(0,0,255);
    ellipse(pos.x, pos.y, 50, 50);
    hand1.set(pos);
    hand1.z=0;
    fill(0,0,255);
    ellipse(pos.x/10, pos.y/10, 5, 5);
    openni.getJointPositionSkeleton(userID, SimpleOpenNI.SKEL_RIGHT_HAND, pos);
    openni.convertRealWorldToProjective(pos, pos);
    fill(255,0,0);
    ellipse(pos.x/10, pos.y/10, 5, 5);
    fill(255,0,0);
    ellipse(pos.x, pos.y, 50, 50);
    hand2.set(pos);
    hand2.z=0;
    //openni.getJointPositionSkeleton(userID, SimpleOpenNI.SKEL_HEAD, pos);
    //openni.convertRealWorldToProjective(pos, pos);
    //fill(255,255,0);
    //ellipse(pos.x, pos.y, 50, 50);
  }
  image(imgHuman,0,0,640,480);
  PVector mouse1 = new PVector(mouseX, mouseY, 0);
  if(PVector.dist(mouse1, hand1)<100 || PVector.dist(mouse1, hand2)<100){
    ellipse(mouseX, mouseY, 200, 200);
    //fill(255,255,0);
  }
}
void copyImage(){
  PImage now = openni.userImage();
  now.loadPixels();
  for(int i=0;i<640*480;i++){
    if(now.pixels[i]==color(255,0,0) ||
       now.pixels[i]==color(0,255,0) ||
       now.pixels[i]==color(0,0,255) ||
       now.pixels[i]==color(255,255,0)){
         imgHuman.pixels[i]=color(255,0,0,120);
         println(i);
       }else{
         imgHuman.pixels[i]=color(0,0);
       }
       imgHuman.updatePixels();
  }
}
void onNewUser(SimpleOpenNI curContext,int userId){
  openni.startTrackingSkeleton(userId);
}




import SimpleOpenNI.*;
import processing.opengl.*;
import saito.objloader.*;
SimpleOpenNI openni;
OBJModel model;
PImage imgBG,imgHuman;
void setup(){
  size(600,400);
  model = new OBJModel(this, "000.obj");
  model.scale(80);
  model.translateToCenter();
  noStroke();
  openni = new SimpleOpenNI(this);
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
  imgBG = loadImage("bg.png");
  imgHuman = createImage(640,480,ARGB);
}

void draw(){
  openni.update();
  background(255);
  lights();
  translate(width/8,height/8,0);
  model.draw();
  image(imgBG,0,0,640,480);
  image(openni.userImage(),0,0,64,48);
  copyImage();
  int[]userList = openni.getUsers();
  PVector pos = new PVector(0,0,0), hand1 = new PVector(0,0,0), hand2 = new PVector(0,0,0);
  for(int userID : userList){
    openni.getJointPositionSkeleton(userID, SimpleOpenNI.SKEL_LEFT_HAND, pos);
    openni.convertRealWorldToProjective(pos, pos);
    fill(0,0,255);
    ellipse(pos.x, pos.y, 50, 50);
    hand1.set(pos);
    hand1.z=0;
    fill(0,0,255);
    ellipse(pos.x/10, pos.y/10, 5, 5);
    openni.getJointPositionSkeleton(userID, SimpleOpenNI.SKEL_RIGHT_HAND, pos);
    openni.convertRealWorldToProjective(pos, pos);
    fill(255,0,0);
    ellipse(pos.x/10, pos.y/10, 5, 5);
    fill(255,0,0);
    ellipse(pos.x, pos.y, 50, 50);
    hand2.set(pos);
    hand2.z=0;
    //openni.getJointPositionSkeleton(userID, SimpleOpenNI.SKEL_HEAD, pos);
    //openni.convertRealWorldToProjective(pos, pos);
    //fill(255,255,0);
    //ellipse(pos.x, pos.y, 50, 50);
  }
  image(imgHuman,0,0,640,480);
  PVector mouse1 = new PVector(mouseX, mouseY, 0);
  if(PVector.dist(mouse1, hand1)<100 || PVector.dist(mouse1, hand2)<100){
    ellipse(mouseX, mouseY, 200, 200);
    //fill(255,255,0);
  }
}
void copyImage(){
  PImage now = openni.userImage();
  now.loadPixels();
  for(int i=0;i<640*480;i++){
    if(now.pixels[i]==color(255,0,0) ||
       now.pixels[i]==color(0,255,0) ||
       now.pixels[i]==color(0,0,255) ||
       now.pixels[i]==color(255,255,0)){
         imgHuman.pixels[i]=color(255,0,0,120);
         println(i);
       }else{
         imgHuman.pixels[i]=color(0,0);
       }
       imgHuman.updatePixels();
  }
}
void onNewUser(SimpleOpenNI curContext,int userId){
  openni.startTrackingSkeleton(userId);
}

沒有留言:

張貼留言