vertex_normals
方法计算三角网格模型中每个顶点的法线。
def vertex_normals(self, search_param: 'KDTreeSearchParam',
normalized: bool = True) -> 'np.ndarray':
"""
Compute per-vertex normal vectors of the triangle mesh.
Parameters
----------
search_param : open3d.geometry.KDTreeSearchParam
KDTree parameters used for neighborhood searches.
normalized : bool, optional
If true, the returned vectors will be normalized.
Returns
-------
list of [x, y, z]
The normal vectors of each vertex of the mesh.
"""
search_param
:KDTreeNearestNeighbors搜索的参数。详情请参见open3d.geometry.KDTreeSearchParam。normalized
:可选参数。布尔值。若为True,则返回法向量会被标准化,否则不会。返回每个顶点的法向量列表,列表中包含[x,y,z]格式的三元数值。
无。
import open3d as o3d
mesh = o3d.io.read_triangle_mesh("bunny.obj")
mesh.compute_vertex_normals()
normal = mesh.vertex_normals
o3d.visualization.draw_geometries([mesh],
point_show_normal=True)
上述示例中,我们使用Open3D读取obj文件中的bunny三角网格模型,并调用compute_vertex_normals()
方法计算顶点法线,然后展示整个模型,其中顶点法线的显示由point_show_normal
控制。
计算方法实现时,使用KDTree搜索每个顶点的最近邻,根据邻居法则计算得到每个顶点的法向量。