函数 triangle_normals
可以计算三角形网格表面上每个三角形的法向量。
open3d.geometry.TriangleMesh.triangle_normals(radius: float = 0.0, fast_normal_computation: bool = False) -> numpy.ndarray
radius: float
:控制法向量的平滑程度。RADIUS越大,法向量之间的平滑度就越高。fast_normal_computation: bool
:是否使用快速法向量计算方法。该方法计算速度更快,但结果可能不够平滑。默认值为 False
。返回值为一个 numpy 数组,其形状为 (n, 3)
,其中 n
为三角形数量。数组中的每一行即为一个三角形的法向量。
import open3d as o3d
import numpy as np
# 创建三角形网格
vertices = np.array([[0, 0, 0], [1, 0, 0], [0, 1, 0], [0, 0, 1]])
triangles = np.array([[0, 1, 2], [1, 2, 3], [0, 2, 3], [0, 1, 3]])
mesh = o3d.geometry.TriangleMesh()
mesh.vertices = o3d.utility.Vector3dVector(vertices)
mesh.triangles = o3d.utility.Vector3iVector(triangles)
# 计算法向量
normals = mesh.triangle_normals(radius=0.2)
# 可视化结果
mesh.compute_vertex_normals()
mesh.paint_uniform_color([0.5, 0.5, 0.5])
o3d.visualization.draw_geometries([mesh])