Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import SimpleOpenNI.*;
- SimpleOpenNI kinect;
- float youAre = 0;
- PImage handImage;
- int imageHeight = 1787;
- int imageWidth = 833;
- void setup() {
- kinect = new SimpleOpenNI(this);
- kinect.enableDepth();
- kinect.enableUser(SimpleOpenNI.SKEL_PROFILE_ALL);
- kinect.setMirror(true);
- kinect.enableRGB();
- size(640, 480);
- smooth();
- handImage = loadImage("Hand.png");
- }
- void draw() {
- kinect.update();
- image(kinect.rgbImage(), 0, 0);
- IntVector userList = new IntVector();
- kinect.getUsers(userList);
- if (userList.size() > 0) {
- int userId = userList.get(0);
- // if ( kinect.isTrackingSkeleton(userId)) {
- //drawSkeleton(userId);
- // }
- float rightArmAngle = getJointAngle(userId, SimpleOpenNI.SKEL_RIGHT_HAND, SimpleOpenNI.SKEL_RIGHT_ELBOW);
- PVector handPos = new PVector();
- kinect.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_RIGHT_HAND, handPos);
- float newImageWidth = map(handPos.z, 500, 2000, imageWidth/6, imageWidth/11);
- float newImageHeight = map(handPos.z, 500, 2000, imageHeight/6, imageHeight/11);
- PVector convertedHandPos = new PVector();
- kinect.convertRealWorldToProjective(handPos, convertedHandPos);
- pushMatrix();
- translate(convertedHandPos.x, convertedHandPos.y);
- rotate(rightArmAngle*-1);
- rotate(PI/2);
- image(handImage, -1 * (newImageWidth/2), 0 - (newImageHeight/2), newImageWidth, newImageHeight);
- popMatrix();
- }
- }
- float getJointAngle(int userId, int jointID1, int jointID2) {
- PVector joint1 = new PVector();
- PVector joint2 = new PVector();
- kinect.getJointPositionSkeleton(userId, jointID1, joint1);
- kinect.getJointPositionSkeleton(userId, jointID2, joint2);
- return atan2(joint1.y-joint2.y, joint1.x-joint2.x);
- }
- // user-tracking callbacks!
- void onNewUser(int userId) {
- println("start pose detection");
- kinect.startPoseDetection("Psi", userId);
- }
- void onEndCalibration(int userId, boolean successful) {
- if (successful) {
- println(" User calibrated !!!");
- kinect.startTrackingSkeleton(userId);
- }
- else {
- println(" Failed to calibrate user !!!");
- kinect.startPoseDetection("Psi", userId);
- }
- }
- void onStartPose(String pose, int userId) {
- println("Started pose for user");
- kinect.stopPoseDetection(userId);
- kinect.requestCalibrationSkeleton(userId, true);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement