问题标签 [ply-file-format]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
698 浏览

python - 使用 python 写入 .ply 文件

我在 Python 中使用 PlyFile 库(https://pypi.org/project/plyfile)。我曾经vertex = plydata['vertex']生成一个顶点坐标列表。数据类型如下 - PlyElement('vertex', (PlyProperty('x', 'float'), PlyProperty('y', 'float'), PlyProperty('z', 'float')), count=2500086, comments=[])

之后,我生成了所有 x 轴值的列表,并将它们放入一个 numpy 数组并对其执行一些操作。plydata['vertex']然后我用这些新的值替换了原来的 x 轴值。

现在我想将这些值写入 .ply 文件并创建一个新网格。我该怎么办?我尝试浏览文档,但代码非常混乱。

任何见解都会有所帮助,谢谢!

0 投票
2 回答
346 浏览

python - 使用 plyfile 的 Plydata.read 读取 ASCII ply 文件时出现 AttributeError

我正在尝试编写一个简短的脚本来将包含点坐标的文本文件转换为二进制层文件。想法是在开头添加一个标题,将文件类型更改为 ASCII ply,然后使用 plyfile 读取它并写入二进制 ply。我会使用 CloudCompare 或 Meshlab 手动执行此操作,但我有几千个文件要转换。

我找到了一个可以使用 CloudCompare 打开的 ASCII 层文件,但是当我尝试使用 PlyData.read 时出现 AttributeError。当我尝试在直接从 CloudCompare 保存的文件上运行它时,我得到了同样的错误。

这是我将代码简化为用于调试的内容:

这是我运行它时遇到的错误

0 投票
0 回答
418 浏览

python - 将点云(层)展平为 RGB 图像

我正在尝试将层转换为 RGB 图像。我可以从文件中提取pcd.colorspcd.points,但是如何将它平展为 RGB 图像。

我的问题是上面的函数给了我一个(1250459,3)数组,我必须将它转换为(X,Y,3)数组,但是XY 是什么?(图片尺寸)

我在 python 中使用 Open3D 库来读取层数据并可以访问颜色或点。

0 投票
1 回答
741 浏览

ios - ios 14 中的 .ply(多边形)格式文件问题

我的应用程序在扫描对象后生成层文件。ios 14 更新后,我的 3d 模型的颜色无法正确加载。我也无法在 xcode 中查看 ply 文件(在预览中工作正常)。

有人知道这个问题的解决方法吗?

我厌倦了阅读 ply 文件内容并在场景几何体中显示顶点和面,但加载文件需要很长时间。

显然创建 mdlAsset() 会引发一些金属警告,并且网格颜色无法正确显示。

以下是 sceneKit 中 ios 13 和 14 预览的示例图像。

Scenekit 中 ios 13 和 ios 14 ply 文件预览的比较

0 投票
1 回答
114 浏览

python - 为双参数函数(点数据云)构建网格并使用 Python 将其保存为 .ply 文件

我正在尝试为两个参数函数(点数据云)构建网格,并使用 Python 将其保存为 .ply 文件。

输入:3D 空间(x,y,z)中的数百万个数据点, 其中z可以视为数学函数z=f(x,y)的值

  1. 如何构建表示该点云的 3D 绘图表面的网格?
  2. 并将其导出为 3D 模型?

所需输出:包含网格的.PLY文件。

对于第 2 步,我有以下功能:

但是那个只保存顶点,没有表面。

以下代码将三角形保存到 .ply 但我不确定tris如何首先构建三角形:

对于第 1 步:

以下文章生成网格,但 (a) 它是一个通用的点数据云,而 z=f(x,y) 在这里就足够了,(b) 它假设输入中有一个法线数组:https:/ /towardsdatascience.com/5-step-guide-to-generate-3d-meshes-from-point-clouds-with-python-36bad397d8ba仍然需要构建。

总而言之:

有没有一种简单的方法可以使用 Python 为大量点云数据构建网格,其中 z 坐标是 (x,y) 的函数,并将此网格导出到 .ply 文件?

0 投票
1 回答
1600 浏览

point-clouds - PLY 文件格式 - 带有颜色 RGB 信息的点云的正确标题是什么?

我正在尝试导出点云,但遇到了第 3 方工具不接受我的文件的问题。

我找不到嵌入颜色数据的有效 PLY 点云文件的具体示例(我只看到带有颜色数据的二进制文件)。我从不同的来源拼凑而成,但是当我导出带有此标题的文件时,我无法在 Mac 上显示它,或在基于 Web 的查看器中查看它

  • 一个ascii PLY文件可以有100万或更多点吗?
  • 一个有效的 PLY 文件可以有 0 个面吗?
  • 是否需要定义property list uchar int vertex_indices
  • float 是一个正确的定义,还是需要像 float32 一样指定?
  • 我需要在每行末尾换行\n还是两者都需要?\r\n

我的标题:

基于 Web 的查看器确实会加载这些文件(但我在这些文档中看不到这些类型定义: http: //paulbourke.net/dataformats/ply/

0 投票
0 回答
167 浏览

python - 如何将 plydata 对象转换为 trimesh 对象而不保存为 .ply?

我有一个 plydata 对象plydata_resize,它是原始 .ply 文件的调整大小版本。

我想转换plydata_resizemyTrimesh,这是一个修剪对象。目前,我已保存plydata_resize为临时 .plt 文件tri_resized.ply,然后将该文件作为 trimesh 加载。但是我不想使用保存/加载方法,因为会涉及硬盘并且速度会很慢(我有数千个 .ply 文件要以这种方式转换,所以我需要一个快速的方法)。

如何跳过将其保存为 .ply 的步骤?

0 投票
1 回答
265 浏览

javascript - 彩色点云 (.ply) 不显示在 three.js 中

我正在尝试使用层加载器在 three.js 中加载彩色点云。我遵循这个例子,但它与我的用例不同。我使用的是点云而不是网格。

所以,这就是我要加载的内容。

你可以从这里看到它的样子。

以及我上传 ply 文件的代码部分:

结果什么都没有。我无法显示任何内容。怎么能用他们的颜色来点呢?

要重现,您可以创建本地服务器并使用此 html

0 投票
1 回答
199 浏览

python - 如何确定 trimesh.exchange.ply.export_ply 的输出路径目录?

我正在处理 ply 文件的数据集。最终,我需要将层文件导出到单独的目录中。

现在,如果我使用函数 trimesh.exchange.ply.export_ply,我似乎无法理解如何设置导出网格的目录。我已阅读文档,但没有提及如何设置输出路径

或者,我正在使用 mesh.export(path) ,它确实成功导出文件,但是对于某些文件, 在 meshlab 或任何其他编辑器中打开时会出错

关于如何导出为 ply 文件的任何建议?

0 投票
1 回答
161 浏览

python - 如何从 ply 文件中获取 python 中给定点 ( x, y ) 的 z 轴坐标?

我希望这会让你身体健康。我对使用 3d 对象真的很陌生。我最近一直在使用对象检测算法(YOLO)。由于 Yolo 返回一个对象的边界框坐标,我们可以很容易地得到边界框的 (x,y) 坐标。然而最近,我在项目中添加了一个 TOF 相机,可以感知每个像素的深度(z 轴坐标)。所有这些数据都存储在相应的“.ply”中。我想获取 yolo 输出的每个边界框坐标的 z 轴值。

现在我的 .ply 文件显示了这个输出:

我正在使用 python 的 plyfile 库从我的 .ply 文件中读取数据

这是我走了多远:

此脚本读取给定的 .ply 文件并从 ply 文件中输出以下顶点 (x,y,z) 值:

现在我想找到 YOLO 输出的边界框中存在的相应像素的 z 轴。