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

2024-05-16 07:05:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我试图计算“v”和“f”的数量,但与MeshLab结果相比,这并不总能给出准确的结果。vn和vt呢?对不起,我对obj文件结构和这些字母的真正含义不是很了解。在

在Python中有没有办法做到这一点?如果有一个库可以做到这一点并输出所用纹理的分辨率,那就太酷了?在

谢谢你的建议


Tags: 文件工具对象方法模型obj图形编程
2条回答

有一个很酷的库叫做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)

此代码显示的数字与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 ')])

相关问题 更多 >