Hi everyone, I have been trying to achieve a 3-6 sec delay on the live display from my kinect 2's point cloud feed, I am new to all this, so I have been basing my work on the KinectPV2 library by Langeling, I also came across a post here (https://forum.processing.org/two/discussion/15800/how-to-delay-the-feed-of-the-kinect-2-point-cloud) where it is solved but i am having a hard time applying it to the solution I have in hands.
this is the code i have in hands
import java.nio.*;
import KinectPV2.*;
KinectPV2 kinect;
int Vloc, z = -200, VBOID;
float scale = 260, pointScale = 100.0, a = 0.1;
int distanceMax = 4500, distanceMin = 0;
PGL pgl;
PShader psh;
ArrayList clouds;
int limit = 120;
public void setup ()
{
size(1280, 720, P3D);
kinect = new KinectPV2(this);
kinect.enableDepthImg(true);
kinect.enablePointCloud(true);
kinect.setLowThresholdPC(distanceMin);
kinect.setHighThresholdPC(distanceMax);
kinect.init();
psh = loadShader("frag.glsl", "vert.glsl");
PGL pgl = beginPGL();
IntBuffer buffer = IntBuffer.allocate(1);
pgl.genBuffers(1, buffer);
VBOID = buffer.get(0);
endPGL();
clouds = new ArrayList();
}
public void draw ()
{
background(0);
translate(width/2, height/2, z);
scale(scale, -1*scale, scale);
rotate(a, 0.0f, 1.0f, 0.0f);
kinect.setLowThresholdPC(distanceMin);
kinect.setHighThresholdPC(distanceMax);
FloatBuffer cloudBuf=kinect.getPointCloudPos();
pgl=beginPGL();
psh.bind();
Vloc=pgl.getAttribLocation(psh.glProgram, "vertex");
pgl.enableVertexAttribArray(Vloc);
int vData=kinect.WIDTHDepth * kinect.HEIGHTDepth *3;
{
pgl.bindBuffer(PGL.ARRAY_BUFFER, VBOID);
pgl.bufferData(PGL.ARRAY_BUFFER, Float.BYTES*vData,cloudBuf, PGL.DYNAMIC_DRAW);
pgl.vertexAttribPointer(Vloc, 3, PGL.FLOAT, false, Float.BYTES*3,0);
}
pgl.bindBuffer(PGL.ARRAY_BUFFER, 0);
//draw point buffer as set of points
//this is where the delay-draw mechanis should be?
//or what it should encapsulate?
pgl.drawArrays(PGL.POINTS, 0, vData);
pgl.disableVertexAttribArray(Vloc);
psh.unbind();
endPGL();
stroke(255,0,0);
}