分别使用Open3D和Trimesh加载相同的.obj文件,导致顶点数不同



读取网格文件xxxxx.obj我使用Open3D和Trimesh模块分别通过这些代码:

import open3d as o3d
import trimesh
mesh = o3d.io.read_triangle_mesh(meshfile)
print(mesh)
mesh_ = trimesh.load_mesh(meshfile)
print(mesh_)

输出
TriangleMesh with 224946 points and 74996 triangles.
<trimesh.Trimesh(vertices.shape=(37486, 3), faces.shape=(74996, 3))>

open3d得到224946分,而Trimesh得到37486分,是什么原因导致这个问题?

我打印出它们的顶点和三角形

____mesh_vert____:
[[-0.77349651 -0.17361518 -0.5339487 ]
[-0.77405303 -0.17450994 -0.52660068]
[-0.77472924 -0.17558702 -0.51311542]
...
[ 0.85712222  0.03432839  0.45968683]
[ 0.8533449   0.04001502  0.4399732 ]
[ 0.85333683  0.04001284  0.44043044]]
____mesh_vertices____:
[[-0.77714473 -0.16696896 -0.52666056]
[-0.77481598 -0.16823091 -0.53799069]
[-0.77349651 -0.17361517 -0.53394872]
...
[ 0.85654795  0.03840274  0.44923028]
[ 0.85598844  0.03371801  0.43383372]
[ 0.85334492  0.04001502  0.43997321]]
____mesh_triangles____:
[[     0      1      2]
[     3      4      5]
[     6      7      8]
...
[224937 224938 224939]
[224940 224941 224942]
[224943 224944 224945]]
____mesh_faces____:
[[    8     7     0]
[    0     1     8]
[    9     8     1]
...
[37465 37466 37485]
[37484 37485 37482]
[37482 37481 37484]]

是什么导致了差异?

我正在调查一个类似的问题。我用trimesh打开时得到的vert count比用Houdini打开时要大。trimesh对紫外线的行为似乎很奇怪。

我找到了以"v "开头的行数等于Houdini加载的顶点数。

我找到了以"vt "开头的行数在obj文件中等于trimesh加载的顶点数。

似乎trimesh创建了额外的顶点来存储这些额外的"vt "行,我理解存储UV数据。

这是相当糟糕的,因为简单地打开obj文件并将其保存回来,没有任何修改,使用trimesh将改变dcc中网格的顶点计数。额外的顶点是为"vt "行变成了额外的"v "在我的测试中

相关内容

  • 没有找到相关文章

最新更新