gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:37:45 50 4
gpt4 key购买 nike

出于某种目的,我需要读取带有嵌入纹理的 PLY 文件(斯坦福三角格式)。我看到了 PLY 文件的几个规范,但找不到指定纹理映射语法的单个来源。似乎有很多库可以读取 PLY 文件,但大多数库似乎不支持纹理(它们只是崩溃;我尝试了其中的 2-3 个)。以下是带有纹理的 ply 文件的 header :

ply
format binary_little_endian 1.0
comment TextureFile Parameterization.png
element vertex 50383
property float x
property float y
property float z
property float nx
property float ny
property float nz
element face 99994
property list uint8 int32 vertex_index
property list uint8 float texcoord
end_header

我不明白的是行property list uint8 float texcoord。另外一张脸对应的列表是

3 1247 1257 1279 6 0.09163 0.565323 0.109197 0.565733 0.10888 0.602539 6 9 0.992157 0.992157 0.992157 0.992157 0.992157 0.992157 0.992157 0.992157 0.992157`. 

这个列表是什么;格式是什么?虽然我知道 PLY 让您有机会定义自己的元素属性,但处理纹理似乎几乎是一个标准,并且相当多的应用程序(如流行的 Meshlab)似乎使用上述语法打开纹理 PLY 文件.

我想知道读取纹理 PLY 文件所遵循的标准语法是什么,以及如果可能的话,从哪里找到此信息的来源。

最佳答案

在 PLY 文件中,面通常包含值列表,并且这些列表的大小可能有所不同。如果它是三角形面,则期望三个值,四边形 = 4 等等,直到任何任意 n 边形。列表在如下行中声明:

property list uint8 int32 vertex_index

这是一个名为“vertex_index”的列表。它始终包含一个大小为 N 的 8 位无符号整数(即 uint8),后跟 N 个 32 位整数(即 int32)。

在示例行中,它立即显示:

3 1247 1257 1279

这表示,这里有 3 个值,然后它会为您提供这三个值。

现在第二个列表是纹理坐标应该在的位置:

property list uint8 float texcoord

这就像第一个列表一样,大小排在第一位(作为无符号字节),但这次后面会跟一系列 32 位 float 而不是整数(对于纹理坐标来说是有意义的)。简单的解释是,vertex_index 中列出的每个顶点都有一个纹理坐标。如果我们假设这些只是 2d 纹理坐标(一个相当安全的假设),我们应该会看到数字 6 后面跟着 6 个浮点值......我们这样做:

6 0.09163 0.565323 0.109197 0.565733 0.10888 0.602539

这些是与已列出的三个顶点相对应的纹理坐标。

现在,对于一张脸来说,应该就是这样了。我不知道线路其余部分的内容是什么。根据你的 header ,文件的其余部分应该是二进制的,所以我不知道你是如何将它作为一行 ascii 文本获取的,但该行上的额外数据不应该存在(也根据完全定义了一个脸)。

关于graphics - 带有纹理坐标的 PLY 文件规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28458673/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com