为了使用英特尔实感 D455 生成网格,我使用了 PCL 库,更准确地说是快速组织网格方法。我设法生成 OBJ 格式的网格,但它只包含顶点,没有面。
这是我使用的代码:
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
cloud->resize(size);
for (int i = 0; i < size; i++)
{
cloud->at(i).x = Cloud[i].x;
cloud->at(i).y = Cloud[i].y;
cloud->at(i).z = Cloud[i].z;
}
std::cout << "Fast mesh started " << "\n";
pcl::OrganizedFastMesh<pcl::PointXYZ>::Ptr orgMesh(new pcl::OrganizedFastMesh<pcl::PointXYZ());
pcl::PolygonMesh triangles;
orgMesh->setTriangulationType(pcl::OrganizedFastMesh<pcl::PointXYZ>::TRIANGLE_RIGHT_CUT);
orgMesh->setInputCloud(cloud);
orgMesh->reconstruct(triangles);
std::cout << "start saving the fast mesh obj..." << "\n";
pcl::io::saveOBJFile("Mesh.obj", triangles);
有人可以解释一下如何让该方法也生成面孔吗?
感谢您的帮助。
您正在将无组织的点云作为
OrganizedFastMesh
实例的输入。但顾名思义,它是一个用于组织点云的 API。有组织的点云意味着点已经排列为网格(如矩阵)。有关详细信息,请参阅有关 PointCloud 的参考资料和有关组织点云的说明(在 Mathworks 上)。
使用其他 API,例如
ConvexHull
。