Python准确计算Wavefront.obj文件中顶点和面的总数?

Calculate accurately the total number of vertices and faces in Wavefront .obj file in Python?

将 3D 对象作为 .obj 文件(Wavefront .obj 文件)拖到 MeshLab 或任何其他 3D 图形中会告诉您模型具有的确切面总数和顶点总数。顶点可以是三角形或多边形。

有什么方法可以通过读取 Obj 文件并输出这些数字来以编程方式准确计算这 2 个数字吗?。现在 MeshLab 等工具会在生成的 obj 文件中输出注释部分,说明有多少面、顶点等...其他工具不会那样做。

试图计算 'v' 和 'f' 的数量,但与 MeshLab 结果相比,这并不总能给出准确的结果。 vn 和 vt 呢?抱歉,我不太了解 obj 文件结构以及这些字母的真正含义。

在 Python 中有什么方法可以做到这一点?如果有一个库可以做到这一点并输出所用纹理的分辨率,那会很酷吗?

感谢任何建议

此代码显示与 Autodesk Maya 相同的数字

with open('test.obj') as f:
    lines = f.readlines()

vertices = len([line for line in lines if line.startswith('v ')])
faces = len([line for line in lines if line.startswith('f ')])

有一个很棒的库叫做 trimesh:

https://github.com/mikedh/trimesh

import trimesh
# load mesh
mesh = trimesh.load_mesh('path_to_mesh.obj')
print(mesh.vertices.shape)
print(mesh.faces.shape)