从面中心开始在修剪网格中绘制面法线

问题描述 投票:0回答:1

对于

trimesh
中的这个示例环面网格,我已成功绘制了面的法线:

import numpy as np
import trimesh
mesh = trimesh.creation.torus(9, 3)
# adapted from https://github.com/mikedh/trimesh/issues/549
vec = np.column_stack((mesh.facets_origin, mesh.facets_origin + (mesh.facets_normal * mesh.scale * .05)))
path = trimesh.load_path(vec.reshape((-1, 2, 3)))
trimesh.Scene([mesh, path]).show(smooth=False)

下图是结果图:

但正如您所看到的,面的原点只是顶点之一。如何使用面的中心作为法线的原点?我明白了

mesh.triangles_center
,但似乎并没有为方面定义如此奢华。

python numpy mesh trimesh
1个回答
0
投票

必须自己计算质心,trimesh 不能为我们做到这一点。

# calculate the center points
facets_boundaries_xyz = [np.array(mesh.vertices.view(np.ndarray)[f_b]) for f_b in mesh.facets_boundary]
mesh_facets_center = np.array([bound.mean(axis=(0, 1)) for bound in facets_boundaries_xyz])

# plot
vec = np.column_stack((mesh_facets_center, mesh_facets_center + (mesh.facets_normal * mesh.scale * .02)))
path = trimesh.load_path(vec.reshape((-1, 2, 3)))
trimesh.Scene([mesh, path]).show(smooth=False)

© www.soinside.com 2019 - 2024. All rights reserved.