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函数详解及使用方法可查询官网

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐