Мне попалась следующая ситуация:
- У меня есть камера Kinect, и я продолжаю снимать кадры (но они сохраняются только тогда, когда пользователь нажимает клавишу).
- Я использую библиотеку freenect для получения глубины и цвета рамки (меня не интересует отслеживание скелета или что-то в этом роде).
- Для одного кадра я использую пример glpclview, который поставляется с библиотекой freenect
После получения данных о пространстве от датчика Kinect, в примере glpclview текущий кадр отображается следующим образом:
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_SHORT, 0, xyz);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(3, GL_SHORT, 0, xyz);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, gl_rgb_tex);
glTexImage2D(GL_TEXTURE_2D, 0, 3, 640, 480, 0, GL_RGB, GL_UNSIGNED_BYTE, rgb);
glPointSize(2.0f);
glDrawElements(GL_POINTS, 640*480, GL_UNSIGNED_INT, indices);
, где
static unsigned int indices[480][640];
static short xyz[480][640][3];
char *rgb = 0;
short *depth = 0;
где:
- rgb - информация о цвете для текущего кадра
- глубина - информация о глубине для текущего кадра
xyz построен как:
xyz [i] [j] [0] = j
xyz [i] [j] 3 = i
xyz [i] [j] 4 = глубина [i * 640 + j]
индексы - это (я думаю, только) массив, который отслеживает данные rgb / глубины и построен как:
индексы [i] [j] = i * 640 + j
Пока все хорошо, но теперь мне нужно визуализировать больше, чем один кадр (некоторые из них поворачиваются и перемещаются с определенным углом / смещением). Как я могу это сделать?
Я пытался увеличить размер массивов и сохранить перераспределение памяти для каждого нового кадра, но как я могу их отрендерить?
Должен ли я изменить эту текущую строку на что-то еще?
glTexImage2D(GL_TEXTURE_2D, 0, 3, 640, 480, 0, GL_RGB, GL_UNSIGNED_BYTE, rgb)
Если это так, на какие значения я должен изменить 640 и 480, так как теперь xyz и rgb - это указатель непрерывности 640x480x (количество кадров)?
Чтобы лучше понять, я пытаюсь получить что-то похожее на это в конце (кроме робота: D).
Если у кого-то есть лучшая идея, подскажите что-нибудь о том, как мне следует подойти к этой проблеме, пожалуйста, дайте мне знать.