python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python Trimesh库的使用

Python之Trimesh库的使用方式

作者:BTWBB

这篇文章主要介绍了Python之Trimesh库的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Python Trimesh库的使用

Trimesh是一个纯Python(2.7-3.5+)库,用于加载和使用三角形网格。

该库的目标是提供一个功能齐全、经过良好测试的Trimesh对象,允许简单的操作和分析,风格与Shapely库中的Polygon对象相同。

下面是一些相关的使用方法!

模型加载

mesh = trimesh.load(obj_path)

vertices和faces输出

v = mesh.vertices 
f = mesh.faces
#这样得到的v,f格式是trimesh 内置的格式,不能直接用于其它计算,需要转换为numpy
v1 = np.array(v)
f1 = np.array(f)

vertices和faces转化为模型并显示

obj = trimesh.Trimesh(vertices = v1, faces = f1)
obj.show()
#然后点击a展示坐标轴,w只展示模型线条

采样表面点并计算最近点

"""
tgt_mesh:采样的mesh
sampled_points_num:采样点数目
gt_surface_pts:采样点坐标
face_index:采样点对应的face索引
"""
gt_surface_pts, face_index = trimesh.sample.sample_surface_even(tgt_mesh, sampled_points_num)
"""
src_mesh:目标的mesh
gt_surface_pts:要计算最近点的点
pred_surface_pts:得到的在三角面片上的最近点
dist_pred_gt:点到最近三角面片的距离
triangle_id:最近三角面片的索引
"""
pred_surface_pts, dist_pred_gt, triangle_id = trimesh.proximity.closest_point(
            src_mesh, gt_surface_pts)

用齐次变换矩阵变换网格

# matrix((4,4)float) -齐次变换矩阵
mesh = trimesh.load(obj_path)
mesh = mesh.apply_transform(matrix)

其他的Trimesh函数详解及使用方法可查询官网

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文