

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);
}
沒有留言:
張貼留言