Проект Танго - 3D реконструкция

Я пытаюсь использовать библиотеку C 3D-реконструкции, чтобы получить сетку от устройства Tango. В функциях построения сетки есть сводка используемого потока, которая показывает, что мне нужно вызвать функцию Tango3DR_update несколько раз, а затем вызвать Tango3DR_extractFullMesh, чтобы получить сетку.

Проблема в том, что Tango3DR_update нужен объект Tango3DR_PointCloud, который я не понимаю, как получить. Я могу создать пустой Tango3DR_PointCloud с помощью Tango3DR_PointCloud_create, но нигде не вижу, как заполнить его реальными данными.

Кто-нибудь знает, как получить этот объект? Или кто-нибудь знает, есть ли какой-нибудь пример/пример кода, использующий эту библиотеку? Я ничего не нашел.

Спасибо, Орен


person Oren    schedule 31.05.2016    source источник


Ответы (1)


Вы должны заполнить Tango3DR_PointCloud из TangoXYZij, который вы получаете в OnXYZijAvailableRouter. То же самое для структуры позы.

// -- point cloud
Tango3DR_PointCloud cloud;
cloud.num_points = xyz_ij->xyz_count;
cloud.points = new Tango3DR_Vector4[cloud.num_points];
for (int i = 0; i < cloud.num_points; ++i) {
  cloud.points[i][0] = xyz_ij->xyz[i][0];
  cloud.points[i][1] = xyz_ij->xyz[i][1];
  cloud.points[i][2] = xyz_ij->xyz[i][2];
  // last is confidence
  cloud.points[i][3] = 1;
}
cloud.timestamp = xyz_ij->timestamp;

(Не забудьте delete [] cloud.points, когда закончите)

Единственный официальный пример, который мне удалось найти, находится в файле Примеры Unity. Они используют C API, но вызываются из C#.

person Julien    schedule 31.05.2016