问题标签 [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 回答
4261 浏览

c++ - 如何在 OpenGL 中显示/绘制 .ply 对象?

我试图让 OpenGL 绘制我正在加载的图形OPENFILENAME。我现在得到的是:我可以显示评论、顶点、多少张脸等,但我无法绘制图形,我不知道该怎么做。我可以画出其他预定的数字,但不能画出我想要打开的数字。


这是我初始化所有内容的地方:

这是我找出我要打开的元素的地方:

这就是 Figure 类所在的地方,我应该在其中绘制所有内容:

我尽力解释自己;如果您认为它仍然需要更多解释,请告诉我,我会尝试以不同的方式解释它

是的,我忘了解释我猜我想画的图......好吧,我不知道它会是哪个图,因为我正在使用 OPENFILENAME 打开 1 个随机图并绘制它我使用三角形,因为我认为用三角形我可以画任何东西,我也在类Parameters中尝试过询问我正在处理的顶点数并在Draw类中创建一个“for”,但它没有用

0 投票
3 回答
2696 浏览

graphics - 解析 .ply 文件而不发生内存泄漏

我在斯坦福 3D 扫描存储库中下载了 .ply 文件,并使用该页面中的斯坦福代码(ply.h、plyfile.c)来解析它们。但是,查看这段代码,我发现其中充斥着从未释放的 malloc。我可以闭上眼睛看另一边,但它让我的牙齿发痒。

我可以想到两种解决方法:

一种是使用 Hans Boehm 的垃圾收集器或类似的东西,它重新定义了“malloc”,以便它在垃圾收集器中这样做。我从来没有使用过这个库,但也许有一种方法可以让它只在斯坦福代码中的 malloc 上运行,而不是在其他任何地方。

另一种解决方法是使用不同的解析器,最好是具有良好 RAII 化内存管理的 C++ 解析器。我在上面的链接中看到了一些替代的解析器和转换器,但我不想花一两天时间尝试所有这些,而是​​希望在这里得到推荐。

任何人都可以推荐一种在没有内存泄漏的情况下解析 .ply 文件的方法,或者通过在斯坦福解析器中包含内存泄漏,或者使用不同的解析器,或者通过我没有想到的第三种方法?

0 投票
2 回答
1637 浏览

java - 是否有用于写出 ply 文件的 Java 库?

我正在寻找一个 Java 库来写出 ply 文件。如果没有,我想考虑写一个。

0 投票
1 回答
1925 浏览

c++ - 读取二进制 PLY 文件会产生奇怪的结果

我的任务是从二进制 little endian .ply 文件中读取顶点数据。问题是我找不到从 end_header 行之后正确提取数据的方法。

层文件:

即使是第一次浮动,我也无法正确识别。如果我使用浮点的 IEE754 表示转换前 4 个字节,结果是 -3.5047936775001176e-12,但是前四个字节(= 第一个顶点的第一个 x 坐标)应该是 -5.01449(根据从二进制到 ascii ply 文件的 meshlab 转换)。

我正在使用 c++ fread, fseek, ...

我尝试每 4 个字节进行一次字节序交换,但结果也很糟糕。

我认为我以错误的方式提取字节。

0 投票
1 回答
1194 浏览

transform - Meshlab 或其他中的 3D 相似度变换

我在 Meshlab 中有两个 .ply 数据集。A是场景的点云。B 是一个点云,它包含来自 A 的 30% 的场景,但是由于未知因素而旋转、平移和缩放(7 度自由度)。

我想用手大致对齐 A 和 B,只是为了了解它们在重叠部分的匹配程度。有没有人有这方面的专业知识?我真的很想使用Meshlab,但似乎没有办法根据单独的坐标框架缩放/平移/旋转单独的层......似乎确实有一种通过手动选择两层之间的对应关系来平移/旋转的方法,但这并不能解决缩放问题(据我所知......)

理想情况下,我希望手动缩放和对齐 B 尽可能接近 A,保存转换后的 B 的 .ply 文件,然后我可以在新数据集上运行某种迭代最近点。

0 投票
1 回答
9658 浏览

point-clouds - 以层格式向顶点添加颜色

我有一个 3D 点云,每个点云都有不同的颜色/值属性附加到 XYZ 点的每个顶点。

原始数据是简单的 .txt / csv 格式的列,即 x、y、z、V1、V2、V3 以及我尝试使用 .ply 制作图像的下一点的新行。我想创建一个 3D 图像,例如:

这个.

根据这些值中的每一个为每个表面或顶点着色的层格式的适当代码是什么?我想创建多个具有相同形状但将不同颜色映射到表面的贴图。

0 投票
0 回答
2343 浏览

javascript - 使用three.js + plyloader

我正在尝试使用 three.js 的 plyloader 加载 ply 文件。只有当它同时具有顶点(xyz)和面(格式:3 index0 index1 index2)时,我才成功加载了层。有没有办法在没有面孔的情况下使用它?关于使用仅给定 xyz 点的three.js 快速创建面部的任何想法?我的原始文件包含 xyz 坐标。我使用 CloudCompare 生成网格并将其保存为具有 xyz 点和面的 ply 文件。谢谢。

此代码来自plyloader

0 投票
0 回答
1960 浏览

image-segmentation - 导入二进制 PLY 文件并使用点云库进行分割

我使用我在 Meshlab 中查看过的 Motion 视觉结构生成了二进制点云 (PLY)。点云是只有没有面的点。我想将这些文件加载​​到 PCL 中并进行分段,但在正确读取文件时遇到问题。代码(使用 loadPLYFile)运行,但无法生成索引。

此代码在运行时会出现以下错误:

[pcl::RegionGrowingRGB::prepareForSegmentation] 空给定索引![pcl::KdTreeFLANN::setInputCloud] 无法使用空输入云创建 KDTree!

0 投票
1 回答
716 浏览

matlab - Matlab PLY 表面网格上的测地线

我有一个心脏的 CT 扫描,我正在设计一个放在它上面的设备。因此,为某些属性获得正确的长度很重要。CT 扫描在 MeshLab 中进行分段,我的顾问给了我使用 PLY_IO 读取从 MeshLab 导出的层文件的代码。由此,我得到了表面地图。surf(Map.X, Map.Y,Map.Z) 输出 3D 模型。现在,我最理想的是能够通过图形窗口以图形方式选择点,并让 Matlab 告诉我这些点是什么,或者让我画一条测地线来确定它的长度。问题:有没有人知道我如何以简单的方式做到这一点?

最终,如果我能把它放在正确的方向上,那么只画图也可以。不过,理想情况下,我会选择起点和终点,然后 Matlab 会在表面上以图形方式显示测地线,我稍后可以找到它的长度。我愿意为此做一些编程,但希望你们可能已经知道了一些东西。

0 投票
1 回答
641 浏览

mesh - 生成损坏的大层文件 - 如何找到错误

我刚刚编写了一个 java 类来从存储到 ply 文件的圆柱列表中生成网格。我使用手动生成的 3 个气缸列表测试了这些文件。我可以在 Meshlab 和 Cloudcompare 中打开生成的文件。当我在我的真实程序中使用这个类时,我必须为超过 13000 个圆柱体编写一个网格。Cloudcompare 给我以下错误:读取错误(没有访问权限?)

Meshlab 这一篇: 错误详情,出乎意料的eof

我已经检查了我的层文件是否包含标题中定义的确切数量的顶点和面。我还保证,没有包含 nan(在 winedit 中检查 'n'、'a' 等)值。

通过删除最后一行,我可以从 3 个手工制作的圆柱体文件中重现我的测试文件中的错误。但如前所述,我已经检查了行号是否正确(可能是我眼睛没有看到的空行,因为向下滚动半百万行是不可能的)。

那么是否有任何程序可用于解析 ply 文件中的错误?开源工具将在这里受到赞赏。还是文件太大了?确切地说是436302行。我使用 ply 的 ascii 版本。