使用 Pymesh 加载和读取 ply 文件

Posted

技术标签:

【中文标题】使用 Pymesh 加载和读取 ply 文件【英文标题】:Load and read ply files with Pymesh 【发布时间】:2016-05-05 14:09:09 【问题描述】:

我正在尝试使用 PyMesh 和此行命令加载/读取层文件:

mesh = pymesh.load_mesh("model.obj")

就像在http://pymesh.readthedocs.io/en/latest/basic.html 中一样。

但这给了我一个错误“AttributeError:'module'对象没有属性'load_mesh'”。

我做错了吗?另外我想知道 PyMesh 是否真的允许在 3d 中可视化对象。

谢谢。

【问题讨论】:

你找到解决办法了吗? 【参考方案1】:

如果您使用 pip 安装,您可能没有获得您打算使用的 pymesh 模块。由于您正在寻找 load_mesh() 方法,因此您需要使用此安装指南:http://pymesh.readthedocs.io/en/latest/installation.html。

【讨论】:

@Bárbara Duarte :遵循此文档页面中的构建和安装步骤使其对我有用。我赞成这个答案,并建议您选择它作为答案。 这绝对是解决问题的办法。 Python Package Index page for pymesh 是一个完全不同的包,只支持加载 STL 和 OBJ 文件。这个答案为 OP 正在寻找的 pymesh 包链接了适当的包。【参考方案2】:

实际上有两个模块名为pymesh

和田卓郎的《Pymesh》

如果您使用 pip 安装 pymesh,则您正在安装 this one,它具有以下 GitHub page.

上面写着:.sty 和 .obj

周青南的《Pymesh》

如果您想安装http://pymesh.readthedocs.io/en/latest/,您必须遵循安装指南here。

它更复杂,我从来没有设法让它工作,但它也应该是 .ply。

【讨论】:

我成功编译pymesh.readthedocs.io/en/latest 没有问题。在 Ubuntu 16.04 中,我只需要手动更新我的 cmake 即可满足依赖关系。【参考方案3】:

附带说明,meshio(我的一个项目)现在也支持 PLY。安装

pip3 install meshio

并在命令行上使用

meshio-convert in.ply out.vtk

或来自 Python 之类的

import meshio

mesh = meshio.read("in.ply")
# mesh.points, mesh.cells, ...

【讨论】:

【参考方案4】:

由于您正在寻找load_mesh() 方法,我认为您正在寻找this library。 这是相关的doc。

如果为真,则必须安装 pymesh2

pip install pymesh2

否则,您必须按照已经建议的那样遵循 that page 中包含的说明,但它们更复杂

【讨论】:

【参考方案5】:

要么你没有导入pymesh库

import pymesh

您在执行此文件的目录中有一个名为 pymesh.py 的文件。

如果是这种情况,请将文件重命名为其他名称。

【讨论】:

感谢您的回答。我导入 pymesh 并且没有名为 pymesh.py 的文件。导入没问题,但错误是关于“load_mesh”功能。我不知道我是否使用了正确的库,因为我找到了这个pymesh.readthedocs.io/en/latest 和这个pypi.python.org/pypi/pymesh。是一样的吗?每个人的教程都不一样。 我需要打开 ply 文件,但在 pymesh 页面 (github.com/taxpon/pymesh) 中说只打开 STL 和 OBJ。我很困惑。 Alex 的回答更可能是这种情况,pip install pymesh 获得的包与 OP 希望使用的包不同(基于他提供的文档)。

以上是关于使用 Pymesh 加载和读取 ply 文件的主要内容,如果未能解决你的问题,请参考以下文章

二进制格式 PLY 模型文件的读取与渲染

Assimp不从层片文件中读取纹理坐标信息

C ++读取文件时未处理的异常

带有纹理坐标的 PLY 文件规范

在 windows 和 linux 下使用 ifstream 打开二进制 .ply 文件时的不同结果

托盘孔位项目分析