【问题标题】:Can I generate Point Cloud from mesh? [closed]我可以从网格生成点云吗? [关闭]
【发布时间】:2015-01-29 06:06:11
【问题描述】:

我正在尝试从 Maya 的 (.obj) 文件等网格生成点云数据。 但是,我只能找到相反的情况,点云在互联网上网格化。 有什么方法可以使用 MeshLab 或 Maya 等 3D 工具创建“来自网格的点云数据”? (我更喜欢使用 MeshLab)

谢谢。 :)

【问题讨论】:

  • 您要输出什么文件格式?
  • 输出格式无关紧要。我只想获取点云数据。

标签: 3d mesh maya point-clouds meshlab


【解决方案1】:

免费开源项目CloudCompare可以加载OBJ网格,然后在网格上生成点云,然后您可以将其保存为多种格式。

【讨论】:

  • 这是迄今为止我见过的最好的方法,良好的点分布并保持模型的 RGB 值。如果它也能保留法线向量那就更好了,但目前很少有点云软件支持法线着色。方法:导入obj,选择网格,编辑/编辑网格/采样点
  • 嗨@David,感谢您的提示。你知道是否有办法批量做到这一点?我有大约 80,000 个 obj 文件,并希望将它们全部转换...没关系,我想我在文档的第 173/181 页找到了“示例网格”命令行选项 (cloudcompare.org/doc/qCC/…)。
  • 只是为了附加到我以前的 cmets 以供阅读此线程的其他人使用,我实际上发现点云库比 Cloud Compare 的命令行选项更容易用于此特定任务。一件事是当我尝试用于保存点云的“-SAVE_CLOUDS”选项时云比较报告错误,尽管它可以生成一个 .txt 文件。另一件事是虽然我指定了 2048 个点,但输出包含 2049 个点。 pcl_mesh_sampling 感觉更容易使用。
【解决方案2】:

Point Cloud Library 有几个不同的命令行工具,用于将网格转换为点云,据我所知,通过将对象从一组视图中渲染为点并组合渲染。 例如pcl_mesh2pcd, pcl_mesh_sampling

【讨论】:

  • 但是,我正在尝试按照您所说的去做,我有一个问题。我想将 obj 网格转换为 pcd。但是 pcl_mesh2pcd 和 pcl_mesh_sampling 发生错误(程序只是染色...TT)。我能做什么?
  • 您可以尝试打开另一个显示这些错误的问题。也许其他人也遇到过类似的问题,也许有一些错误,也许是一些bitrot设置了它等等。应该可以提供帮助。我没有亲自使用过这些工具,也没有安装 PCL,但如果我看到错误,我可能会提供帮助。
  • 您也可以查看 pcl-users 邮件列表中的类似问题。我现在记得 pcl 有一个新的“模拟”库,它可能对这类事情有用——可能有一个可用的工具可以使用它。
【解决方案3】:

将三角网格转换为点云意味着您要在该表面上进行点采样。根据所需的分布(例如 Uniform Montecarlo、Poisson Disk 等),有不同的算法具有完全不同的结果。例如,如果您需要间隔良好的随机点,则需要泊松磁盘分布。您可以在 meshlab 内或直接在浏览器上的 http://www.meshlabjs.net/ 上测试其中一些算法(只需加载网格并在搜索框中输入“采样”)。

您可以在网格处理 vcg 库 (http://www.vcglib.net) 中找到一个 c++ 开源实现以及这些算法的描述(实现起来非常简单):

具有蓝噪声特性的高效灵活采样 三角形网格
M Corsini、P Cignoni、R 斯科皮尼奥
IEEE Transactions on Visualization and Computer Graphics 18 (6), 914-924
http://vcg.isti.cnr.it/Publications/2012/CCS12/

【讨论】:

  • 还有PyMeshLab,它是MeshLab的Python绑定,替代了meshlabserver执行FilterScripts。
  • 非常感谢,meshlab 刚刚完成了我想要实现的目标 :)
【解决方案4】:

有趣的是,这个问题在网络上没有任何明确的答案。

从网格到点云的转换类似于将网格的顶点干扰到点云中!网格是点云的稀疏表示。因此,要将网格转换为点云,需要对网格表面上的点进行采样。 PCL 有一个名为pcl_mesh_sampling 的实用程序。源代码是located here

基本上,该方法使用 VTK 从网格表面均匀采样N 点。它非常有效,您将获得包含任意数量点的点云。

【讨论】:

    【解决方案5】:

    我正在寻找类似的问题。我需要以不同的姿势投影网格模型以生成点云数据。

    然后我在 github 中找到了以下项目。如果有人想从各种姿势的网格对象 (.obj) 生成点云 (.pcd),这将有所帮助。

    这将为给定的网格对象模拟 kinect 格式的点云。

    https://github.com/jbohg/render_kinect

    【讨论】:

      【解决方案6】:

      我也想做同样的事情,但更喜欢可以在 Python 中轻松完成的事情。我发现这个post 非常有用。它使用一个名为pyntcloud 的Python 库。它以 .ply 格式加载网格并从中随机采样指定数量的点,使其以或多或少均匀的方式覆盖表面。它可以很容易地适应其他格式。我已经为 .off 文件这样做了,效果很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-14
        • 1970-01-01
        • 1970-01-01
        • 2014-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多