Commit 6813e21f by Kai Westerkamp

..

parent d5c9509f
......@@ -156,6 +156,7 @@ void getRgbData(IMultiSourceFrame* frame, bool writFrameToFile) {
*fdest++ = rgbimage[4 * idx + 2] / 255.f;
if (writFrameToFile) {
//copy points with valid Color
snapshotPoints.push_back(framePositions[i]);
snapshotColors.push_back(rgbimage[4 * idx + 0]);
......@@ -185,27 +186,6 @@ void getKinectData(bool writeFrameInVector) {
getDepthData(frame);
getRgbData(frame, writeFrameInVector);
if (writeFrameInVector) {
//get controler pos
//frame -> global
points.clear();
colors.clear();
points.reserve(points.capacity() + width*height);
colors.reserve(colors.capacity() + width*height*3);
for(int i = 0; i < snapshotPoints.size(); i++) {
points.push_back(*currentControlerPos * snapshotPoints[i]);
colors.push_back(snapshotColors[i*3]);
colors.push_back(snapshotColors[i*3+1]);
colors.push_back(snapshotColors[i*3+2]);
}
}
glBindBuffer(GL_ARRAY_BUFFER, vboId);
glBufferData(GL_ARRAY_BUFFER, width*height * 3 * sizeof(GLfloat), framePositions, GL_DYNAMIC_DRAW);
glUnmapBuffer(GL_ARRAY_BUFFER);
......@@ -262,7 +242,24 @@ void rotateCamera() {
void drawKinectData() {
getKinectData(captureFrame);
//add points to point cloud
if (captureFrame) {
//get controler pos
points.clear();
colors.clear();
points.reserve(points.capacity() + width*height);
colors.reserve(colors.capacity() + width*height * 3);
for (int i = 0; i < snapshotPoints.size(); i++) {
points.push_back(*currentControlerPos * snapshotPoints[i]);
colors.push_back(snapshotColors[i * 3]);
colors.push_back(snapshotColors[i * 3 + 1]);
colors.push_back(snapshotColors[i * 3 + 2]);
}
}
captureFrame = false;
if (writeFile) {
writePointCloud();
writeFile = false;
......@@ -340,14 +337,41 @@ int main(int argc, char* argv[]) {
glClearColor(0,0,0,0);
glClearDepth(1.0f);
snapshotPoints.clear();
snapshotColors.clear();
// Write color array for vertices
float* fdest = (float*)frameColors;
float* fdest2 = (float*)framePositions;
for (int j = 0; j < height; j++) {
for (int i = 0; i < width; i++) {
*fdest++ = 1.0 * i / width;
*fdest++ = 1.0 *j / height;
*fdest++ = 0;
snapshotPoints.push_back(glm::vec3(1.0 * i / width, 1.0 *j / height, 0));
snapshotColors.push_back(1.0 *i / width*255);
snapshotColors.push_back(1.0 *j / height*255);
snapshotColors.push_back(0);
*fdest2++ = 1.0 *i / width;
*fdest2++ = 1.0 *j / height;;
*fdest2++ = 0;
}
}
// Set up array buffers
const int dataSize = width*height * 3 * 4;
glGenBuffers(1, &vboId);
glBindBuffer(GL_ARRAY_BUFFER, vboId);
glBufferData(GL_ARRAY_BUFFER, dataSize, 0, GL_DYNAMIC_DRAW);
glBufferData(GL_ARRAY_BUFFER, dataSize, framePositions, GL_DYNAMIC_DRAW);
glGenBuffers(1, &cboId);
glBindBuffer(GL_ARRAY_BUFFER, cboId);
glBufferData(GL_ARRAY_BUFFER, dataSize, 0, GL_DYNAMIC_DRAW);
glBufferData(GL_ARRAY_BUFFER, dataSize, frameColors, GL_DYNAMIC_DRAW);
// Camera setup
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment