将3D对象拖动为.obj文件(Wavefront .obj文件)到MeshLab或任何其他3D图形,可以告诉您模型具有的精确总面数和顶点总数。顶点可以是三角形或多边形。
有没有办法以编程方式准确计算这两个数字?通过读取Obj文件并输出这些数字。现在像MeshLab这样的工具在生成的obj文件中输出一个注释部分,说明有多少个面,顶点等...其他工具不这样做。
我试图计算'v'和'f'的数量,但与MeshLab结果相比,这并不总能给出准确的结果。那vn和vt怎么样?对不起,我对obj文件结构知之甚少,这些字母真正意味着什么。
在Python中以任何方式做到这一点?如果有一个库可以做到并输出纹理的分辨率会很酷吗?
感谢您的任何建议
答案 0 :(得分:2)
此代码显示与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 ')])
答案 1 :(得分:0)
有一个很酷的库叫做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)