decimate_pro#
- PolyDataFilters.decimate_pro(reduction, feature_angle=45.0, split_angle=75.0, splitting=True, pre_split_mesh=False, preserve_topology=False, boundary_vertex_deletion=True, max_degree=None, inplace=False, progress_bar=False)[source]#
Reduce the number of triangles in a triangular mesh.
It forms a good approximation to the original geometry. Based on the algorithm originally described in “Decimation of Triangle Meshes”, Proc Siggraph 92 (https://doi.org/10.1145/133994.134010).
- Parameters:
- reduction
float
Reduction factor. A value of 0.9 will leave 10% of the original number of vertices.
- feature_angle
float
,optional
Angle used to define what an edge is (i.e., if the surface normal between two adjacent triangles is >=
feature_angle
, an edge exists).- split_angle
float
,optional
Angle used to control the splitting of the mesh. A split line exists when the surface normals between two edge connected triangles are >=
split_angle
.- splittingbool,
optional
Controls the splitting of the mesh at corners, along edges, at non-manifold points, or anywhere else a split is required. Turning splitting off will better preserve the original topology of the mesh, but may not necessarily give the exact requested decimation.
- pre_split_meshbool,
optional
Separates the mesh into semi-planar patches, which are disconnected from each other. This can give superior results in some cases. If
pre_split_mesh
is set toTrue
, the mesh is split with the specifiedsplit_angle
. Otherwise mesh splitting is deferred as long as possible.- preserve_topologybool,
optional
Controls topology preservation. If on, mesh splitting and hole elimination will not occur. This may limit the maximum reduction that may be achieved.
- boundary_vertex_deletionbool,
optional
Allow deletion of vertices on the boundary of the mesh. Defaults to
True
. Turning this off may limit the maximum reduction that may be achieved.- max_degree
float
,optional
The maximum vertex degree. If the number of triangles connected to a vertex exceeds
max_degree
, then the vertex will be split. The complexity of the triangulation algorithm is proportional tomax_degree**2
. Settingmax_degree
small can improve the performance of the algorithm.- inplacebool,
optional
Whether to update the mesh in-place.
- progress_barbool,
optional
Display a progress bar to indicate progress.
- reduction
- Returns:
pyvista.PolyData
Decimated mesh.
Examples
Decimate a sphere. First plot the sphere.
>>> import pyvista >>> sphere = pyvista.Sphere(phi_resolution=60, theta_resolution=60) >>> sphere.plot(show_edges=True, line_width=2)
Now decimate it and plot it.
>>> decimated = sphere.decimate_pro(0.75) >>> decimated.plot(show_edges=True, line_width=2)
See Decimation for more examples using this filter.