pyvista.PolyDataFilters.smooth_taubin#
- PolyDataFilters.smooth_taubin(n_iter=20, pass_band=0.1, edge_angle=15.0, feature_angle=45.0, boundary_smoothing=True, feature_smoothing=False, non_manifold_smoothing=False, normalize_coordinates=False, inplace=False, progress_bar=False)[ソース]#
PolyData DataSet をTaubinスムージングでスムージングします.
このフィルタは
smooth()
にあるLaplacianスムージングの実装のようにメッシュを滑らかにすることができます.しかし,ラプラシアンスムージングとは異なり,このフィルタはスムージングの別のアプローチに依存しているため,表面は "shrink" されません.このフィルタは,望ましくない高周波の特徴を除去するローパスフィルタに似ています.このPyVistaフィルタは,VTKの vtkWindowedSincPolyDataFilter フィルタを使用しています.
- パラメータ:
- n_iter
int
, default: 20 窓付き同期関数を近似するために使用する多項式の次数を指定します.これは一般的に
smooth()
が必要とする数よりもはるかに小さいものです.- pass_band
float
, default: 0.1 窓付きsincフィルタの通過帯域の値.0 から 2 の間の値で,値が小さいほど平滑化されます.
- edge_angle
float
, default: 15.0 エッジに沿ったスムージングを制御するエッジ角度(内部または境界のいずれか).
- feature_angle
float
, default: 45.0 シャープエッジを識別するためのフィーチャ角度です.
- boundary_smoothingbool, default:
True
境界エッジのスムージングを制御するためのフラグです.
True
の場合,境界のエッジは固定されたままです.- feature_smoothingbool, default:
False
特徴点のエッジのスムージングを制御するためのフラグ.
True
の場合,境界線はfeature_angle
とedge_angle
で定義されているように固定されます.- non_manifold_smoothingbool, default:
False
滑らかな非マニホールド点.
- normalize_coordinatesbool, default:
False
フラグを使用して座標の正規化を制御します.解の数値的安定性を向上させ,並進効果のスケーリングを最小化するために,このアルゴリズムは,位置座標を単位立方体
[-1, 1]
以内に変換・スケーリングし,平滑化を行い,位置座標を元の座標系に変換・スケーリングして戻すことが可能です.- inplacebool, default:
False
in-placeメッシュを更新します.
- progress_barbool, default:
False
進行状況を示す進行状況バーを表示します.
- n_iter
- 戻り値:
pyvista.PolyData
滑らかなメッシュ.
備考
パフォーマンスを最大化するために,
feature_smoothing
やboundary_smoothing
は有効化しないでください.特にfeature_smoothing
は高コストです.参考文献
タウビンスムージングの実装については, Optimal Surface Smoothing as Filter Design を参照してください.
例
例の骨メッシュを滑らかにします.ここでは,元のメッシュが粗いので,メッシュを細分化して面数を増やす必要があります.
>>> import pyvista as pv >>> from pyvista import examples >>> mesh = examples.download_foot_bones().subdivide(2) >>> smoothed_mesh = mesh.smooth_taubin() >>> pl = pv.Plotter(shape=(1, 2)) >>> _ = pl.add_mesh(mesh) >>> _ = pl.add_text('Original Mesh') >>> pl.subplot(0, 1) >>> _ = pl.add_mesh(smoothed_mesh) >>> _ = pl.add_text('Smoothed Mesh') >>> pl.show()
このフィルターを使用したその他の例については, サーフェイススムージング を参照してください.