mrgloom
mrgloom

Reputation: 21622

Save pcl::PointCloud<pcl::PointXYZRGB> in format compatible with Meshlab

Is there any function in PCL library to save pcl::PointCloud<pcl::PointXYZRGB> point cloud in format XYZRGB that can be opened with Meshlab?

Seems pcl::io::savePCDFileASCII (filename, cloud); stores RGB values in some specific way.

Upvotes: 7

Views: 9092

Answers (3)

Craig
Craig

Reputation: 21

For anyone who might have the same question, note that PLY files may or may not be fully formed e.g. it may or may not have normals or triangle indices.

Furthermore the data may not be in an expected order e.g. normals may come after RGB color or before.

I have found that PCL does not handle this well. I've used VCG Library instead. If you still need to use PCL then include both libraries but read in with VCG Lib and populate then PCL data structure.

Upvotes: 0

Tukk
Tukk

Reputation: 133

For me it works, if I store it as PLY file in binary format. It seems as if Meshlab is having some troubles with ASCII files occasionally. Here is what works for me.

pcl::PointCloud<pcl::PointXYZRGB>::Ptr sceneCloud(new pcl::PointCloud<pcl::PointXYZRGB>);
//Fill cloud somehow...

std::string writePath = "your/path";
pcl::io::savePLYFileBinary(writePath, *sceneCloudPtr);

Upvotes: 9

Finfa811
Finfa811

Reputation: 638

You can convert to .ply, .obj or any other supported format. Have a look to the demo pcd2ply in the PCL, or just use pcl::PLYWriter setting up the parameters depending on your needs:

 pcl::PLYWriter writer;
 writer.write (filename, cloud, Eigen::Vector4f::Zero (),
               Eigen::Quaternionf::Identity (), binary, use_camera);

Upvotes: 1

Related Questions