方法一、三维模型文件生成obj文件
要想生成点云文件,要先将三维模型文件保存为obj文件格式,步骤如下:
- 通过SolidWorks将模型保存为stl文件格式
- 打开SolidWorks的插件选择,在ScanTo3D前面打勾
- 在solidworks中以网格文件的形式打开刚才的stl文件
- 再将文件保存为obj格式
二、利用PCL的IO库
直接采用PCL中IO库的命令loadOBJFile、loadPLYFile打开obj、ply文件
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
if (-1 == pcl::io::loadOBJFile("E:\\Doc_PCL\\Model.obj", *cloud))
{
cout << "error input!" << endl;
return -1;
}
该方法生成的点云一般为模型的网格的顶点,如果模型较为简单,生成的点云数量较少,特别是遇到简单的模型,几乎没有点生成。效果如下:
三、利用pcl exe生成
打开PCL的安装目录下的bin文件,找到pcl_mesh_sampling_release.exe或是pcl_mesh_sampling_debug.exe文件,选择一个将其拷贝至E盘(可自行选择,也可不拷贝直接运行)
win+R打开运行窗口,运行cmd,先输入E:(刚才拷贝的地址),然后输入下列命令:
1 | pcl_mesh_sampling_debug.exe model.obj model.pcd in out -n_samples 36000 |
其中,model.obj也可为ply文件格式;36000为点云数量。
注:为方便起见,这里将pcl_mesh_sampling_debug.exe和model.obj文件都放在E盘目录下,生成的pcd文件也位于该盘,若在其他文件夹中,需添加相应路径。
具体操作流程:
1.打开cmd,并且cd到pcl_mesh_samplingd.exe文件所在的目录下。
2.输入pcl_mesh_samplingd.exe XXX.obj AAA.pcd。其中XXX是待转化的obj文件所在的路径及其名称,例如D:\aaa\file.obj。AAA则是转化成的pcd文件存储的路径,这个可以自己选择。
四、CloudCompare软件
1.在CloudCompare软件中导入面片模型,选中;
2.选择Edit-Mesh-Sample Points,出现以下界面;
3.设置相关参数
Point Number——采样点的个数;
Density——生成点云的密度;
Generate normals——生成法向量信息;
4.点击确定,生成点云
5.选中生成的点云,点击File-Save即可保存为自己需要的点云格式。