我正在尝试使用C 3D Reconstruction Library从Tango设备获取网格。
Mesh Building Functions中,有要使用的流程的摘要,它表明我必须多次调用Tango3DR_update函数,然后调用Tango3DR_extractFullMesh以获得网格。

问题是Tango3DR_update需要Tango3DR_PointCloud对象,但我不知道该如何获得。
我可以使用Tango3DR_PointCloud创建一个空的Tango3DR_PointCloud_create,但是在任何地方都看不到如何用真实数据填充它。

有谁知道如何获得这个物体?
还是有人知道使用此库是否有任何示例/示例代码?我没找到

谢谢,
  奥伦

最佳答案

您应该从在OnXYZijAvailableRouter中收到的TangoXYZij中填充Tango3DR_PointCloud。姿势结构也是一样。

// -- 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 examples中。他们使用C API,但从C#调用。

关于c++ - 探戈计划-3D重建,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37540336/

10-09 06:00