上课的阿尔法没有显示

时间:2015-03-13 23:07:46

标签: opengl processing alpha

我遇到的问题是没有计算图像的alpha值。 我已经尝试了所有混合模式和一切。这是PNG文件,以防您需要仔细检查。 image

    lines[] mylinesArray = new lines[1000];
import processing.opengl.*;
import SimpleOpenNI.*;
SimpleOpenNI  kinect;
import peasy.*;

PeasyCam cam;
void setup() { 
  size(1028, 768, OPENGL);
  ambientLight(0, 0, 255);

  for (int i = 0; i<mylinesArray.length; i++) {
    float prp = -1000;
    float vrp = -1000; 
    float z = random(prp, 1000);
    float x = random(vrp, 800);
    float y = -655;
    float u =random(-100, -200);

    mylinesArray[i] = new lines(x, y, z, u);
  }
  kinect = new SimpleOpenNI(this);
  kinect.enableDepth();
  kinect.enableUser();
  kinect.setMirror(true);
  frameRate(30);
  cam = new PeasyCam(this, 0, 0, 0, 1000);
}
void draw() { 
  kinect.update(); 
  background(255, 255, 255, 1000);
  translate(width/2, height/2, 0);
  rotateX(radians(180));
  IntVector userList = new IntVector();
  for (int i=0; i<mylinesArray.length; i++) {
    // println(i);
    mylinesArray[i].draw();

    //println("still doing it");
  }

  kinect.getUsers(userList);
  if (userList.size() > 0) {
    int userId = userList.get(0);
    if ( kinect.isTrackingSkeleton(userId)) {
      PVector leftHand = new PVector();
      kinect.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_LEFT_HAND, leftHand);
      PVector rightHand = new PVector();
      kinect.getJointPositionSkeleton(userId, 
      SimpleOpenNI.SKEL_RIGHT_HAND, 
      rightHand);
      PVector leftFoot = new PVector();
      kinect.getJointPositionSkeleton(userId, 
      SimpleOpenNI.SKEL_LEFT_FOOT, 
      leftFoot);                                
      //PVector differenceVector = PVector.sub(leftHand, rightHand);
      //float magnitude = differenceVector.mag(); 
      //differenceVector.normalize();
      kinect.drawLimb(userId, SimpleOpenNI.SKEL_LEFT_HAND, SimpleOpenNI.SKEL_RIGHT_HAND);

      stroke(255, 0, 0);
      strokeWeight(5);
      drawSkeleton(userId);
      pushMatrix(); 
      stroke(175); 
      strokeWeight(1); 
      println(leftFoot.x);
      println(leftFoot.y);
      println(leftFoot.z);
      line(leftHand.x, leftHand.y, leftHand.z, rightHand.x, rightHand.y, rightHand.z);
      //fill(250);
      translate(rightHand.x, rightHand.y, rightHand.z); 
      popMatrix();
    }
  }
}
void drawSkeleton(int userId) {
  drawLimb(userId, SimpleOpenNI.SKEL_HEAD, SimpleOpenNI.SKEL_NECK);
  drawLimb(userId, SimpleOpenNI.SKEL_NECK, 
  SimpleOpenNI.SKEL_LEFT_SHOULDER);
  drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, 
  SimpleOpenNI.SKEL_LEFT_ELBOW);
  drawLimb(userId, SimpleOpenNI.SKEL_LEFT_ELBOW, 
  SimpleOpenNI.SKEL_LEFT_HAND);
  drawLimb(userId, SimpleOpenNI.SKEL_NECK, 
  SimpleOpenNI.SKEL_RIGHT_SHOULDER);
  drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, 
  SimpleOpenNI.SKEL_RIGHT_ELBOW);
  drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_ELBOW, 
  SimpleOpenNI.SKEL_RIGHT_HAND);
  drawLimb(userId, SimpleOpenNI.SKEL_LEFT_SHOULDER, 
  SimpleOpenNI.SKEL_TORSO);
  drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_SHOULDER, 
  SimpleOpenNI.SKEL_TORSO);
  drawLimb(userId, SimpleOpenNI.SKEL_TORSO, 
  SimpleOpenNI.SKEL_LEFT_HIP);
  drawLimb(userId, SimpleOpenNI.SKEL_LEFT_HIP, 
  SimpleOpenNI.SKEL_LEFT_KNEE);
  drawLimb(userId, SimpleOpenNI.SKEL_LEFT_KNEE, 
  SimpleOpenNI.SKEL_LEFT_FOOT);
  drawLimb(userId, SimpleOpenNI.SKEL_TORSO, 
  SimpleOpenNI.SKEL_RIGHT_HIP);
  drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_HIP, 
  SimpleOpenNI.SKEL_RIGHT_KNEE);
  drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_KNEE, 
  SimpleOpenNI.SKEL_RIGHT_FOOT);
  drawLimb(userId, SimpleOpenNI.SKEL_RIGHT_HIP, 
  SimpleOpenNI.SKEL_LEFT_HIP);
}
void drawLimb(int userId, int jointType1, int jointType2)
{
  PVector jointPos1 = new PVector();
  PVector jointPos2 = new PVector();
  float  confidence;
  // draw the joint position
  confidence = kinect.getJointPositionSkeleton(userId, jointType1, jointPos1);
  confidence = kinect.getJointPositionSkeleton(userId, jointType2, jointPos2);
  line(jointPos1.x, jointPos1.y, jointPos1.z, 
  jointPos2.x, jointPos2.y, jointPos2.z);
  //println(SimpleOpenNI.SKEL_RIGHT_KNEE);
  println(SimpleOpenNI.SKEL_RIGHT_FOOT);
}
// user-tracking callbacks!
void onNewUser(SimpleOpenNI curContext, int userId) {
  println("start pose detection");
  kinect.startTrackingSkeleton(userId);
}


void onLostUser(SimpleOpenNI curContext, int userId)
{
  //println("onLostUser - userId: " + userId);
}

void onVisibleUser(SimpleOpenNI curContext, int userId)
{
  // println("onVisibleUser - userId: " + userId);
}

class lines {

  color fillColor;
  color strokeColor;
  PVector dot1;
  PVector dot2;
  PImage photo;

  lines(float xpos, float ypos, float zpos, float ypos2) {
    dot1 = new PVector(500+xpos, ypos, 700+zpos);
    dot2 = new PVector(500+xpos, ypos2, 700+zpos);
    photo = loadImage("Bounce_00000.png");
  }


  //}
  void draw() {
    pushMatrix();
    fill(255);


    line(dot1.x, dot1.y, dot1.z, dot2.x, dot2.y, dot2.z);
    image(photo, 0, 0);
    blendMode(ADD);

    stroke(0);


    popMatrix();
  }


}

1 个答案:

答案 0 :(得分:0)

修正了这个: 诀窍是禁用深度测试。 提示(DISABLE_DEPTH_TEST);